diff --git a/build-cs/.gitignore b/build-cs/.gitignore new file mode 100644 index 00000000000..61ead86667c --- /dev/null +++ b/build-cs/.gitignore @@ -0,0 +1 @@ +/vendor diff --git a/build-cs/composer.json b/build-cs/composer.json new file mode 100644 index 00000000000..16a240bc97c --- /dev/null +++ b/build-cs/composer.json @@ -0,0 +1,13 @@ +{ + "require-dev": { + "consistence-community/coding-standard": "^3.11.0", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0.0", + "slevomat/coding-standard": "^8.8.0", + "squizlabs/php_codesniffer": "^3.5.3" + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + } +} diff --git a/build-cs/composer.lock b/build-cs/composer.lock new file mode 100644 index 00000000000..e0bfbd4cae0 --- /dev/null +++ b/build-cs/composer.lock @@ -0,0 +1,333 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "e69c1916405a7e3c8001c1b609a0ee61", + "packages": [], + "packages-dev": [ + { + "name": "consistence-community/coding-standard", + "version": "3.11.3", + "source": { + "type": "git", + "url": "https://github.com/consistence-community/coding-standard.git", + "reference": "f38e06327d5bf80ff5ff523a2c05e623b5e8d8b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consistence-community/coding-standard/zipball/f38e06327d5bf80ff5ff523a2c05e623b5e8d8b1", + "reference": "f38e06327d5bf80ff5ff523a2c05e623b5e8d8b1", + "shasum": "" + }, + "require": { + "php": "~8.0", + "slevomat/coding-standard": "~8.0", + "squizlabs/php_codesniffer": "~3.7.0" + }, + "replace": { + "consistence/coding-standard": "3.10.*" + }, + "require-dev": { + "phing/phing": "2.17.0", + "php-parallel-lint/php-parallel-lint": "1.3.1", + "phpunit/phpunit": "9.5.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Consistence\\": [ + "Consistence" + ] + }, + "classmap": [ + "Consistence" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vašek Purchart", + "email": "me@vasekpurchart.cz", + "homepage": "http://vasekpurchart.cz" + } + ], + "description": "Consistence - Coding Standard - PHP Code Sniffer rules", + "keywords": [ + "Coding Standard", + "PHPCodeSniffer", + "codesniffer", + "coding", + "cs", + "phpcs", + "ruleset", + "sniffer", + "standard" + ], + "support": { + "issues": "https://github.com/consistence-community/coding-standard/issues", + "source": "https://github.com/consistence-community/coding-standard/tree/3.11.3" + }, + "time": "2023-03-27T14:55:41+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "time": "2023-01-05T11:28:13+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.24.2", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "bcad8d995980440892759db0c32acae7c8e79442" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", + "reference": "bcad8d995980440892759db0c32acae7c8e79442", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" + }, + "time": "2023-09-26T12:28:12+00:00" + }, + { + "name": "slevomat/coding-standard", + "version": "8.14.1", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.7.1" + }, + "require-dev": { + "phing/phing": "2.17.4", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.10.37", + "phpstan/phpstan-deprecation-rules": "1.1.4", + "phpstan/phpstan-phpunit": "1.3.14", + "phpstan/phpstan-strict-rules": "1.5.1", + "phpunit/phpunit": "8.5.21|9.6.8|10.3.5" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/8.14.1" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2023-10-08T07:28:08+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.7.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2023-02-22T23:07:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/build/baseline-7.3.neon b/build/baseline-7.3.neon new file mode 100644 index 00000000000..0e3557e7280 --- /dev/null +++ b/build/baseline-7.3.neon @@ -0,0 +1,14 @@ +parameters: + ignoreErrors: + - + message: + """ + #^Call to deprecated method assertFileNotExists\\(\\) of class PHPUnit\\\\Framework\\\\Assert\\: + https\\://github\\.com/sebastianbergmann/phpunit/issues/4077$# + """ + count: 1 + path: ../src/Testing/LevelsTestCase.php + - + message: "#^Call to function method_exists\\(\\) with 'PHPUnit\\\\\\\\Framework\\\\\\\\TestCase' and 'assertFileDoesNotEx…' will always evaluate to true\\.$#" + count: 1 + path: ../src/Testing/LevelsTestCase.php diff --git a/build/datetime-php-83.neon b/build/datetime-php-83.neon new file mode 100644 index 00000000000..953379bf4f9 --- /dev/null +++ b/build/datetime-php-83.neon @@ -0,0 +1,11 @@ +parameters: + ignoreErrors: + - + message: "#^If condition is always false\\.$#" + count: 1 + path: ../src/Type/Php/DateTimeModifyReturnTypeExtension.php + + - + message: "#^Strict comparison using \\=\\=\\= between DateTime and false will always evaluate to false\\.$#" + count: 1 + path: ../src/Type/Php/DateTimeModifyReturnTypeExtension.php diff --git a/patches/Sender.patch b/patches/Sender.patch new file mode 100644 index 00000000000..e01d1ff81cb --- /dev/null +++ b/patches/Sender.patch @@ -0,0 +1,11 @@ +--- src/Io/Sender.php 2024-03-27 18:20:46 ++++ src/Io/Sender.php 2024-10-14 10:19:28 +@@ -48,7 +48,7 @@ + * @param ConnectorInterface|null $connector + * @return self + */ +- public static function createFromLoop(LoopInterface $loop, ConnectorInterface $connector = null) ++ public static function createFromLoop(LoopInterface $loop, ?ConnectorInterface $connector = null) + { + if ($connector === null) { + $connector = new Connector(array(), $loop); diff --git a/src/Analyser/TypeSpecifier.php b/src/Analyser/TypeSpecifier.php index 095a8bb8de0..688fbfd7411 100644 --- a/src/Analyser/TypeSpecifier.php +++ b/src/Analyser/TypeSpecifier.php @@ -976,6 +976,26 @@ public function specifyTypesInCondition( } } + // narrow $str after $len = strlen($str) or $len = mb_strlen($str) + if ( + $expr->var instanceof Expr\Variable + && is_string($expr->var->name) + && $expr->expr instanceof FuncCall + && $expr->expr->name instanceof Name + && !$expr->expr->isFirstClassCallable() + && in_array($expr->expr->name->toLowerString(), ['strlen', 'mb_strlen'], true) + && count($expr->expr->getArgs()) >= 1 + ) { + $strArg = $expr->expr->getArgs()[0]->value; + $strArgType = $scope->getType($strArg); + + if ($strArgType->isString()->yes()) { + $specifiedTypes = $specifiedTypes->unionWith( + $this->createStrlenConditionalExpressionHolders($expr->var, $strArg), + ); + } + } + return $specifiedTypes; } @@ -2485,6 +2505,33 @@ public function create( return $types; } + private function createStrlenConditionalExpressionHolders( + Expr\Variable $lenVar, + Expr $strArg, + ): SpecifiedTypes + { + $varExprString = $this->exprPrinter->printExpr($lenVar); + $strExprString = $this->exprPrinter->printExpr($strArg); + + $holders = []; + + $nonEmptyHolder = new ConditionalExpressionHolder( + [$varExprString => ExpressionTypeHolder::createYes($lenVar, IntegerRangeType::createAllGreaterThanOrEqualTo(1))], + ExpressionTypeHolder::createYes($strArg, new AccessoryNonEmptyStringType()), + ); + $holders[$nonEmptyHolder->getKey()] = $nonEmptyHolder; + + $nonFalsyHolder = new ConditionalExpressionHolder( + [$varExprString => ExpressionTypeHolder::createYes($lenVar, IntegerRangeType::createAllGreaterThanOrEqualTo(2))], + ExpressionTypeHolder::createYes($strArg, new AccessoryNonFalsyStringType()), + ); + $holders[$nonFalsyHolder->getKey()] = $nonFalsyHolder; + + return (new SpecifiedTypes([], []))->setNewConditionalExpressionHolders([ + $strExprString => $holders, + ]); + } + private function createArrayDimFetchConditionalExpressionHolder( Expr\Variable $keyVar, Expr $arrayArg, diff --git a/src/Fixable/UnwrapVirtualNodesVisitor.php b/src/Fixable/UnwrapVirtualNodesVisitor.php new file mode 100644 index 00000000000..76e5371e67d --- /dev/null +++ b/src/Fixable/UnwrapVirtualNodesVisitor.php @@ -0,0 +1,29 @@ +cond instanceof AlwaysRememberedExpr) { + return null; + } + + $node->cond = $node->cond->expr; + + return $node; + } + +} diff --git a/src/Parser/VariadicFunctionsVisitor.php b/src/Parser/VariadicFunctionsVisitor.php new file mode 100644 index 00000000000..70d19bacec9 --- /dev/null +++ b/src/Parser/VariadicFunctionsVisitor.php @@ -0,0 +1,99 @@ + */ + public static array $cache = []; + + /** @var array */ + private array $variadicFunctions = []; + + public const ATTRIBUTE_NAME = 'variadicFunctions'; + + #[Override] + public function beforeTraverse(array $nodes): ?array + { + $this->topNode = null; + $this->variadicFunctions = []; + $this->inNamespace = null; + $this->inFunction = null; + + return null; + } + + #[Override] + public function enterNode(Node $node): ?Node + { + $this->topNode ??= $node; + + if ($node instanceof Node\Stmt\Namespace_ && $node->name !== null) { + $this->inNamespace = $node->name->toString(); + } + + if ($node instanceof Node\Stmt\Function_) { + $this->inFunction = $this->inNamespace !== null ? $this->inNamespace . '\\' . $node->name->name : $node->name->name; + } + + if ( + $this->inFunction !== null + && $node instanceof Node\Expr\FuncCall + && $node->name instanceof Name + && in_array((string) $node->name, ParametersAcceptor::VARIADIC_FUNCTIONS, true) + && !array_key_exists($this->inFunction, $this->variadicFunctions) + ) { + $this->variadicFunctions[$this->inFunction] = true; + } + + return null; + } + + #[Override] + public function leaveNode(Node $node): ?Node + { + if ($node instanceof Node\Stmt\Namespace_ && $node->name !== null) { + $this->inNamespace = null; + } + + if ($node instanceof Node\Stmt\Function_ && $this->inFunction !== null) { + $this->variadicFunctions[$this->inFunction] ??= false; + $this->inFunction = null; + } + + return null; + } + + #[Override] + public function afterTraverse(array $nodes): ?array + { + if ($this->topNode !== null && $this->variadicFunctions !== []) { + foreach ($this->variadicFunctions as $name => $variadic) { + self::$cache[$name] = $variadic; + } + $functions = array_filter($this->variadicFunctions, static fn (bool $variadic) => $variadic); + $this->topNode->setAttribute(self::ATTRIBUTE_NAME, $functions); + } + + return null; + } + +} diff --git a/src/Parser/VariadicMethodsVisitor.php b/src/Parser/VariadicMethodsVisitor.php new file mode 100644 index 00000000000..4e5bf66d75f --- /dev/null +++ b/src/Parser/VariadicMethodsVisitor.php @@ -0,0 +1,140 @@ + */ + private array $classStack = []; + + private ?string $inMethod = null; + + /** @var array> */ + public static array $cache = []; + + /** @var array> */ + private array $variadicMethods = []; + + #[Override] + public function beforeTraverse(array $nodes): ?array + { + $this->topNode = null; + $this->variadicMethods = []; + $this->inNamespace = null; + $this->classStack = []; + $this->inMethod = null; + + return null; + } + + #[Override] + public function enterNode(Node $node): ?Node + { + $this->topNode ??= $node; + + if ($node instanceof Node\Stmt\Namespace_ && $node->name !== null) { + $this->inNamespace = $node->name->toString(); + } + + if ($node instanceof Node\Stmt\ClassLike) { + if (!$node->name instanceof Node\Identifier) { + $className = sprintf('%s:%s:%s', self::ANONYMOUS_CLASS_PREFIX, $node->getStartLine(), $node->getEndLine()); + $this->classStack[] = $className; + } else { + $className = $node->name->name; + $this->classStack[] = $this->inNamespace !== null ? $this->inNamespace . '\\' . $className : $className; + } + } + + if ($node instanceof ClassMethod) { + $this->inMethod = $node->name->name; + } + + if ( + $this->inMethod !== null + && $node instanceof Node\Expr\FuncCall + && $node->name instanceof Name + && in_array((string) $node->name, ParametersAcceptor::VARIADIC_FUNCTIONS, true) + ) { + $lastClass = $this->classStack[count($this->classStack) - 1] ?? null; + if ($lastClass !== null) { + if ( + !array_key_exists($lastClass, $this->variadicMethods) + || !array_key_exists($this->inMethod, $this->variadicMethods[$lastClass]) + ) { + $this->variadicMethods[$lastClass][$this->inMethod] = true; + } + } + + } + + return null; + } + + #[Override] + public function leaveNode(Node $node): ?Node + { + if ($node instanceof ClassMethod) { + $lastClass = $this->classStack[count($this->classStack) - 1] ?? null; + if ($lastClass !== null) { + $this->variadicMethods[$lastClass][$this->inMethod] ??= false; + } + $this->inMethod = null; + } + + if ($node instanceof Node\Stmt\ClassLike) { + array_pop($this->classStack); + } + + if ($node instanceof Node\Stmt\Namespace_ && $node->name !== null) { + $this->inNamespace = null; + } + + return null; + } + + #[Override] + public function afterTraverse(array $nodes): ?array + { + if ($this->topNode !== null && $this->variadicMethods !== []) { + $filteredMethods = []; + foreach ($this->variadicMethods as $class => $methods) { + foreach ($methods as $name => $variadic) { + self::$cache[$class][$name] = $variadic; + if (!$variadic) { + continue; + } + + $filteredMethods[$class][$name] = true; + } + } + $this->topNode->setAttribute(self::ATTRIBUTE_NAME, $filteredMethods); + } + + return null; + } + +} diff --git a/src/PhpDoc/PhpDocBlock.php b/src/PhpDoc/PhpDocBlock.php new file mode 100644 index 00000000000..434770b42d8 --- /dev/null +++ b/src/PhpDoc/PhpDocBlock.php @@ -0,0 +1,386 @@ + $parameterNameMapping + * @param array $parents + */ + private function __construct( + private string $docComment, + private ?string $file, + private ClassReflection $classReflection, + private ?string $trait, + private array $parameterNameMapping, + private array $parents, + ) + { + } + + public function getDocComment(): string + { + return $this->docComment; + } + + public function getFile(): ?string + { + return $this->file; + } + + public function getClassReflection(): ClassReflection + { + return $this->classReflection; + } + + public function getTrait(): ?string + { + return $this->trait; + } + + /** + * @return array + */ + public function getParents(): array + { + return $this->parents; + } + + /** + * @template T + * @param array $array + * @return array + */ + public function transformArrayKeysWithParameterNameMapping(array $array): array + { + $newArray = []; + foreach ($array as $key => $value) { + if (!array_key_exists($key, $this->parameterNameMapping)) { + continue; + } + $newArray[$this->parameterNameMapping[$key]] = $value; + } + + return $newArray; + } + + public function transformConditionalReturnTypeWithParameterNameMapping(Type $type): Type + { + return TypeTraverser::map($type, function (Type $type, callable $traverse): Type { + if ($type instanceof ConditionalTypeForParameter) { + $parameterName = substr($type->getParameterName(), 1); + if (array_key_exists($parameterName, $this->parameterNameMapping)) { + $type = $type->changeParameterName('$' . $this->parameterNameMapping[$parameterName]); + } + } + + return $traverse($type); + }); + } + + public function transformAssertTagParameterWithParameterNameMapping(AssertTagParameter $parameter): AssertTagParameter + { + $parameterName = substr($parameter->getParameterName(), 1); + if (array_key_exists($parameterName, $this->parameterNameMapping)) { + $parameter = $parameter->changeParameterName('$' . $this->parameterNameMapping[$parameterName]); + } + + return $parameter; + } + + public static function resolvePhpDocBlockForProperty( + ?string $docComment, + ClassReflection $classReflection, + ?string $trait, + string $propertyName, + ?string $file, + ): self + { + $docBlocksFromParents = []; + foreach (self::getParentReflections($classReflection) as $parentReflection) { + $oneResult = self::resolvePropertyPhpDocBlockFromClass( + $parentReflection, + $propertyName, + ); + + if ($oneResult === null) { // Null if it is private or from a wrong trait. + continue; + } + + $docBlocksFromParents[] = $oneResult; + } + + return new self( + $docComment ?? ResolvedPhpDocBlock::EMPTY_DOC_STRING, + $file, + $classReflection, + $trait, + [], + $docBlocksFromParents, + ); + } + + public static function resolvePhpDocBlockForConstant( + ?string $docComment, + ClassReflection $classReflection, + string $constantName, + ?string $file, + ): self + { + $docBlocksFromParents = []; + foreach (self::getParentReflections($classReflection) as $parentReflection) { + $oneResult = self::resolveConstantPhpDocBlockFromClass( + $parentReflection, + $constantName, + ); + + if ($oneResult === null) { // Null if it is private or from a wrong trait. + continue; + } + + $docBlocksFromParents[] = $oneResult; + } + + return new self( + $docComment ?? ResolvedPhpDocBlock::EMPTY_DOC_STRING, + $file, + $classReflection, + null, + [], + $docBlocksFromParents, + ); + } + + /** + * @param array $originalPositionalParameterNames + * @param array $newPositionalParameterNames + */ + public static function resolvePhpDocBlockForMethod( + ?string $docComment, + ClassReflection $classReflection, + ?string $trait, + string $methodName, + ?string $file, + array $originalPositionalParameterNames, + array $newPositionalParameterNames, + ): self + { + $docBlocksFromParents = []; + foreach (self::getParentReflections($classReflection) as $parentReflection) { + $oneResult = self::resolveMethodPhpDocBlockFromClass( + $parentReflection, + $methodName, + $newPositionalParameterNames, + ); + + if ($oneResult === null) { // Null if it is private or from a wrong trait. + continue; + } + + $docBlocksFromParents[] = $oneResult; + } + + foreach ($classReflection->getTraits(true) as $traitReflection) { + if (!$traitReflection->hasNativeMethod($methodName)) { + continue; + } + $traitMethod = $traitReflection->getNativeMethod($methodName); + $abstract = $traitMethod->isAbstract(); + if (is_bool($abstract)) { + if (!$abstract) { + continue; + } + } elseif (!$abstract->yes()) { + continue; + } + + $methodVariant = $traitMethod->getOnlyVariant(); + $positionalMethodParameterNames = []; + foreach ($methodVariant->getParameters() as $methodParameter) { + $positionalMethodParameterNames[] = $methodParameter->getName(); + } + + $docBlocksFromParents[] = new self( + $traitMethod->getDocComment() ?? ResolvedPhpDocBlock::EMPTY_DOC_STRING, + $classReflection->getFileName(), + $classReflection, + $traitReflection->getName(), + self::remapParameterNames($newPositionalParameterNames, $positionalMethodParameterNames), + [], + ); + } + + return new self( + $docComment ?? ResolvedPhpDocBlock::EMPTY_DOC_STRING, + $file, + $classReflection, + $trait, + self::remapParameterNames($originalPositionalParameterNames, $newPositionalParameterNames), + $docBlocksFromParents, + ); + } + + /** + * @param array $originalPositionalParameterNames + * @param array $newPositionalParameterNames + * @return array + */ + private static function remapParameterNames( + array $originalPositionalParameterNames, + array $newPositionalParameterNames, + ): array + { + $parameterNameMapping = []; + foreach ($originalPositionalParameterNames as $i => $parameterName) { + if (!array_key_exists($i, $newPositionalParameterNames)) { + continue; + } + $parameterNameMapping[$newPositionalParameterNames[$i]] = $parameterName; + } + + return $parameterNameMapping; + } + + /** + * @return array + */ + private static function getParentReflections(ClassReflection $classReflection): array + { + $result = []; + + $parent = $classReflection->getParentClass(); + if ($parent !== null) { + $result[] = $parent; + } + + foreach ($classReflection->getInterfaces() as $interface) { + $result[] = $interface; + } + + return $result; + } + + private static function resolveConstantPhpDocBlockFromClass( + ClassReflection $classReflection, + string $name, + ): ?self + { + if ($classReflection->hasConstant($name)) { + $parentReflection = $classReflection->getConstant($name); + if ($parentReflection->isPrivate()) { + return null; + } + + $classReflection = $parentReflection->getDeclaringClass(); + + return self::resolvePhpDocBlockForConstant( + $parentReflection->getDocComment() ?? ResolvedPhpDocBlock::EMPTY_DOC_STRING, + $classReflection, + $name, + $classReflection->getFileName(), + ); + } + + return null; + } + + private static function resolvePropertyPhpDocBlockFromClass( + ClassReflection $classReflection, + string $name, + ): ?self + { + if ($classReflection->hasNativeProperty($name)) { + $parentReflection = $classReflection->getNativeProperty($name); + if ($parentReflection->isPrivate()) { + return null; + } + + $classReflection = $parentReflection->getDeclaringClass(); + $traitReflection = $parentReflection->getDeclaringTrait(); + + $trait = $traitReflection !== null + ? $traitReflection->getName() + : null; + + return self::resolvePhpDocBlockForProperty( + $parentReflection->getDocComment() ?? ResolvedPhpDocBlock::EMPTY_DOC_STRING, + $classReflection, + $trait, + $name, + $classReflection->getFileName(), + ); + } + + return null; + } + + /** + * @param array $positionalParameterNames + */ + private static function resolveMethodPhpDocBlockFromClass( + ClassReflection $classReflection, + string $name, + array $positionalParameterNames, + ): ?self + { + if ($classReflection->hasNativeMethod($name)) { + $parentReflection = $classReflection->getNativeMethod($name); + if ($parentReflection->isPrivate()) { + return null; + } + + $classReflection = $parentReflection->getDeclaringClass(); + $traitReflection = null; + if ($parentReflection instanceof PhpMethodReflection || $parentReflection instanceof ResolvedMethodReflection) { + $traitReflection = $parentReflection->getDeclaringTrait(); + } + $methodVariants = $parentReflection->getVariants(); + $positionalMethodParameterNames = []; + $lowercaseMethodName = strtolower($parentReflection->getName()); + if ( + count($methodVariants) === 1 + && $lowercaseMethodName !== '__construct' + && $lowercaseMethodName !== strtolower($parentReflection->getDeclaringClass()->getName()) + ) { + $methodParameters = $methodVariants[0]->getParameters(); + foreach ($methodParameters as $methodParameter) { + $positionalMethodParameterNames[] = $methodParameter->getName(); + } + } else { + $positionalMethodParameterNames = $positionalParameterNames; + } + + $trait = $traitReflection !== null + ? $traitReflection->getName() + : null; + + return self::resolvePhpDocBlockForMethod( + $parentReflection->getDocComment() ?? ResolvedPhpDocBlock::EMPTY_DOC_STRING, + $classReflection, + $trait, + $name, + $classReflection->getFileName(), + $positionalParameterNames, + $positionalMethodParameterNames, + ); + } + + return null; + } + +} diff --git a/src/Rules/Api/BcUncoveredInterface.php b/src/Rules/Api/BcUncoveredInterface.php new file mode 100644 index 00000000000..3bf9c0c61db --- /dev/null +++ b/src/Rules/Api/BcUncoveredInterface.php @@ -0,0 +1,72 @@ +getName() === 'array_key_first'; + } + + public function getTypeFromFunctionCall(FunctionReflection $functionReflection, FuncCall $functionCall, Scope $scope): ?Type + { + if (!isset($functionCall->getArgs()[0])) { + return null; + } + + $argType = $scope->getType($functionCall->getArgs()[0]->value); + $iterableAtLeastOnce = $argType->isIterableAtLeastOnce(); + if ($iterableAtLeastOnce->no()) { + return new NullType(); + } + + $keyType = $argType->getFirstIterableKeyType(); + if ($iterableAtLeastOnce->yes()) { + return $keyType; + } + + return TypeCombinator::union($keyType, new NullType()); + } + +} diff --git a/src/Type/Php/ArrayKeyLastDynamicReturnTypeExtension.php b/src/Type/Php/ArrayKeyLastDynamicReturnTypeExtension.php new file mode 100644 index 00000000000..c3865ada3c5 --- /dev/null +++ b/src/Type/Php/ArrayKeyLastDynamicReturnTypeExtension.php @@ -0,0 +1,43 @@ +getName() === 'array_key_last'; + } + + public function getTypeFromFunctionCall(FunctionReflection $functionReflection, FuncCall $functionCall, Scope $scope): ?Type + { + if (!isset($functionCall->getArgs()[0])) { + return null; + } + + $argType = $scope->getType($functionCall->getArgs()[0]->value); + $iterableAtLeastOnce = $argType->isIterableAtLeastOnce(); + if ($iterableAtLeastOnce->no()) { + return new NullType(); + } + + $keyType = $argType->getLastIterableKeyType(); + if ($iterableAtLeastOnce->yes()) { + return $keyType; + } + + return TypeCombinator::union($keyType, new NullType()); + } + +} diff --git a/tests/PHPStan/Analyser/data/anonymous-class-name-in-trait.php b/tests/PHPStan/Analyser/data/anonymous-class-name-in-trait.php new file mode 100644 index 00000000000..206217ee62c --- /dev/null +++ b/tests/PHPStan/Analyser/data/anonymous-class-name-in-trait.php @@ -0,0 +1,10 @@ + $dayInt]; + [$dateArray['Y'], $dateArray['m']] = explode('-', '2018-12-19'); + + /** @var int $firstIntElement */ + $firstIntElement = getInt(); + /** @var int $secondIntElement */ + $secondIntElement = getInt(); + $intArrayForRewritingFirstElement = [$firstIntElement, $secondIntElement]; + [$intArrayForRewritingFirstElement[0]] = explode('*', ''); + + [$newArray['newKey']] = [new stdClass(), new stdClass()]; + + [$obj[0]] = ['error', 'error-error']; + + $constantAssocArray = [1, 'foo', 'key' => true, 'value' => '123']; + ['key' => $assocKey, 0 => $assocOne, 1 => $assocFoo, 'non-existent' => $assocNonExistent] = $constantAssocArray; + + $fooKey = 'key'; + /** @var string $stringKey */ + $stringKey = getString(); + /** @var mixed $mixedKey */ + $mixedKey = getMixed(); + [$fooKey => $dynamicAssocKey, $stringKey => $dynamicAssocStrings, $mixedKey => $dynamicAssocMixed] = $constantAssocArray; + + foreach ([$constantAssocArray] as [$fooKey => $dynamicAssocKeyForeach, $stringKey => $dynamicAssocStringsForeach, $mixedKey => $dynamicAssocMixedForeach]) { + + } + + /** @var iterable> $iterableOverStringArrays */ + $iterableOverStringArrays = doFoo(); + foreach ($iterableOverStringArrays as [$stringFromIterable]) { + + } + + /** @var string $stringWithVarAnnotation */ + [$stringWithVarAnnotation] = doFoo(); + + /** @var string $stringWithVarAnnotationInForeach */ + foreach (doFoo() as [$stringWithVarAnnotationInForeach]) { + + } + + die; +}; diff --git a/tests/PHPStan/Analyser/data/array-functions.php b/tests/PHPStan/Analyser/data/array-functions.php new file mode 100644 index 00000000000..15d72524877 --- /dev/null +++ b/tests/PHPStan/Analyser/data/array-functions.php @@ -0,0 +1,190 @@ + $maybeNegRange */ +$filledByMaybeNegativeRange = array_fill(0, $maybeNegRange, 1); +$filledByPositiveRange = array_fill(0, rand(3, 5), 1); + +$integerKeys = [ + 1 => 'foo', + 2 => new \stdClass(), +]; + +$stringKeys = [ + 'foo' => 'foo', + 'bar' => new \stdClass(), +]; + +/** @var \stdClass[] $stdClassesWithIsset */ +$stdClassesWithIsset = doFoo(); +if (rand(0, 1) === 0) { + $stdClassesWithIsset[] = new \stdClass(); +} +if (!isset($stdClassesWithIsset['baz'])) { + return; +} + +$stringOrIntegerKeys = [ + 'foo' => new \stdClass(), + 1 => new \stdClass(), +]; + +$constantArrayWithFalseyValues = [null, '', 1]; + +$constantTruthyValues = array_filter($constantArrayWithFalseyValues); + +/** @var array $falsey */ +$falsey = doFoo(); + +/** @var array $withFalsey */ +$withFalsey = doFoo(); + +$union = ['a' => 1]; +if (rand(0, 1) === 1) { + $union['b'] = false; +} + +/** @var bool $bool */ +$bool = doFoo(); +/** @var int $integer */ +$integer = doFoo(); + +$withPossiblyFalsey = [$bool, $integer, '', 'a' => 0]; + +/** @var array $generalStringKeys */ +$generalStringKeys = doFoo(); + +/** @var array $generalIntegerKeys */ +$generalIntegerKeys = doFoo(); + +/** @var array $generalDateTimeValues */ +$generalDateTimeValues = doFoo(); + +/** @var int $integer */ +$integer = doFoo(); + +/** @var string $string */ +$string = doFoo(); + +/** @var int[] $generalIntegers */ +$generalIntegers = doFoo(); + +/** @var int[][] $generalIntegersInAnotherArray */ +$generalIntegersInAnotherArray = doFoo(); + +$mappedStringKeys = array_map(function (): \stdClass { + +}, $generalStringKeys); + +/** @var callable $callable */ +$callable = doFoo(); + +$mappedStringKeysWithUnknownClosureType = array_map($callable, $generalStringKeys); +$mappedWrongArray = array_map(function (): string { + +}, 1); +$unknownArray = array_map($callable, 1); + +$conditionalArray = ['foo', 'bar']; +$conditionalKeysArray = [ + 'foo' => 1, + 'bar' => 1, +]; +if (doFoo()) { + $conditionalArray[] = 'baz'; + $conditionalArray[] = 'lorem'; + $conditionalKeysArray['baz'] = 1; + $conditionalKeysArray['lorem'] = 1; +} + +/** @var int|string $generalIntegerOrString */ +$generalIntegerOrString = doFoo(); + +/** @var array $generalArrayOfIntegersOrStrings */ +$generalArrayOfIntegersOrStrings = doFoo(); + +/** @var array $generalIntegerOrStringKeys */ +$generalIntegerOrStringKeys = doFoo(); + +/** @var array $generalIntegerOrStringKeysMixedValues */ +$generalIntegerOrStringKeysMixedValues = doFoo(); + +$clonedConditionalArray = $conditionalArray; +$clonedConditionalArray[(int)$generalIntegerOrString] = $generalIntegerOrString; + +if (random_int(0, 1)) { + $unionArrays = [1=>1, 2=> '', 'a' => 0]; +} else { + $unionArrays = ['foo' => 'bar', 'baz' => 'qux']; +} + +/** @var mixed $mixed */ +$mixed = doFoo(); + +/** @var array $array */ +$array = doFoo(); + +/** @var array $array2 */ +$array2 = doFoo(); + +/** @var string[] $stringArray */ +$stringArray = doFoo(); + +$slicedOffset = array_slice(['4' => 'foo', 1 => 'bar', 'baz' => 'qux', 0 => 'quux', 'quuz' => 'corge'], 0, null, false); +$slicedOffsetWithKeys = array_slice(['4' => 'foo', 1 => 'bar', 'baz' => 'qux', 0 => 'quux', 'quuz' => 'corge'], 0, null, true); + +$slicedOffset[] = 'grault'; +$slicedOffsetWithKeys[] = 'grault'; + +$mergedInts = []; +foreach ($array as $val) { + $mergedInts = array_merge($mergedInts, $generalIntegers); +} + +$fooArray = ['foo']; +$poppedFoo = array_pop($fooArray); + +die; diff --git a/tests/PHPStan/Analyser/data/array-keys-branches.php b/tests/PHPStan/Analyser/data/array-keys-branches.php new file mode 100644 index 00000000000..cf600ed176f --- /dev/null +++ b/tests/PHPStan/Analyser/data/array-keys-branches.php @@ -0,0 +1,55 @@ + 0, + 'j' => 0, + 'k' => 0, + 'l' => 0, + 'm' => 0, + ]; + + /** @var \DateTimeImmutable|null $nullableDateTime */ + $nullableDateTime = doFoo(); + $array['key'] = $nullableDateTime; + + $arrayAppendedInIf = ['foo', 'bar']; + if ($array['key'] === null) { + $array['key'] = new \DateTimeImmutable(); + $arrayAppendedInIf[] = 'baz'; + } + + if ($generalArray['key'] === null) { + $generalArray['key'] = new \DateTimeImmutable(); + } + + foreach ([1, 2] as $x) { + $array['i'] += $x; + $array['k']++; + } + + /** @var int[] $ints */ + $ints = doFoo(); + $arrayAppendedInForeach = ['foo', 'bar']; + $anotherArrayAppendedInForeach = ['foo', 'bar']; + $i = 0; + + $incremented = 0; + $setFromZeroToOne = 0; + foreach ($ints as $x) { + $array['j'] += $x; + $arrayAppendedInForeach[] = 'baz'; + $anotherArrayAppendedInForeach[$i++] = 'baz'; + $incremented++; + $setFromZeroToOne = 1; + } + + $array['l']++; + $array['m'] += 5; + + if (rand(0, 1) === 1) { + $array['n'] = 'str'; + } + + die; +}; diff --git a/tests/PHPStan/Analyser/data/array-pointer-functions.php b/tests/PHPStan/Analyser/data/array-pointer-functions.php new file mode 100644 index 00000000000..60786d435c3 --- /dev/null +++ b/tests/PHPStan/Analyser/data/array-pointer-functions.php @@ -0,0 +1,40 @@ + 1, + 'b' => 2, + ]; + /** @var array{a?: 0, b: 1, c: 2} $constantArrayOptionalKeys1 */ + $constantArrayOptionalKeys1 = []; + /** @var array{a: 0, b?: 1, c: 2} $constantArrayOptionalKeys2 */ + $constantArrayOptionalKeys2 = []; + /** @var array{a: 0, b: 1, c?: 2} $constantArrayOptionalKeys3 */ + $constantArrayOptionalKeys3 = []; + + $conditionalArray = ['foo', 'bar']; + if (doFoo()) { + array_unshift($conditionalArray, 'baz'); + } + + $secondConditionalArray = ['foo', 'bar']; + if (doFoo()) { + $secondConditionalArray[] = 'baz'; + } + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/array-shapes.php b/tests/PHPStan/Analyser/data/array-shapes.php new file mode 100644 index 00000000000..ed36ebfffa7 --- /dev/null +++ b/tests/PHPStan/Analyser/data/array-shapes.php @@ -0,0 +1,22 @@ + $integersArray + * @param array $integersIterable + */ + public function doFoo( + array $integersArray, + iterable $integersIterable + ) + { + $integersOne = [1, 2, 3, ...$integersArray]; + $integersTwo = [1, 2, 3, ...$integersIterable]; + $integersThree = [1, 2, ...[3, 4, 5], 6, 7]; + + $integersFour = array(1, 2, 3, ...$integersArray); + $integersFive = array(1, 2, 3, ...$integersIterable); + $integersSix = array(1, 2, ...[3, 4, 5], 6, 7); + + $integersSeven = array(1, 2, ...array(3, 4, 5), 6, 7); + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/arrow-functions-inside.php b/tests/PHPStan/Analyser/data/arrow-functions-inside.php new file mode 100644 index 00000000000..258b951b63e --- /dev/null +++ b/tests/PHPStan/Analyser/data/arrow-functions-inside.php @@ -0,0 +1,13 @@ + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/arrow-functions.php b/tests/PHPStan/Analyser/data/arrow-functions.php new file mode 100644 index 00000000000..d3e50851c26 --- /dev/null +++ b/tests/PHPStan/Analyser/data/arrow-functions.php @@ -0,0 +1,15 @@ + 1; + $y = fn(): array => ['a' => 1, 'b' => 2]; + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/assignment-in-condition.php b/tests/PHPStan/Analyser/data/assignment-in-condition.php new file mode 100644 index 00000000000..c099fdfa4c2 --- /dev/null +++ b/tests/PHPStan/Analyser/data/assignment-in-condition.php @@ -0,0 +1,21 @@ +doFoo()) { + die; + } + } + +} diff --git a/tests/PHPStan/Analyser/data/binary.php b/tests/PHPStan/Analyser/data/binary.php new file mode 100644 index 00000000000..cf6f245f5bb --- /dev/null +++ b/tests/PHPStan/Analyser/data/binary.php @@ -0,0 +1,229 @@ + new \stdClass(), 5 => 'test']; + array_unshift($arrToUnshift, 'lorem', 5); + + /** @var int[] $arrToUnshift2 */ + $arrToUnshift2 = doFoo(); + array_unshift($arrToUnshift2, 'lorem', new \stdClass()); + array_unshift($mixed, 'lorem'); + + $line = __LINE__; + $dir = __DIR__; + $file = __FILE__; + $namespace = __NAMESPACE__; + $class = __CLASS__; + $method = __METHOD__; + $function = __FUNCTION__; + + $incrementedString = $string; + $incrementedString++; + + $decrementedString = $string; + $decrementedString--; + + $incrementedFooString = $fooString; + $incrementedFooString++; + + $decrementedFooString = $fooString; + $decrementedFooString--; + + $index = 0; + $preIncArray = []; + $preIncArray[++$index] = $index; + $preIncArray[++$index] = $index; + + $anotherIndex = 0; + $postIncArray = []; + $postIncArray[$anotherIndex++] = $anotherIndex++; + $postIncArray[$anotherIndex++] = $anotherIndex++; + + $anotherPostIncArray = []; + $anotherAnotherIndex = 0; + $anotherPostIncArray[$anotherAnotherIndex++][$anotherAnotherIndex++][$anotherAnotherIndex++] = $anotherAnotherIndex++; + $anotherPostIncArray[$anotherAnotherIndex++][$anotherAnotherIndex++][$anotherAnotherIndex++] = $anotherAnotherIndex++; + + $conditionalArray = [1, 1, 1]; + $conditionalInt = 1; + $conditionalString = 'foo'; + $anotherConditionalString = 'lorem'; + if (doFoo()) { + $conditionalArray[] = 2; + $conditionalArray[] = 3; + $conditionalInt = 2; + $conditionalString = 'bar'; + $anotherConditionalString = 'ipsum'; + } + + $unshiftedConditionalArray = $conditionalArray; + array_unshift($unshiftedConditionalArray, 'lorem', new \stdClass()); + + $arrToShift = [1, 2, 3]; + array_shift($arrToShift); + + $arrToPop = [1, 2, 3]; + array_pop($arrToPop); + + $coalesceArray = []; + $arrayOfUnknownIntegers[42] ?? $coalesceArray[] = 'username'; + $arrayOfUnknownIntegers[108] ?? $coalesceArray[] = 'password'; + + $arrayToBeUnset = $array; + unset($arrayToBeUnset[$string]); + + $arrayToBeUnset2 = $arrayToBeUnset; + unset($arrayToBeUnset2[$string]); + + $arrayToBeUnset3 = $array; + unset($arrayToBeUnset3[$integer]); + + $arrayToBeUnset4 = $arrayToBeUnset3; + unset($arrayToBeUnset4[$integer]); + + /** @var array $shiftedNonEmptyArray */ + $shiftedNonEmptyArray = doFoo(); + + if (count($shiftedNonEmptyArray) === 0) { + return; + } + + array_shift($shiftedNonEmptyArray); + + /** @var array $unshiftedArray */ + $unshiftedArray = doFoo(); + array_unshift($unshiftedArray, 1); + + /** @var array $poppedNonEmptyArray */ + $poppedNonEmptyArray = doFoo(); + if (count($poppedNonEmptyArray) === 0) { + return; + } + + array_pop($poppedNonEmptyArray); + + /** @var array $pushedArray */ + $pushedArray = doFoo(); + array_push($pushedArray, 1); + + $simpleXML = new \SimpleXMLElement(''); + $simpleXMLReturningXML = $simpleXML->asXML(); + if ($simpleXMLReturningXML) { + $xmlString = $simpleXMLReturningXML; + } + + $simpleXMLWritingXML = $simpleXML->asXML('path.xml'); + + /** @var string $stringForXpath */ + $stringForXpath = doFoo(); + + $simpleXMLRightXpath = $simpleXML->xpath('/a/b/c'); + $simpleXMLWrongXpath = $simpleXML->xpath('[foo]'); + $simpleXMLUnknownXpath = $simpleXML->xpath($stringForXpath); + + $namespacedXML = new \SimpleXMLElement(''); + $namespacedXML->registerXPathNamespace('ns', 'namespace'); + $namespacedXpath = $namespacedXML->xpath('/ns:node'); + + if (rand(0, 1)) { + $maybeDefinedVariable = 'foo'; + } + + $sumWithStaticConst = static::INT_CONST + 1; + $severalSumWithStaticConst1 = static::INT_CONST + 1 + 1; + $severalSumWithStaticConst2 = 1 + static::INT_CONST + 1; + $severalSumWithStaticConst3 = 1 + 1 + static::INT_CONST; + + if (!is_array($mixed)) { + $mixedNoArray = $mixed; + } + if (!is_int($mixed)) { + $mixedNoInt = $mixed; + } + if (!is_float($mixed)) { + $mixedNoFloat = $mixed; + } + if (!is_array($mixed)) { + if (!is_int($mixed)) { + $mixedNoArrayOrInt = $mixed; + } + } + + /** @var int|array $intOrArray */ + $intOrArray = doFoo(); + + /** @var array|float $floatOrArray */ + $floatOrArray = doFoo(); + + /** @var int|float $intOrFloat */ + $intOrFloat = doFoo(); + + /** @var array|float|int|string|bool $plusable */ + $plusable = doFoo(); + + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/bug-10147.php b/tests/PHPStan/Analyser/data/bug-10147.php new file mode 100644 index 00000000000..8798de28e71 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-10147.php @@ -0,0 +1,13 @@ + 1, + 'BY' => 2, + 'BE' => 3, + 'BB' => 4, + 'HB' => 5, + 'HH' => 6, + 'HE' => 7, + 'MV' => 8, + 'NI' => 9, + 'NW' => 10, + 'RP' => 11, + 'SL' => 12, + 'ST' => 13, + 'SN' => 14, + 'SH' => 15, + 'TH' => 16, + ]; + + protected static function test(): void + { + for ($i = 0; $i < 10; $i++) { + foreach (self::CHANGESET as $stateCode => $changesets) { + $stateId = self::STATES[$stateCode]; + foreach ($changesets as $changeset) { + echo sprintf( + '%s %s %s %s', + $changeset['new']['Gemarkung'], + $changeset['old']['Gemeinde'], + $changeset['old']['Gemarkung'], + $stateId + ); + } + } + } + } + + protected const CHANGESET = ['BB' => [['old' => ['Gemeinde' => 'Alt Zauche - Wußmerk', 'Gemarkung' => 'Alt Zauche'],'new' => ['Gemeinde' => 'Alt Zauche - Wußwerk', 'Gemarkung' => 'Alt Zauche'],],['old' => ['Gemeinde' => 'Alt Zauche - Wußmerk', 'Gemarkung' => 'Wußwerk'],'new' => ['Gemeinde' => 'Alt Zauche - Wußwerk', 'Gemarkung' => 'Wußwerk'],],['old' => ['Gemeinde' => 'Doberlug - Kirchhain', 'Gemarkung' => 'Doberlug-Kirchhainrchhain'],'new' => ['Gemeinde' => 'Doberlug - Kirchhain', 'Gemarkung' => 'Doberlug-Kirchhain'],],],'BE' => [['old' => ['Gemeindeschluessel' => '11000004', 'Gemeinde' => 'Charlottenburg-Wilmersdorf', 'Gemarkung' => 'Charlottenburg'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Charlottenburg'],],['old' => ['Gemeindeschluessel' => '11000004', 'Gemeinde' => 'Charlottenburg-Wilmersdorf', 'Gemarkung' => 'Grunewald-Forst'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Grunewald-Forst'],],['old' => ['Gemeindeschluessel' => '11000004', 'Gemeinde' => 'Charlottenburg-Wilmersdorf', 'Gemarkung' => 'Schmargendorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Schmargendorf'],],['old' => ['Gemeindeschluessel' => '11000004', 'Gemeinde' => 'Charlottenburg-Wilmersdorf', 'Gemarkung' => 'Wilmersdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Wilmersdorf'],],['old' => ['Gemeindeschluessel' => '11000002', 'Gemeinde' => 'Friedrichshain-Kreuzberg', 'Gemarkung' => 'Friedrichshain'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Friedrichshain'],],['old' => ['Gemeindeschluessel' => '11000002', 'Gemeinde' => 'Friedrichshain-Kreuzberg', 'Gemarkung' => 'Kreuzberg'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Kreuzberg'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Falkenberg Gemeinde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Falkenberg Gemeinde'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Falkenberg Gut'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Falkenberg Gut'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Hohenschönhausen'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Hohenschönhausen'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Lichtenberg'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Lichtenberg'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Malchow Gemeinde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Malchow Gemeinde'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Malchow Gut'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Malchow Gut'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Wartenberg Gemeinde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Wartenberg Gemeinde'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Wartenberg Gut'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Wartenberg Gut'],],['old' => ['Gemeindeschluessel' => '11000011', 'Gemeinde' => 'Lichtenberg', 'Gemarkung' => 'Weißensee'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Weißensee'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Ahrensfelde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Ahrensfelde'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Biesdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Biesdorf'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Dahlwitz'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Dahlwitz'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Falkenberg Gemeinde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Falkenberg Gemeinde'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Falkenberg Gut'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Falkenberg Gut'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Friedrichsfelde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Friedrichsfelde'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Hellersdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Hellersdorf'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Kaulsdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Kaulsdorf'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Köpenick'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Köpenick'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Mahlsdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Mahlsdorf'],],['old' => ['Gemeindeschluessel' => '11000010', 'Gemeinde' => 'Marzahn-Hellersdorf', 'Gemarkung' => 'Marzahn'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Marzahn'],],['old' => ['Gemeindeschluessel' => '11000001', 'Gemeinde' => 'Mitte', 'Gemarkung' => 'Mitte'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Mitte'],],['old' => ['Gemeindeschluessel' => '11000001', 'Gemeinde' => 'Mitte', 'Gemarkung' => 'Tiergarten'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Tiergarten'],],['old' => ['Gemeindeschluessel' => '11000001', 'Gemeinde' => 'Mitte', 'Gemarkung' => 'Wedding'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Wedding'],],['old' => ['Gemeindeschluessel' => '11000008', 'Gemeinde' => 'Neukölln', 'Gemarkung' => 'Britz'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Britz'],],['old' => ['Gemeindeschluessel' => '11000008', 'Gemeinde' => 'Neukölln', 'Gemarkung' => 'Buckow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Buckow'],],['old' => ['Gemeindeschluessel' => '11000008', 'Gemeinde' => 'Neukölln', 'Gemarkung' => 'Neukölln'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Neukölln'],],['old' => ['Gemeindeschluessel' => '11000008', 'Gemeinde' => 'Neukölln', 'Gemarkung' => 'Rudow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Rudow'],],['old' => ['Gemeindeschluessel' => '11000003', 'Gemeinde' => 'Pankow', 'Gemarkung' => 'Pankow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Pankow'],],['old' => ['Gemeindeschluessel' => '11000003', 'Gemeinde' => 'Pankow', 'Gemarkung' => 'Pankow 01'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Pankow 01'],],['old' => ['Gemeindeschluessel' => '11000003', 'Gemeinde' => 'Pankow', 'Gemarkung' => 'Pankow 02'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Pankow 02'],],['old' => ['Gemeindeschluessel' => '11000003', 'Gemeinde' => 'Pankow', 'Gemarkung' => 'Pankow 03'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Pankow 03'],],['old' => ['Gemeindeschluessel' => '11000003', 'Gemeinde' => 'Pankow', 'Gemarkung' => 'Prenzlauer Berg'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Prenzlauer Berg'],],['old' => ['Gemeindeschluessel' => '11000003', 'Gemeinde' => 'Pankow', 'Gemarkung' => 'Weißensee'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Weißensee'],],['old' => ['Gemeindeschluessel' => '11000003', 'Gemeinde' => 'Pankow', 'Gemarkung' => 'Weißensee 01'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Weißensee 01'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Frohnau'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Frohnau'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Heiligensee'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Heiligensee'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Hermsdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Hermsdorf'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Lübars'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Lübars'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Reinickendorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Reinickendorf'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Schulzendorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Schulzendorf'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Tegel-Forst'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Tegel-Forst'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Tegel-Gemeinde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Tegel-Gemeinde'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Tegel-Gut'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Tegel-Gut'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Valentinswerder'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Valentinswerder'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Wilhelmsruh'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Wilhelmsruh'],],['old' => ['Gemeindeschluessel' => '11000012', 'Gemeinde' => 'Reinickendorf', 'Gemarkung' => 'Wittenau'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Wittenau'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Eiswerder'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Eiswerder'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Gatow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Gatow'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Gewehrplan u. Pulverfabrik'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Gewehrplan u. Pulverfabrik'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Groß-Glienicke'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Groß-Glienicke'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Haselhorst'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Haselhorst'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Heerstraße'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Heerstraße'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Kladow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Kladow'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Klosterfelde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Klosterfelde'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Pichelsdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Pichelsdorf'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Pichelswerder'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Pichelswerder'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Seeburg'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Seeburg'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Spandau'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Spandau'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Staaken'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Staaken'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Teufelsbruch'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Teufelsbruch'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Tiefwerder'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Tiefwerder'],],['old' => ['Gemeindeschluessel' => '11000005', 'Gemeinde' => 'Spandau', 'Gemarkung' => 'Zitadelle'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Zitadelle'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Dahlem'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Dahlem'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Düppel'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Düppel'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Lankwitz'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Lankwitz'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Lichterfelde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Lichterfelde'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Nikolassee'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Nikolassee'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Schwanenwerder'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Schwanenwerder'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Steglitz'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Steglitz'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Wannsee'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Wannsee'],],['old' => ['Gemeindeschluessel' => '11000006', 'Gemeinde' => 'Steglitz-Zehlendorf', 'Gemarkung' => 'Zehlendorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Zehlendorf'],],['old' => ['Gemeindeschluessel' => '11000007', 'Gemeinde' => 'Tempelhof-Schöneberg', 'Gemarkung' => 'Friedenau'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Friedenau'],],['old' => ['Gemeindeschluessel' => '11000007', 'Gemeinde' => 'Tempelhof-Schöneberg', 'Gemarkung' => 'Lichtenrade'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Lichtenrade'],],['old' => ['Gemeindeschluessel' => '11000007', 'Gemeinde' => 'Tempelhof-Schöneberg', 'Gemarkung' => 'Mariendorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Mariendorf'],],['old' => ['Gemeindeschluessel' => '11000007', 'Gemeinde' => 'Tempelhof-Schöneberg', 'Gemarkung' => 'Marienfelde'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Marienfelde'],],['old' => ['Gemeindeschluessel' => '11000007', 'Gemeinde' => 'Tempelhof-Schöneberg', 'Gemarkung' => 'Schöneberg'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Schöneberg'],],['old' => ['Gemeindeschluessel' => '11000007', 'Gemeinde' => 'Tempelhof-Schöneberg', 'Gemarkung' => 'Tempelhof'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Tempelhof'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Bohnsdorf'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Bohnsdorf'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Britz'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Britz'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Buckow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Buckow'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Fahlenberg'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Fahlenberg'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Glienicke'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Glienicke'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Grünau'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Grünau'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Johannisthal'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Johannisthal'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Kanne'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Kanne'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Köpenick'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Köpenick'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Neukölln'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Neukölln'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Oberschöneweide'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Oberschöneweide'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Rudow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Rudow'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Schmöckwitz'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Schmöckwitz'],],['old' => ['Gemeindeschluessel' => '11000009', 'Gemeinde' => 'Treptow-Köpenick', 'Gemarkung' => 'Treptow'],'new' => ['Gemeindeschluessel' => '11000000', 'Gemeinde' => 'Berlin', 'Gemarkung' => 'Treptow'],],],'HB' => [['old' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Neustadt1'],'new' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Neustadt 1'],],['old' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Neustadt3'],'new' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Neustadt 3'],],['old' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Neustadt4'],'new' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Neustadt 4'],],['old' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Überseehafen', 'Gemarkungsnummer' => '040008'],'new' => ['Gemeinde' => 'Bremen', 'Gemarkung' => 'Überseehafen', 'Gemarkungsnummer' => '040009'],],],'HE' => [['old' => ['Gemeindeschluessel' => '06635005', 'Gemeinde' => 'Bromskirchen', 'Gemarkung' => 'Bromskirchen'],'new' => ['Gemeindeschluessel' => '06635001', 'Gemeinde' => 'Allendorf (Eder)', 'Gemarkung' => 'Bromskirchen'],],['old' => ['Gemeindeschluessel' => '06635005', 'Gemeinde' => 'Bromskirchen', 'Gemarkung' => 'Somplar'],'new' => ['Gemeindeschluessel' => '06635001', 'Gemeinde' => 'Allendorf (Eder)', 'Gemarkung' => 'Somplar'],],['old' => ['Gemeinde' => 'Gelnhausen', 'Gemarkung' => 'Gelnhausen'],'new' => ['Gemeinde' => 'Gelnhausen, Barbarossastadt', 'Gemarkung' => 'Gelnhausen'],],['old' => ['Gemeinde' => 'Gelnhausen', 'Gemarkung' => 'Hailer'],'new' => ['Gemeinde' => 'Gelnhausen, Barbarossastadt', 'Gemarkung' => 'Hailer'],],['old' => ['Gemeinde' => 'Gelnhausen', 'Gemarkung' => 'Haitz'],'new' => ['Gemeinde' => 'Gelnhausen, Barbarossastadt', 'Gemarkung' => 'Haitz'],],['old' => ['Gemeinde' => 'Gelnhausen', 'Gemarkung' => 'Höchst'],'new' => ['Gemeinde' => 'Gelnhausen, Barbarossastadt', 'Gemarkung' => 'Höchst'],],['old' => ['Gemeinde' => 'Gelnhausen', 'Gemarkung' => 'Meerholz'],'new' => ['Gemeinde' => 'Gelnhausen, Barbarossastadt', 'Gemarkung' => 'Meerholz'],],['old' => ['Gemeinde' => 'Gelnhausen', 'Gemarkung' => 'Roth'],'new' => ['Gemeinde' => 'Gelnhausen, Barbarossastadt', 'Gemarkung' => 'Roth'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Ahlbach'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Ahlbach'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Dietkirchen'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Dietkirchen'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Eschhofen'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Eschhofen'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Limburg'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Limburg'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Lindenholzhausen'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Lindenholzhausen'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Linter'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Linter'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Offheim'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Offheim'],],['old' => ['Gemeinde' => 'Limburg a.d. Lahn', 'Gemarkung' => 'Staffel'],'new' => ['Gemeinde' => 'Limburg a. d. Lahn', 'Gemarkung' => 'Staffel'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Arnoldshain'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Arnoldshain'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Brombach'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Brombach'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Dorfweil'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Dorfweil'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Hunoldstal'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Hunoldstal'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Niederreifenberg'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Niederreifenberg'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Oberreifenberg'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Oberreifenberg'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Schmitten'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Schmitten'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Seelenberg'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Seelenberg'],],['old' => ['Gemeinde' => 'Schmitten', 'Gemarkung' => 'Treisberg'],'new' => ['Gemeinde' => 'Schmitten im Taunus', 'Gemarkung' => 'Treisberg'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Alraft'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Alraft'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Dehringhausen'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Dehringhausen'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Freienhagen'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Freienhagen'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Höringhausen'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Höringhausen'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Netze'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Netze'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Nieder-Werbe'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Nieder-Werbe'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Ober-Werbe'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Ober-Werbe'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Oberwerba'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Oberwerba'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Sachsenhausen'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Sachsenhausen'],],['old' => ['Gemeinde' => 'Waldeck', 'Gemarkung' => 'Waldeck'],'new' => ['Gemeinde' => 'Waldeck, Nationalparkstadt', 'Gemarkung' => 'Waldeck'],],],'MV' => [['old' => ['Gemeinde' => 'Neubukow, Stadt', 'Gemarkung' => 'Buschmühlen'],'new' => ['Gemeinde' => 'Neubukow, Schliemannstadt', 'Gemarkung' => 'Buschmühlen'],],['old' => ['Gemeinde' => 'Neubukow, Stadt', 'Gemarkung' => 'Malpendorf'],'new' => ['Gemeinde' => 'Neubukow, Schliemannstadt', 'Gemarkung' => 'Malpendorf'],],['old' => ['Gemeinde' => 'Neubukow, Stadt', 'Gemarkung' => 'Neubukow'],'new' => ['Gemeinde' => 'Neubukow, Schliemannstadt', 'Gemarkung' => 'Neubukow'],],['old' => ['Gemeinde' => 'Neubukow, Stadt', 'Gemarkung' => 'Panzow'],'new' => ['Gemeinde' => 'Neubukow, Schliemannstadt', 'Gemarkung' => 'Panzow'],],['old' => ['Gemeinde' => 'Neubukow, Stadt', 'Gemarkung' => 'Spriehusen'],'new' => ['Gemeinde' => 'Neubukow, Schliemannstadt', 'Gemarkung' => 'Spriehusen'],],['old' => ['Gemeinde' => 'Tessin, Stadt', 'Gemarkung' => 'Helmstorf'],'new' => ['Gemeinde' => 'Tessin, Blumenstadt', 'Gemarkung' => 'Helmstorf'],],['old' => ['Gemeinde' => 'Tessin, Stadt', 'Gemarkung' => 'Klein Tessin'],'new' => ['Gemeinde' => 'Tessin, Blumenstadt', 'Gemarkung' => 'Klein Tessin'],],['old' => ['Gemeinde' => 'Tessin, Stadt', 'Gemarkung' => 'Tessin'],'new' => ['Gemeinde' => 'Tessin, Blumenstadt', 'Gemarkung' => 'Tessin'],],['old' => ['Gemeinde' => 'Tessin, Stadt', 'Gemarkung' => 'Vilz'],'new' => ['Gemeinde' => 'Tessin, Blumenstadt', 'Gemarkung' => 'Vilz'],],],'NI' => [['old' => ['Gemeindeschluessel' => '03153006', 'Gemeinde' => 'Hahausen', 'Gemarkung' => 'Hahausen'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Hahausen'],],['old' => ['Gemeindeschluessel' => '03153007', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Astfeld'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Astfeld'],],['old' => ['Gemeindeschluessel' => '03153007', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Bredelem'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Bredelem'],],['old' => ['Gemeindeschluessel' => '03153007', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Langelsheim'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Langelsheim'],],['old' => ['Gemeindeschluessel' => '03153007', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Lautenthal'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Lautenthal'],],['old' => ['Gemeindeschluessel' => '03153007', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Wolfshagen'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Wolfshagen'],],['old' => ['Gemeindeschluessel' => '03153007', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Wolfshagen-Mispliet'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Wolfshagen-Mispliet'],],['old' => ['Gemeindeschluessel' => '03153009', 'Gemeinde' => 'Lutter am Barenb., Flecken', 'Gemarkung' => 'Lutter am Barenberge'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Lutter am Barenberge'],],['old' => ['Gemeindeschluessel' => '03153009', 'Gemeinde' => 'Lutter am Barenb., Flecken', 'Gemarkung' => 'Lutter-Westerberg'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Lutter-Westerberg'],],['old' => ['Gemeindeschluessel' => '03153009', 'Gemeinde' => 'Lutter am Barenb., Flecken', 'Gemarkung' => 'Nauen'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Nauen'],],['old' => ['Gemeindeschluessel' => '03153009', 'Gemeinde' => 'Lutter am Barenb., Flecken', 'Gemarkung' => 'Ostlutter'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Ostlutter'],],['old' => ['Gemeindeschluessel' => '03153014', 'Gemeinde' => 'Wallmoden', 'Gemarkung' => 'Alt Wallmoden'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Alt Wallmoden'],],['old' => ['Gemeindeschluessel' => '03153014', 'Gemeinde' => 'Wallmoden', 'Gemarkung' => 'Bodenstein'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Bodenstein'],],['old' => ['Gemeindeschluessel' => '03153014', 'Gemeinde' => 'Wallmoden', 'Gemarkung' => 'Neuwallmoden'],'new' => ['Gemeindeschluessel' => '03153019', 'Gemeinde' => 'Langelsheim, Stadt', 'Gemarkung' => 'Neuwallmoden'],],],'ST' => [['old' => ['Gemeinde' => 'Bad Dürrenberg, Stadt', 'Gemarkung' => 'Nempitz'],'new' => ['Gemeinde' => 'Bad Dürrenberg, Solestadt', 'Gemarkung' => 'Nempitz'],],['old' => ['Gemeinde' => 'Bad Dürrenberg, Stadt', 'Gemarkung' => 'Oebles-Schlechtewitz'],'new' => ['Gemeinde' => 'Bad Dürrenberg, Solestadt', 'Gemarkung' => 'Oebles-Schlechtewitz'],],['old' => ['Gemeinde' => 'Bad Dürrenberg, Stadt', 'Gemarkung' => 'Tollwitz'],'new' => ['Gemeinde' => 'Bad Dürrenberg, Solestadt', 'Gemarkung' => 'Tollwitz'],],['old' => ['Gemeinde' => 'Harsleben', 'Gemarkung' => 'Harsleben'],'new' => ['Gemeinde' => 'Harsleben / Harschlewe', 'Gemarkung' => 'Harsleben'],],['old' => ['Gemeindeschluessel' => '15083575', 'Gemeinde' => 'Westheide', 'Gemarkung' => 'Born'],'new' => ['Gemeindeschluessel' => '15083557', 'Gemeinde' => 'Westheide', 'Gemarkung' => 'Born'],],],'TH' => [['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Berteroda'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Berteroda'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Eisenach'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Eisenach'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Frohnishof'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Frohnishof'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Göringen'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Göringen'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Hörschel'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Hörschel'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Hötzelsroda'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Hötzelsroda'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Madelungen'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Madelungen'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Neuenhof'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Neuenhof'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Neukirchen'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Neukirchen'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Stedtfeld'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Stedtfeld'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Stockhausen'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Stockhausen'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Stregda'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Stregda'],],['old' => ['Gemeindeschluessel' => '16056000', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Wartha'],'new' => ['Gemeindeschluessel' => '16063105', 'Gemeinde' => 'Eisenach', 'Gemarkung' => 'Wartha'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Bliederstedt'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Bliederstedt'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Feldengel'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Feldengel'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Großenehrich'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Großenehrich'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Holzengel'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Holzengel'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Kirchengel'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Kirchengel'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Niederspier'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Niederspier'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Otterstedt'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Otterstedt'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Rohnstedt'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Rohnstedt'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Wenigenehrich'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Wenigenehrich'],],['old' => ['Gemeinde' => 'Großenehrich', 'Gemarkung' => 'Westerengel'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Westerengel'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Etterwinden'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Etterwinden'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Gräfen-Nitzendorf'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Gräfen-Nitzendorf'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Gumpelstadt'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Gumpelstadt'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Kupfersuhl'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Kupfersuhl'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Möhra'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Möhra'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Neuendorf'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Neuendorf'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Wackenhof'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Wackenhof'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Waldfisch'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Waldfisch'],],['old' => ['Gemeindeschluessel' => '16063094', 'Gemeinde' => 'Moorgrund', 'Gemarkung' => 'Witzelroda'],'new' => ['Gemeindeschluessel' => '16063003', 'Gemeinde' => 'Bad Salzungen', 'Gemarkung' => 'Witzelroda'],],['old' => ['Gemeinde' => 'Roßleben-Wiehe, Stadt', 'Gemarkung' => 'Bottendorf'],'new' => ['Gemeinde' => 'Roßleben-Wiehe', 'Gemarkung' => 'Bottendorf'],],['old' => ['Gemeinde' => 'Wolferschwenda', 'Gemarkung' => 'Wolferschwenda'],'new' => ['Gemeinde' => 'Greußen', 'Gemarkung' => 'Wolferschwenda'],],],]; +} diff --git a/tests/PHPStan/Analyser/data/bug-10772.php b/tests/PHPStan/Analyser/data/bug-10772.php new file mode 100644 index 00000000000..76ea0790462 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-10772.php @@ -0,0 +1,9393 @@ +getNameInLanguage(LanguageAlpha2::English); + + // part B, all right + // $value->toCountryAlpha2()->getNameInLanguage(LanguageAlpha2::English); +} + +enum CountryAlpha3: string +{ + case Afghanistan = 'AFG'; + case Aland_Islands = 'ALA'; + case Albania = 'ALB'; + case Algeria = 'DZA'; + case American_Samoa = 'ASM'; + case Andorra = 'AND'; + case Angola = 'AGO'; + case Anguilla = 'AIA'; + case Antarctica = 'ATA'; + case Antigua_and_Barbuda = 'ATG'; + case Argentina = 'ARG'; + case Armenia = 'ARM'; + case Aruba = 'ABW'; + case Australia = 'AUS'; + case Austria = 'AUT'; + case Azerbaijan = 'AZE'; + case Bahamas = 'BHS'; + case Bahrain = 'BHR'; + case Bangladesh = 'BGD'; + case Barbados = 'BRB'; + case Belarus = 'BLR'; + case Belgium = 'BEL'; + case Belize = 'BLZ'; + case Benin = 'BEN'; + case Bermuda = 'BMU'; + case Bhutan = 'BTN'; + case Bolivia = 'BOL'; + case Bonaire_Sint_Eustatius_and_Saba = 'BES'; + case Bosnia_and_Herzegovina = 'BIH'; + case Botswana = 'BWA'; + case Bouvet_Island = 'BVT'; + case Brazil = 'BRA'; + case British_Indian_Ocean_Territory = 'IOT'; + case Brunei_Darussalam = 'BRN'; + case Bulgaria = 'BGR'; + case Burkina_Faso = 'BFA'; + case Burundi = 'BDI'; + case Cabo_Verde = 'CPV'; + case Cambodia = 'KHM'; + case Cameroon = 'CMR'; + case Canada = 'CAN'; + case Cayman_Islands = 'CYM'; + case Central_African_Republic = 'CAF'; + case Chad = 'TCD'; + case Chile = 'CHL'; + case China = 'CHN'; + case Christmas_Island = 'CXR'; + case Cocos_Islands = 'CCK'; + case Colombia = 'COL'; + case Comoros = 'COM'; + case Congo = 'COG'; + case Congo_Democratic_Republic = 'COD'; + case Cook_Islands = 'COK'; + case Costa_Rica = 'CRI'; + case Cote_d_Ivoire = 'CIV'; + case Croatia = 'HRV'; + case Cuba = 'CUB'; + case Curacao = 'CUW'; + case Cyprus = 'CYP'; + case Czechia = 'CZE'; + case Denmark = 'DNK'; + case Djibouti = 'DJI'; + case Dominica = 'DMA'; + case Dominican_Republic = 'DOM'; + case Ecuador = 'ECU'; + case Egypt = 'EGY'; + case El_Salvador = 'SLV'; + case Equatorial_Guinea = 'GNQ'; + case Eritrea = 'ERI'; + case Estonia = 'EST'; + case Eswatini = 'SWZ'; + case Ethiopia = 'ETH'; + case Falkland_Islands = 'FLK'; + case Faroe_Islands = 'FRO'; + case Fiji = 'FJI'; + case Finland = 'FIN'; + case France = 'FRA'; + case French_Guiana = 'GUF'; + case French_Polynesia = 'PYF'; + case French_Southern_Territories = 'ATF'; + case Gabon = 'GAB'; + case Gambia = 'GMB'; + case Georgia = 'GEO'; + case Germany = 'DEU'; + case Ghana = 'GHA'; + case Gibraltar = 'GIB'; + case Greece = 'GRC'; + case Greenland = 'GRL'; + case Grenada = 'GRD'; + case Guadeloupe = 'GLP'; + case Guam = 'GUM'; + case Guatemala = 'GTM'; + case Guernsey = 'GGY'; + case Guinea = 'GIN'; + case Guinea_Bissau = 'GNB'; + case Guyana = 'GUY'; + case Haiti = 'HTI'; + case Heard_Island_and_McDonald_Islands = 'HMD'; + case Holy_See = 'VAT'; + case Honduras = 'HND'; + case Hong_Kong = 'HKG'; + case Hungary = 'HUN'; + case Iceland = 'ISL'; + case India = 'IND'; + case Indonesia = 'IDN'; + case Iran = 'IRN'; + case Iraq = 'IRQ'; + case Ireland = 'IRL'; + case Isle_of_Man = 'IMN'; + case Israel = 'ISR'; + case Italy = 'ITA'; + case Jamaica = 'JAM'; + case Japan = 'JPN'; + case Jersey = 'JEY'; + case Jordan = 'JOR'; + case Kazakhstan = 'KAZ'; + case Kenya = 'KEN'; + case Kiribati = 'KIR'; + case Korea_Democratic_Peoples_Republic = 'PRK'; + case Korea_Republic = 'KOR'; + case Kuwait = 'KWT'; + case Kyrgyzstan = 'KGZ'; + case Lao_Peoples_Democratic_Republic = 'LAO'; + case Latvia = 'LVA'; + case Lebanon = 'LBN'; + case Lesotho = 'LSO'; + case Liberia = 'LBR'; + case Libya = 'LBY'; + case Liechtenstein = 'LIE'; + case Lithuania = 'LTU'; + case Luxembourg = 'LUX'; + case Macao = 'MAC'; + case Madagascar = 'MDG'; + case Malawi = 'MWI'; + case Malaysia = 'MYS'; + case Maldives = 'MDV'; + case Mali = 'MLI'; + case Malta = 'MLT'; + case Marshall_Islands = 'MHL'; + case Martinique = 'MTQ'; + case Mauritania = 'MRT'; + case Mauritius = 'MUS'; + case Mayotte = 'MYT'; + case Mexico = 'MEX'; + case Micronesia = 'FSM'; + case Moldova = 'MDA'; + case Monaco = 'MCO'; + case Mongolia = 'MNG'; + case Montenegro = 'MNE'; + case Montserrat = 'MSR'; + case Morocco = 'MAR'; + case Mozambique = 'MOZ'; + case Myanmar = 'MMR'; + case Namibia = 'NAM'; + case Nauru = 'NRU'; + case Nepal = 'NPL'; + case Netherlands = 'NLD'; + case New_Caledonia = 'NCL'; + case New_Zealand = 'NZL'; + case Nicaragua = 'NIC'; + case Niger = 'NER'; + case Nigeria = 'NGA'; + case Niue = 'NIU'; + case Norfolk_Island = 'NFK'; + case North_Macedonia = 'MKD'; + case Northern_Mariana_Islands = 'MNP'; + case Norway = 'NOR'; + case Oman = 'OMN'; + case Pakistan = 'PAK'; + case Palau = 'PLW'; + case Palestine = 'PSE'; + case Panama = 'PAN'; + case Papua_New_Guinea = 'PNG'; + case Paraguay = 'PRY'; + case Peru = 'PER'; + case Philippines = 'PHL'; + case Pitcairn = 'PCN'; + case Poland = 'POL'; + case Portugal = 'PRT'; + case Puerto_Rico = 'PRI'; + case Qatar = 'QAT'; + case Reunion = 'REU'; + case Romania = 'ROU'; + case Russian_Federation = 'RUS'; + case Rwanda = 'RWA'; + case Saint_Barthelemy = 'BLM'; + case Saint_Helena_Ascension_Tristan_da_Cunha = 'SHN'; + case Saint_Kitts_and_Nevis = 'KNA'; + case Saint_Lucia = 'LCA'; + case Saint_Martin_French_part = 'MAF'; + case Saint_Pierre_and_Miquelon = 'SPM'; + case Saint_Vincent_and_the_Grenadines = 'VCT'; + case Samoa = 'WSM'; + case San_Marino = 'SMR'; + case Sao_Tome_and_Principe = 'STP'; + case Saudi_Arabia = 'SAU'; + case Senegal = 'SEN'; + case Serbia = 'SRB'; + case Seychelles = 'SYC'; + case Sierra_Leone = 'SLE'; + case Singapore = 'SGP'; + case Sint_Maarten_Dutch_part = 'SXM'; + case Slovakia = 'SVK'; + case Slovenia = 'SVN'; + case Solomon_Islands = 'SLB'; + case Somalia = 'SOM'; + case South_Africa = 'ZAF'; + case South_Georgia_South_Sandwich_Islands = 'SGS'; + case South_Sudan = 'SSD'; + case Spain = 'ESP'; + case Sri_Lanka = 'LKA'; + case Sudan = 'SDN'; + case Suriname = 'SUR'; + case Svalbard_Jan_Mayen = 'SJM'; + case Sweden = 'SWE'; + case Switzerland = 'CHE'; + case Syrian_Arab_Republic = 'SYR'; + case Taiwan_Province_of_China = 'TWN'; + case Tajikistan = 'TJK'; + case Tanzania = 'TZA'; + case Thailand = 'THA'; + case Timor_Leste = 'TLS'; + case Togo = 'TGO'; + case Tokelau = 'TKL'; + case Tonga = 'TON'; + case Trinidad_and_Tobago = 'TTO'; + case Tunisia = 'TUN'; + case Turkey = 'TUR'; + case Turkmenistan = 'TKM'; + case Turks_and_Caicos_Islands = 'TCA'; + case Tuvalu = 'TUV'; + case Uganda = 'UGA'; + case Ukraine = 'UKR'; + case United_Arab_Emirates = 'ARE'; + case United_Kingdom = 'GBR'; + case United_States_Outlying_Islands = 'UMI'; + case United_States_of_America = 'USA'; + case Uruguay = 'URY'; + case Uzbekistan = 'UZB'; + case Vanuatu = 'VUT'; + case Venezuela = 'VEN'; + case Viet_Nam = 'VNM'; + case Virgin_Islands_British = 'VGB'; + case Virgin_Islands_U_S = 'VIR'; + case Wallis_and_Futuna = 'WLF'; + case Western_Sahara = 'ESH'; + case Yemen = 'YEM'; + case Zambia = 'ZMB'; + case Zimbabwe = 'ZWE'; + + + + public function getNameInLanguage(LanguageAlpha2|LanguageAlpha3Terminology|LanguageAlpha3Bibliographic|LanguageAlpha3Extensive $language): ?string + { + return $this->toCountryAlpha2()->getNameInLanguage($language); + } + + public function toCountryAlpha2(): mixed + { + return BackedEnum::fromName('x', $this->name); + } +} + +enum LanguageAlpha2: string +{ + case Abkhazian = 'ab'; + case Afar = 'aa'; + case Afrikaans = 'af'; + case Akan = 'ak'; + case Albanian = 'sq'; + case Amharic = 'am'; + case Arabic = 'ar'; + case Aragonese = 'an'; + case Armenian = 'hy'; + case Assamese = 'as'; + case Avaric = 'av'; + case Avestan = 'ae'; + case Aymara = 'ay'; + case Azerbaijani = 'az'; + case Bambara = 'bm'; + case Bashkir = 'ba'; + case Basque = 'eu'; + case Belarusian = 'be'; + case Bengali = 'bn'; + case Bihari_languages = 'bh'; + case Bislama = 'bi'; + case Bokmal_Norwegian_Norwegian_Bokmal = 'nb'; + case Bosnian = 'bs'; + case Breton = 'br'; + case Bulgarian = 'bg'; + case Burmese = 'my'; + case Catalan_Valencian = 'ca'; + case Central_Khmer = 'km'; + case Chamorro = 'ch'; + case Chechen = 'ce'; + case Chichewa_Chewa_Nyanja = 'ny'; + case Chinese = 'zh'; + case Church_Slavic_Old_Slavonic_Church_Slavonic_Old_Bulgarian_Old_Church_Slavonic = 'cu'; + case Chuvash = 'cv'; + case Cornish = 'kw'; + case Corsican = 'co'; + case Cree = 'cr'; + case Croatian = 'hr'; + case Czech = 'cs'; + case Danish = 'da'; + case Divehi_Dhivehi_Maldivian = 'dv'; + case Dutch_Flemish = 'nl'; + case Dzongkha = 'dz'; + case English = 'en'; + case Esperanto = 'eo'; + case Estonian = 'et'; + case Ewe = 'ee'; + case Faroese = 'fo'; + case Fijian = 'fj'; + case Finnish = 'fi'; + case French = 'fr'; + case Fulah = 'ff'; + case Gaelic_Scottish_Gaelic = 'gd'; + case Galician = 'gl'; + case Ganda = 'lg'; + case Georgian = 'ka'; + case German = 'de'; + case Greek_Modern_1453 = 'el'; + case Guarani = 'gn'; + case Gujarati = 'gu'; + case Haitian_Haitian_Creole = 'ht'; + case Hausa = 'ha'; + case Hebrew = 'he'; + case Herero = 'hz'; + case Hindi = 'hi'; + case Hiri_Motu = 'ho'; + case Hungarian = 'hu'; + case Icelandic = 'is'; + case Ido = 'io'; + case Igbo = 'ig'; + case Indonesian = 'id'; + case Interlingua_International_Auxiliary_Language_Association = 'ia'; + case Interlingue_Occidental = 'ie'; + case Inuktitut = 'iu'; + case Inupiaq = 'ik'; + case Irish = 'ga'; + case Italian = 'it'; + case Japanese = 'ja'; + case Javanese = 'jv'; + case Kalaallisut_Greenlandic = 'kl'; + case Kannada = 'kn'; + case Kanuri = 'kr'; + case Kashmiri = 'ks'; + case Kazakh = 'kk'; + case Kikuyu_Gikuyu = 'ki'; + case Kinyarwanda = 'rw'; + case Kirghiz_Kyrgyz = 'ky'; + case Komi = 'kv'; + case Kongo = 'kg'; + case Korean = 'ko'; + case Kuanyama_Kwanyama = 'kj'; + case Kurdish = 'ku'; + case Lao = 'lo'; + case Latin = 'la'; + case Latvian = 'lv'; + case Limburgan_Limburger_Limburgish = 'li'; + case Lingala = 'ln'; + case Lithuanian = 'lt'; + case Luba_Katanga = 'lu'; + case Luxembourgish_Letzeburgesch = 'lb'; + case Macedonian = 'mk'; + case Malagasy = 'mg'; + case Malay = 'ms'; + case Malayalam = 'ml'; + case Maltese = 'mt'; + case Manx = 'gv'; + case Maori = 'mi'; + case Marathi = 'mr'; + case Marshallese = 'mh'; + case Mongolian = 'mn'; + case Nauru = 'na'; + case Navajo_Navaho = 'nv'; + case Ndebele_North_North_Ndebele = 'nd'; + case Ndebele_South_South_Ndebele = 'nr'; + case Ndonga = 'ng'; + case Nepali = 'ne'; + case Northern_Sami = 'se'; + case Norwegian = 'no'; + case Norwegian_Nynorsk_Nynorsk_Norwegian = 'nn'; + case Occitan_post_1500 = 'oc'; + case Ojibwa = 'oj'; + case Oriya = 'or'; + case Oromo = 'om'; + case Ossetian_Ossetic = 'os'; + case Pali = 'pi'; + case Panjabi_Punjabi = 'pa'; + case Persian = 'fa'; + case Polish = 'pl'; + case Portuguese = 'pt'; + case Pushto_Pashto = 'ps'; + case Quechua = 'qu'; + case Romanian_Moldavian_Moldovan = 'ro'; + case Romansh = 'rm'; + case Rundi = 'rn'; + case Russian = 'ru'; + case Samoan = 'sm'; + case Sango = 'sg'; + case Sanskrit = 'sa'; + case Sardinian = 'sc'; + case Serbian = 'sr'; + case Shona = 'sn'; + case Sichuan_Yi_Nuosu = 'ii'; + case Sindhi = 'sd'; + case Sinhala_Sinhalese = 'si'; + case Slovak = 'sk'; + case Slovenian = 'sl'; + case Somali = 'so'; + case Sotho_Southern = 'st'; + case Spanish_Castilian = 'es'; + case Sundanese = 'su'; + case Swahili = 'sw'; + case Swati = 'ss'; + case Swedish = 'sv'; + case Tagalog = 'tl'; + case Tahitian = 'ty'; + case Tajik = 'tg'; + case Tamil = 'ta'; + case Tatar = 'tt'; + case Telugu = 'te'; + case Thai = 'th'; + case Tibetan = 'bo'; + case Tigrinya = 'ti'; + case Tonga_Tonga_Islands = 'to'; + case Tsonga = 'ts'; + case Tswana = 'tn'; + case Turkish = 'tr'; + case Turkmen = 'tk'; + case Twi = 'tw'; + case Uighur_Uyghur = 'ug'; + case Ukrainian = 'uk'; + case Urdu = 'ur'; + case Uzbek = 'uz'; + case Venda = 've'; + case Vietnamese = 'vi'; + case Volapuk = 'vo'; + case Walloon = 'wa'; + case Welsh = 'cy'; + case Western_Frisian = 'fy'; + case Wolof = 'wo'; + case Xhosa = 'xh'; + case Yiddish = 'yi'; + case Yoruba = 'yo'; + case Zhuang_Chuang = 'za'; + case Zulu = 'zu'; + + /** @deprecated Will be removed in v4. Please use ::getNameInLanguage(LanguageAlpha2::English) instead */ + public function toLanguageName(): LanguageName + { + return BackedEnum::fromName(LanguageName::class, $this->name); + } +} + +enum LanguageAlpha3Terminology: string +{ + case Abkhazian = 'abk'; + case Achinese = 'ace'; + case Acoli = 'ach'; + case Adangme = 'ada'; + case Adyghe_Adygei = 'ady'; + case Afar = 'aar'; + case Afrihili = 'afh'; + case Afrikaans = 'afr'; + case Afro_Asiatic_languages = 'afa'; + case Ainu = 'ain'; + case Akan = 'aka'; + case Akkadian = 'akk'; + case Albanian = 'sqi'; + case Aleut = 'ale'; + case Algonquian_languages = 'alg'; + case Altaic_languages = 'tut'; + case Amharic = 'amh'; + case Angika = 'anp'; + case Apache_languages = 'apa'; + case Arabic = 'ara'; + case Aragonese = 'arg'; + case Arapaho = 'arp'; + case Arawak = 'arw'; + case Armenian = 'hye'; + case Aromanian_Arumanian_Macedo_Romanian = 'rup'; + case Artificial_languages = 'art'; + case Assamese = 'asm'; + case Asturian_Bable_Leonese_Asturleonese = 'ast'; + case Athapascan_languages = 'ath'; + case Australian_languages = 'aus'; + case Austronesian_languages = 'map'; + case Avaric = 'ava'; + case Avestan = 'ave'; + case Awadhi = 'awa'; + case Aymara = 'aym'; + case Azerbaijani = 'aze'; + case Balinese = 'ban'; + case Baltic_languages = 'bat'; + case Baluchi = 'bal'; + case Bambara = 'bam'; + case Bamileke_languages = 'bai'; + case Banda_languages = 'bad'; + case Bantu_languages = 'bnt'; + case Basa = 'bas'; + case Bashkir = 'bak'; + case Basque = 'eus'; + case Batak_languages = 'btk'; + case Beja_Bedawiyet = 'bej'; + case Belarusian = 'bel'; + case Bemba = 'bem'; + case Bengali = 'ben'; + case Berber_languages = 'ber'; + case Bhojpuri = 'bho'; + case Bihari_languages = 'bih'; + case Bikol = 'bik'; + case Bini_Edo = 'bin'; + case Bislama = 'bis'; + case Blin_Bilin = 'byn'; + case Blissymbols_Blissymbolics_Bliss = 'zbl'; + case Bokmal_Norwegian_Norwegian_Bokmal = 'nob'; + case Bosnian = 'bos'; + case Braj = 'bra'; + case Breton = 'bre'; + case Buginese = 'bug'; + case Bulgarian = 'bul'; + case Buriat = 'bua'; + case Burmese = 'mya'; + case Caddo = 'cad'; + case Catalan_Valencian = 'cat'; + case Caucasian_languages = 'cau'; + case Cebuano = 'ceb'; + case Celtic_languages = 'cel'; + case Central_American_Indian_languages = 'cai'; + case Central_Khmer = 'khm'; + case Chagatai = 'chg'; + case Chamic_languages = 'cmc'; + case Chamorro = 'cha'; + case Chechen = 'che'; + case Cherokee = 'chr'; + case Cheyenne = 'chy'; + case Chibcha = 'chb'; + case Chichewa_Chewa_Nyanja = 'nya'; + case Chinese = 'zho'; + case Chinook_jargon = 'chn'; + case Chipewyan_Dene_Suline = 'chp'; + case Choctaw = 'cho'; + case Church_Slavic_Old_Slavonic_Church_Slavonic_Old_Bulgarian_Old_Church_Slavonic = 'chu'; + case Chuukese = 'chk'; + case Chuvash = 'chv'; + case Classical_Newari_Old_Newari_Classical_Nepal_Bhasa = 'nwc'; + case Classical_Syriac = 'syc'; + case Coptic = 'cop'; + case Cornish = 'cor'; + case Corsican = 'cos'; + case Cree = 'cre'; + case Creek = 'mus'; + case Creoles_and_pidgins = 'crp'; + case Creoles_and_pidgins_English_based = 'cpe'; + case Creoles_and_pidgins_French_based = 'cpf'; + case Creoles_and_pidgins_Portuguese_based = 'cpp'; + case Crimean_Tatar_Crimean_Turkish = 'crh'; + case Croatian = 'hrv'; + case Cushitic_languages = 'cus'; + case Czech = 'ces'; + case Dakota = 'dak'; + case Danish = 'dan'; + case Dargwa = 'dar'; + case Delaware = 'del'; + case Dinka = 'din'; + case Divehi_Dhivehi_Maldivian = 'div'; + case Dogri = 'doi'; + case Dogrib = 'dgr'; + case Dravidian_languages = 'dra'; + case Duala = 'dua'; + case Dutch_Flemish = 'nld'; + case Dutch_Middle_ca_1050_1350 = 'dum'; + case Dyula = 'dyu'; + case Dzongkha = 'dzo'; + case Eastern_Frisian = 'frs'; + case Efik = 'efi'; + case Egyptian_Ancient = 'egy'; + case Ekajuk = 'eka'; + case Elamite = 'elx'; + case English = 'eng'; + case English_Middle_1100_1500 = 'enm'; + case English_Old_ca_450_1100 = 'ang'; + case Erzya = 'myv'; + case Esperanto = 'epo'; + case Estonian = 'est'; + case Ewe = 'ewe'; + case Ewondo = 'ewo'; + case Fang = 'fan'; + case Fanti = 'fat'; + case Faroese = 'fao'; + case Fijian = 'fij'; + case Filipino_Pilipino = 'fil'; + case Finnish = 'fin'; + case Finno_Ugrian_languages = 'fiu'; + case Fon = 'fon'; + case French = 'fra'; + case French_Middle_ca_1400_1600 = 'frm'; + case French_Old_842_ca_1400 = 'fro'; + case Friulian = 'fur'; + case Fulah = 'ful'; + case Ga = 'gaa'; + case Gaelic_Scottish_Gaelic = 'gla'; + case Galibi_Carib = 'car'; + case Galician = 'glg'; + case Ganda = 'lug'; + case Gayo = 'gay'; + case Gbaya = 'gba'; + case Geez = 'gez'; + case Georgian = 'kat'; + case German = 'deu'; + case German_Middle_High_ca_1050_1500 = 'gmh'; + case German_Old_High_ca_750_1050 = 'goh'; + case Germanic_languages = 'gem'; + case Gilbertese = 'gil'; + case Gondi = 'gon'; + case Gorontalo = 'gor'; + case Gothic = 'got'; + case Grebo = 'grb'; + case Greek_Ancient_to_1453 = 'grc'; + case Greek_Modern_1453 = 'ell'; + case Guarani = 'grn'; + case Gujarati = 'guj'; + case Gwich_in = 'gwi'; + case Haida = 'hai'; + case Haitian_Haitian_Creole = 'hat'; + case Hausa = 'hau'; + case Hawaiian = 'haw'; + case Hebrew = 'heb'; + case Herero = 'her'; + case Hiligaynon = 'hil'; + case Himachali_languages_Western_Pahari_languages = 'him'; + case Hindi = 'hin'; + case Hiri_Motu = 'hmo'; + case Hittite = 'hit'; + case Hmong_Mong = 'hmn'; + case Hungarian = 'hun'; + case Hupa = 'hup'; + case Iban = 'iba'; + case Icelandic = 'isl'; + case Ido = 'ido'; + case Igbo = 'ibo'; + case Ijo_languages = 'ijo'; + case Iloko = 'ilo'; + case Inari_Sami = 'smn'; + case Indic_languages = 'inc'; + case Indo_European_languages = 'ine'; + case Indonesian = 'ind'; + case Ingush = 'inh'; + case Interlingua_International_Auxiliary_Language_Association = 'ina'; + case Interlingue_Occidental = 'ile'; + case Inuktitut = 'iku'; + case Inupiaq = 'ipk'; + case Iranian_languages = 'ira'; + case Irish = 'gle'; + case Irish_Middle_900_1200 = 'mga'; + case Irish_Old_to_900 = 'sga'; + case Iroquoian_languages = 'iro'; + case Italian = 'ita'; + case Japanese = 'jpn'; + case Javanese = 'jav'; + case Judeo_Arabic = 'jrb'; + case Judeo_Persian = 'jpr'; + case Kabardian = 'kbd'; + case Kabyle = 'kab'; + case Kachin_Jingpho = 'kac'; + case Kalaallisut_Greenlandic = 'kal'; + case Kalmyk_Oirat = 'xal'; + case Kamba = 'kam'; + case Kannada = 'kan'; + case Kanuri = 'kau'; + case Kara_Kalpak = 'kaa'; + case Karachay_Balkar = 'krc'; + case Karelian = 'krl'; + case Karen_languages = 'kar'; + case Kashmiri = 'kas'; + case Kashubian = 'csb'; + case Kawi = 'kaw'; + case Kazakh = 'kaz'; + case Khasi = 'kha'; + case Khoisan_languages = 'khi'; + case Khotanese_Sakan = 'kho'; + case Kikuyu_Gikuyu = 'kik'; + case Kimbundu = 'kmb'; + case Kinyarwanda = 'kin'; + case Kirghiz_Kyrgyz = 'kir'; + case Klingon_tlhIngan_Hol = 'tlh'; + case Komi = 'kom'; + case Kongo = 'kon'; + case Konkani = 'kok'; + case Korean = 'kor'; + case Kosraean = 'kos'; + case Kpelle = 'kpe'; + case Kru_languages = 'kro'; + case Kuanyama_Kwanyama = 'kua'; + case Kumyk = 'kum'; + case Kurdish = 'kur'; + case Kurukh = 'kru'; + case Kutenai = 'kut'; + case Ladino = 'lad'; + case Lahnda = 'lah'; + case Lamba = 'lam'; + case Land_Dayak_languages = 'day'; + case Lao = 'lao'; + case Latin = 'lat'; + case Latvian = 'lav'; + case Lezghian = 'lez'; + case Limburgan_Limburger_Limburgish = 'lim'; + case Lingala = 'lin'; + case Lithuanian = 'lit'; + case Lojban = 'jbo'; + case Low_German_Low_Saxon_German_Low_Saxon_Low = 'nds'; + case Lower_Sorbian = 'dsb'; + case Lozi = 'loz'; + case Luba_Katanga = 'lub'; + case Luba_Lulua = 'lua'; + case Luiseno = 'lui'; + case Lule_Sami = 'smj'; + case Lunda = 'lun'; + case Luo_Kenya_and_Tanzania = 'luo'; + case Lushai = 'lus'; + case Luxembourgish_Letzeburgesch = 'ltz'; + case Macedonian = 'mkd'; + case Madurese = 'mad'; + case Magahi = 'mag'; + case Maithili = 'mai'; + case Makasar = 'mak'; + case Malagasy = 'mlg'; + case Malay = 'msa'; + case Malayalam = 'mal'; + case Maltese = 'mlt'; + case Manchu = 'mnc'; + case Mandar = 'mdr'; + case Mandingo = 'man'; + case Manipuri = 'mni'; + case Manobo_languages = 'mno'; + case Manx = 'glv'; + case Maori = 'mri'; + case Mapudungun_Mapuche = 'arn'; + case Marathi = 'mar'; + case Mari = 'chm'; + case Marshallese = 'mah'; + case Marwari = 'mwr'; + case Masai = 'mas'; + case Mayan_languages = 'myn'; + case Mende = 'men'; + case Mi_kmaq_Micmac = 'mic'; + case Minangkabau = 'min'; + case Mirandese = 'mwl'; + case Mohawk = 'moh'; + case Moksha = 'mdf'; + case Mon_Khmer_languages = 'mkh'; + case Mongo = 'lol'; + case Mongolian = 'mon'; + case Montenegrin = 'cnr'; + case Mossi = 'mos'; + case Multiple_languages = 'mul'; + case Munda_languages = 'mun'; + case N_Ko = 'nqo'; + case Nahuatl_languages = 'nah'; + case Nauru = 'nau'; + case Navajo_Navaho = 'nav'; + case Ndebele_North_North_Ndebele = 'nde'; + case Ndebele_South_South_Ndebele = 'nbl'; + case Ndonga = 'ndo'; + case Neapolitan = 'nap'; + case Nepal_Bhasa_Newari = 'new'; + case Nepali = 'nep'; + case Nias = 'nia'; + case Niger_Kordofanian_languages = 'nic'; + case Nilo_Saharan_languages = 'ssa'; + case Niuean = 'niu'; + case No_linguistic_content_Not_applicable = 'zxx'; + case Nogai = 'nog'; + case Norse_Old = 'non'; + case North_American_Indian_languages = 'nai'; + case Northern_Frisian = 'frr'; + case Northern_Sami = 'sme'; + case Norwegian = 'nor'; + case Norwegian_Nynorsk_Nynorsk_Norwegian = 'nno'; + case Nubian_languages = 'nub'; + case Nyamwezi = 'nym'; + case Nyankole = 'nyn'; + case Nyoro = 'nyo'; + case Nzima = 'nzi'; + case Occitan_post_1500 = 'oci'; + case Official_Aramaic_700_300_BCE_Imperial_Aramaic_700_300_BCE = 'arc'; + case Ojibwa = 'oji'; + case Oriya = 'ori'; + case Oromo = 'orm'; + case Osage = 'osa'; + case Ossetian_Ossetic = 'oss'; + case Otomian_languages = 'oto'; + case Pahlavi = 'pal'; + case Palauan = 'pau'; + case Pali = 'pli'; + case Pampanga_Kapampangan = 'pam'; + case Pangasinan = 'pag'; + case Panjabi_Punjabi = 'pan'; + case Papiamento = 'pap'; + case Papuan_languages = 'paa'; + case Pedi_Sepedi_Northern_Sotho = 'nso'; + case Persian = 'fas'; + case Persian_Old_ca_600_400_B_C = 'peo'; + case Philippine_languages = 'phi'; + case Phoenician = 'phn'; + case Pohnpeian = 'pon'; + case Polish = 'pol'; + case Portuguese = 'por'; + case Prakrit_languages = 'pra'; + case Provencal_Old_to_1500_Occitan_Old_to_1500 = 'pro'; + case Pushto_Pashto = 'pus'; + case Quechua = 'que'; + case Rajasthani = 'raj'; + case Rapanui = 'rap'; + case Rarotongan_Cook_Islands_Maori = 'rar'; + case Romance_languages = 'roa'; + case Romanian_Moldavian_Moldovan = 'ron'; + case Romansh = 'roh'; + case Romany = 'rom'; + case Rundi = 'run'; + case Russian = 'rus'; + case Salishan_languages = 'sal'; + case Samaritan_Aramaic = 'sam'; + case Sami_languages = 'smi'; + case Samoan = 'smo'; + case Sandawe = 'sad'; + case Sango = 'sag'; + case Sanskrit = 'san'; + case Santali = 'sat'; + case Sardinian = 'srd'; + case Sasak = 'sas'; + case Scots = 'sco'; + case Selkup = 'sel'; + case Semitic_languages = 'sem'; + case Serbian = 'srp'; + case Serer = 'srr'; + case Shan = 'shn'; + case Shona = 'sna'; + case Sichuan_Yi_Nuosu = 'iii'; + case Sicilian = 'scn'; + case Sidamo = 'sid'; + case Sign_Languages = 'sgn'; + case Siksika = 'bla'; + case Sindhi = 'snd'; + case Sinhala_Sinhalese = 'sin'; + case Sino_Tibetan_languages = 'sit'; + case Siouan_languages = 'sio'; + case Skolt_Sami = 'sms'; + case Slave_Athapascan = 'den'; + case Slavic_languages = 'sla'; + case Slovak = 'slk'; + case Slovenian = 'slv'; + case Sogdian = 'sog'; + case Somali = 'som'; + case Songhai_languages = 'son'; + case Soninke = 'snk'; + case Sorbian_languages = 'wen'; + case Sotho_Southern = 'sot'; + case South_American_Indian_languages = 'sai'; + case Southern_Altai = 'alt'; + case Southern_Sami = 'sma'; + case Spanish_Castilian = 'spa'; + case Sranan_Tongo = 'srn'; + case Standard_Moroccan_Tamazight = 'zgh'; + case Sukuma = 'suk'; + case Sumerian = 'sux'; + case Sundanese = 'sun'; + case Susu = 'sus'; + case Swahili = 'swa'; + case Swati = 'ssw'; + case Swedish = 'swe'; + case Swiss_German_Alemannic_Alsatian = 'gsw'; + case Syriac = 'syr'; + case Tagalog = 'tgl'; + case Tahitian = 'tah'; + case Tai_languages = 'tai'; + case Tajik = 'tgk'; + case Tamashek = 'tmh'; + case Tamil = 'tam'; + case Tatar = 'tat'; + case Telugu = 'tel'; + case Tereno = 'ter'; + case Tetum = 'tet'; + case Thai = 'tha'; + case Tibetan = 'bod'; + case Tigre = 'tig'; + case Tigrinya = 'tir'; + case Timne = 'tem'; + case Tiv = 'tiv'; + case Tlingit = 'tli'; + case Tok_Pisin = 'tpi'; + case Tokelau = 'tkl'; + case Tonga_Nyasa = 'tog'; + case Tonga_Tonga_Islands = 'ton'; + case Tsimshian = 'tsi'; + case Tsonga = 'tso'; + case Tswana = 'tsn'; + case Tumbuka = 'tum'; + case Tupi_languages = 'tup'; + case Turkish = 'tur'; + case Turkish_Ottoman_1500_1928 = 'ota'; + case Turkmen = 'tuk'; + case Tuvalu = 'tvl'; + case Tuvinian = 'tyv'; + case Twi = 'twi'; + case Udmurt = 'udm'; + case Ugaritic = 'uga'; + case Uighur_Uyghur = 'uig'; + case Ukrainian = 'ukr'; + case Umbundu = 'umb'; + case Uncoded_languages = 'mis'; + case Undetermined = 'und'; + case Upper_Sorbian = 'hsb'; + case Urdu = 'urd'; + case Uzbek = 'uzb'; + case Vai = 'vai'; + case Venda = 'ven'; + case Vietnamese = 'vie'; + case Volapuk = 'vol'; + case Votic = 'vot'; + case Wakashan_languages = 'wak'; + case Walloon = 'wln'; + case Waray = 'war'; + case Washo = 'was'; + case Welsh = 'cym'; + case Western_Frisian = 'fry'; + case Wolaitta_Wolaytta = 'wal'; + case Wolof = 'wol'; + case Xhosa = 'xho'; + case Yakut = 'sah'; + case Yao = 'yao'; + case Yapese = 'yap'; + case Yiddish = 'yid'; + case Yoruba = 'yor'; + case Yupik_languages = 'ypk'; + case Zande_languages = 'znd'; + case Zapotec = 'zap'; + case Zaza_Dimili_Dimli_Kirdki_Kirmanjki_Zazaki = 'zza'; + case Zenaga = 'zen'; + case Zhuang_Chuang = 'zha'; + case Zulu = 'zul'; + case Zuni = 'zun'; +} + + +enum LanguageAlpha3Bibliographic: string +{ + case Abkhazian = 'abk'; + case Achinese = 'ace'; + case Acoli = 'ach'; + case Adangme = 'ada'; + case Adyghe_Adygei = 'ady'; + case Afar = 'aar'; + case Afrihili = 'afh'; + case Afrikaans = 'afr'; + case Afro_Asiatic_languages = 'afa'; + case Ainu = 'ain'; + case Akan = 'aka'; + case Akkadian = 'akk'; + case Albanian = 'alb'; + case Aleut = 'ale'; + case Algonquian_languages = 'alg'; + case Altaic_languages = 'tut'; + case Amharic = 'amh'; + case Angika = 'anp'; + case Apache_languages = 'apa'; + case Arabic = 'ara'; + case Aragonese = 'arg'; + case Arapaho = 'arp'; + case Arawak = 'arw'; + case Armenian = 'arm'; + case Aromanian_Arumanian_Macedo_Romanian = 'rup'; + case Artificial_languages = 'art'; + case Assamese = 'asm'; + case Asturian_Bable_Leonese_Asturleonese = 'ast'; + case Athapascan_languages = 'ath'; + case Australian_languages = 'aus'; + case Austronesian_languages = 'map'; + case Avaric = 'ava'; + case Avestan = 'ave'; + case Awadhi = 'awa'; + case Aymara = 'aym'; + case Azerbaijani = 'aze'; + case Balinese = 'ban'; + case Baltic_languages = 'bat'; + case Baluchi = 'bal'; + case Bambara = 'bam'; + case Bamileke_languages = 'bai'; + case Banda_languages = 'bad'; + case Bantu_languages = 'bnt'; + case Basa = 'bas'; + case Bashkir = 'bak'; + case Basque = 'baq'; + case Batak_languages = 'btk'; + case Beja_Bedawiyet = 'bej'; + case Belarusian = 'bel'; + case Bemba = 'bem'; + case Bengali = 'ben'; + case Berber_languages = 'ber'; + case Bhojpuri = 'bho'; + case Bihari_languages = 'bih'; + case Bikol = 'bik'; + case Bini_Edo = 'bin'; + case Bislama = 'bis'; + case Blin_Bilin = 'byn'; + case Blissymbols_Blissymbolics_Bliss = 'zbl'; + case Bokmal_Norwegian_Norwegian_Bokmal = 'nob'; + case Bosnian = 'bos'; + case Braj = 'bra'; + case Breton = 'bre'; + case Buginese = 'bug'; + case Bulgarian = 'bul'; + case Buriat = 'bua'; + case Burmese = 'bur'; + case Caddo = 'cad'; + case Catalan_Valencian = 'cat'; + case Caucasian_languages = 'cau'; + case Cebuano = 'ceb'; + case Celtic_languages = 'cel'; + case Central_American_Indian_languages = 'cai'; + case Central_Khmer = 'khm'; + case Chagatai = 'chg'; + case Chamic_languages = 'cmc'; + case Chamorro = 'cha'; + case Chechen = 'che'; + case Cherokee = 'chr'; + case Cheyenne = 'chy'; + case Chibcha = 'chb'; + case Chichewa_Chewa_Nyanja = 'nya'; + case Chinese = 'chi'; + case Chinook_jargon = 'chn'; + case Chipewyan_Dene_Suline = 'chp'; + case Choctaw = 'cho'; + case Church_Slavic_Old_Slavonic_Church_Slavonic_Old_Bulgarian_Old_Church_Slavonic = 'chu'; + case Chuukese = 'chk'; + case Chuvash = 'chv'; + case Classical_Newari_Old_Newari_Classical_Nepal_Bhasa = 'nwc'; + case Classical_Syriac = 'syc'; + case Coptic = 'cop'; + case Cornish = 'cor'; + case Corsican = 'cos'; + case Cree = 'cre'; + case Creek = 'mus'; + case Creoles_and_pidgins = 'crp'; + case Creoles_and_pidgins_English_based = 'cpe'; + case Creoles_and_pidgins_French_based = 'cpf'; + case Creoles_and_pidgins_Portuguese_based = 'cpp'; + case Crimean_Tatar_Crimean_Turkish = 'crh'; + case Croatian = 'hrv'; + case Cushitic_languages = 'cus'; + case Czech = 'cze'; + case Dakota = 'dak'; + case Danish = 'dan'; + case Dargwa = 'dar'; + case Delaware = 'del'; + case Dinka = 'din'; + case Divehi_Dhivehi_Maldivian = 'div'; + case Dogri = 'doi'; + case Dogrib = 'dgr'; + case Dravidian_languages = 'dra'; + case Duala = 'dua'; + case Dutch_Flemish = 'dut'; + case Dutch_Middle_ca_1050_1350 = 'dum'; + case Dyula = 'dyu'; + case Dzongkha = 'dzo'; + case Eastern_Frisian = 'frs'; + case Efik = 'efi'; + case Egyptian_Ancient = 'egy'; + case Ekajuk = 'eka'; + case Elamite = 'elx'; + case English = 'eng'; + case English_Middle_1100_1500 = 'enm'; + case English_Old_ca_450_1100 = 'ang'; + case Erzya = 'myv'; + case Esperanto = 'epo'; + case Estonian = 'est'; + case Ewe = 'ewe'; + case Ewondo = 'ewo'; + case Fang = 'fan'; + case Fanti = 'fat'; + case Faroese = 'fao'; + case Fijian = 'fij'; + case Filipino_Pilipino = 'fil'; + case Finnish = 'fin'; + case Finno_Ugrian_languages = 'fiu'; + case Fon = 'fon'; + case French = 'fre'; + case French_Middle_ca_1400_1600 = 'frm'; + case French_Old_842_ca_1400 = 'fro'; + case Friulian = 'fur'; + case Fulah = 'ful'; + case Ga = 'gaa'; + case Gaelic_Scottish_Gaelic = 'gla'; + case Galibi_Carib = 'car'; + case Galician = 'glg'; + case Ganda = 'lug'; + case Gayo = 'gay'; + case Gbaya = 'gba'; + case Geez = 'gez'; + case Georgian = 'geo'; + case German = 'ger'; + case German_Middle_High_ca_1050_1500 = 'gmh'; + case German_Old_High_ca_750_1050 = 'goh'; + case Germanic_languages = 'gem'; + case Gilbertese = 'gil'; + case Gondi = 'gon'; + case Gorontalo = 'gor'; + case Gothic = 'got'; + case Grebo = 'grb'; + case Greek_Ancient_to_1453 = 'grc'; + case Greek_Modern_1453 = 'gre'; + case Guarani = 'grn'; + case Gujarati = 'guj'; + case Gwich_in = 'gwi'; + case Haida = 'hai'; + case Haitian_Haitian_Creole = 'hat'; + case Hausa = 'hau'; + case Hawaiian = 'haw'; + case Hebrew = 'heb'; + case Herero = 'her'; + case Hiligaynon = 'hil'; + case Himachali_languages_Western_Pahari_languages = 'him'; + case Hindi = 'hin'; + case Hiri_Motu = 'hmo'; + case Hittite = 'hit'; + case Hmong_Mong = 'hmn'; + case Hungarian = 'hun'; + case Hupa = 'hup'; + case Iban = 'iba'; + case Icelandic = 'ice'; + case Ido = 'ido'; + case Igbo = 'ibo'; + case Ijo_languages = 'ijo'; + case Iloko = 'ilo'; + case Inari_Sami = 'smn'; + case Indic_languages = 'inc'; + case Indo_European_languages = 'ine'; + case Indonesian = 'ind'; + case Ingush = 'inh'; + case Interlingua_International_Auxiliary_Language_Association = 'ina'; + case Interlingue_Occidental = 'ile'; + case Inuktitut = 'iku'; + case Inupiaq = 'ipk'; + case Iranian_languages = 'ira'; + case Irish = 'gle'; + case Irish_Middle_900_1200 = 'mga'; + case Irish_Old_to_900 = 'sga'; + case Iroquoian_languages = 'iro'; + case Italian = 'ita'; + case Japanese = 'jpn'; + case Javanese = 'jav'; + case Judeo_Arabic = 'jrb'; + case Judeo_Persian = 'jpr'; + case Kabardian = 'kbd'; + case Kabyle = 'kab'; + case Kachin_Jingpho = 'kac'; + case Kalaallisut_Greenlandic = 'kal'; + case Kalmyk_Oirat = 'xal'; + case Kamba = 'kam'; + case Kannada = 'kan'; + case Kanuri = 'kau'; + case Kara_Kalpak = 'kaa'; + case Karachay_Balkar = 'krc'; + case Karelian = 'krl'; + case Karen_languages = 'kar'; + case Kashmiri = 'kas'; + case Kashubian = 'csb'; + case Kawi = 'kaw'; + case Kazakh = 'kaz'; + case Khasi = 'kha'; + case Khoisan_languages = 'khi'; + case Khotanese_Sakan = 'kho'; + case Kikuyu_Gikuyu = 'kik'; + case Kimbundu = 'kmb'; + case Kinyarwanda = 'kin'; + case Kirghiz_Kyrgyz = 'kir'; + case Klingon_tlhIngan_Hol = 'tlh'; + case Komi = 'kom'; + case Kongo = 'kon'; + case Konkani = 'kok'; + case Korean = 'kor'; + case Kosraean = 'kos'; + case Kpelle = 'kpe'; + case Kru_languages = 'kro'; + case Kuanyama_Kwanyama = 'kua'; + case Kumyk = 'kum'; + case Kurdish = 'kur'; + case Kurukh = 'kru'; + case Kutenai = 'kut'; + case Ladino = 'lad'; + case Lahnda = 'lah'; + case Lamba = 'lam'; + case Land_Dayak_languages = 'day'; + case Lao = 'lao'; + case Latin = 'lat'; + case Latvian = 'lav'; + case Lezghian = 'lez'; + case Limburgan_Limburger_Limburgish = 'lim'; + case Lingala = 'lin'; + case Lithuanian = 'lit'; + case Lojban = 'jbo'; + case Low_German_Low_Saxon_German_Low_Saxon_Low = 'nds'; + case Lower_Sorbian = 'dsb'; + case Lozi = 'loz'; + case Luba_Katanga = 'lub'; + case Luba_Lulua = 'lua'; + case Luiseno = 'lui'; + case Lule_Sami = 'smj'; + case Lunda = 'lun'; + case Luo_Kenya_and_Tanzania = 'luo'; + case Lushai = 'lus'; + case Luxembourgish_Letzeburgesch = 'ltz'; + case Macedonian = 'mac'; + case Madurese = 'mad'; + case Magahi = 'mag'; + case Maithili = 'mai'; + case Makasar = 'mak'; + case Malagasy = 'mlg'; + case Malay = 'may'; + case Malayalam = 'mal'; + case Maltese = 'mlt'; + case Manchu = 'mnc'; + case Mandar = 'mdr'; + case Mandingo = 'man'; + case Manipuri = 'mni'; + case Manobo_languages = 'mno'; + case Manx = 'glv'; + case Maori = 'mao'; + case Mapudungun_Mapuche = 'arn'; + case Marathi = 'mar'; + case Mari = 'chm'; + case Marshallese = 'mah'; + case Marwari = 'mwr'; + case Masai = 'mas'; + case Mayan_languages = 'myn'; + case Mende = 'men'; + case Mi_kmaq_Micmac = 'mic'; + case Minangkabau = 'min'; + case Mirandese = 'mwl'; + case Mohawk = 'moh'; + case Moksha = 'mdf'; + case Mon_Khmer_languages = 'mkh'; + case Mongo = 'lol'; + case Mongolian = 'mon'; + case Montenegrin = 'cnr'; + case Mossi = 'mos'; + case Multiple_languages = 'mul'; + case Munda_languages = 'mun'; + case N_Ko = 'nqo'; + case Nahuatl_languages = 'nah'; + case Nauru = 'nau'; + case Navajo_Navaho = 'nav'; + case Ndebele_North_North_Ndebele = 'nde'; + case Ndebele_South_South_Ndebele = 'nbl'; + case Ndonga = 'ndo'; + case Neapolitan = 'nap'; + case Nepal_Bhasa_Newari = 'new'; + case Nepali = 'nep'; + case Nias = 'nia'; + case Niger_Kordofanian_languages = 'nic'; + case Nilo_Saharan_languages = 'ssa'; + case Niuean = 'niu'; + case No_linguistic_content_Not_applicable = 'zxx'; + case Nogai = 'nog'; + case Norse_Old = 'non'; + case North_American_Indian_languages = 'nai'; + case Northern_Frisian = 'frr'; + case Northern_Sami = 'sme'; + case Norwegian = 'nor'; + case Norwegian_Nynorsk_Nynorsk_Norwegian = 'nno'; + case Nubian_languages = 'nub'; + case Nyamwezi = 'nym'; + case Nyankole = 'nyn'; + case Nyoro = 'nyo'; + case Nzima = 'nzi'; + case Occitan_post_1500 = 'oci'; + case Official_Aramaic_700_300_BCE_Imperial_Aramaic_700_300_BCE = 'arc'; + case Ojibwa = 'oji'; + case Oriya = 'ori'; + case Oromo = 'orm'; + case Osage = 'osa'; + case Ossetian_Ossetic = 'oss'; + case Otomian_languages = 'oto'; + case Pahlavi = 'pal'; + case Palauan = 'pau'; + case Pali = 'pli'; + case Pampanga_Kapampangan = 'pam'; + case Pangasinan = 'pag'; + case Panjabi_Punjabi = 'pan'; + case Papiamento = 'pap'; + case Papuan_languages = 'paa'; + case Pedi_Sepedi_Northern_Sotho = 'nso'; + case Persian = 'per'; + case Persian_Old_ca_600_400_B_C = 'peo'; + case Philippine_languages = 'phi'; + case Phoenician = 'phn'; + case Pohnpeian = 'pon'; + case Polish = 'pol'; + case Portuguese = 'por'; + case Prakrit_languages = 'pra'; + case Provencal_Old_to_1500_Occitan_Old_to_1500 = 'pro'; + case Pushto_Pashto = 'pus'; + case Quechua = 'que'; + case Rajasthani = 'raj'; + case Rapanui = 'rap'; + case Rarotongan_Cook_Islands_Maori = 'rar'; + case Romance_languages = 'roa'; + case Romanian_Moldavian_Moldovan = 'rum'; + case Romansh = 'roh'; + case Romany = 'rom'; + case Rundi = 'run'; + case Russian = 'rus'; + case Salishan_languages = 'sal'; + case Samaritan_Aramaic = 'sam'; + case Sami_languages = 'smi'; + case Samoan = 'smo'; + case Sandawe = 'sad'; + case Sango = 'sag'; + case Sanskrit = 'san'; + case Santali = 'sat'; + case Sardinian = 'srd'; + case Sasak = 'sas'; + case Scots = 'sco'; + case Selkup = 'sel'; + case Semitic_languages = 'sem'; + case Serbian = 'srp'; + case Serer = 'srr'; + case Shan = 'shn'; + case Shona = 'sna'; + case Sichuan_Yi_Nuosu = 'iii'; + case Sicilian = 'scn'; + case Sidamo = 'sid'; + case Sign_Languages = 'sgn'; + case Siksika = 'bla'; + case Sindhi = 'snd'; + case Sinhala_Sinhalese = 'sin'; + case Sino_Tibetan_languages = 'sit'; + case Siouan_languages = 'sio'; + case Skolt_Sami = 'sms'; + case Slave_Athapascan = 'den'; + case Slavic_languages = 'sla'; + case Slovak = 'slo'; + case Slovenian = 'slv'; + case Sogdian = 'sog'; + case Somali = 'som'; + case Songhai_languages = 'son'; + case Soninke = 'snk'; + case Sorbian_languages = 'wen'; + case Sotho_Southern = 'sot'; + case South_American_Indian_languages = 'sai'; + case Southern_Altai = 'alt'; + case Southern_Sami = 'sma'; + case Spanish_Castilian = 'spa'; + case Sranan_Tongo = 'srn'; + case Standard_Moroccan_Tamazight = 'zgh'; + case Sukuma = 'suk'; + case Sumerian = 'sux'; + case Sundanese = 'sun'; + case Susu = 'sus'; + case Swahili = 'swa'; + case Swati = 'ssw'; + case Swedish = 'swe'; + case Swiss_German_Alemannic_Alsatian = 'gsw'; + case Syriac = 'syr'; + case Tagalog = 'tgl'; + case Tahitian = 'tah'; + case Tai_languages = 'tai'; + case Tajik = 'tgk'; + case Tamashek = 'tmh'; + case Tamil = 'tam'; + case Tatar = 'tat'; + case Telugu = 'tel'; + case Tereno = 'ter'; + case Tetum = 'tet'; + case Thai = 'tha'; + case Tibetan = 'tib'; + case Tigre = 'tig'; + case Tigrinya = 'tir'; + case Timne = 'tem'; + case Tiv = 'tiv'; + case Tlingit = 'tli'; + case Tok_Pisin = 'tpi'; + case Tokelau = 'tkl'; + case Tonga_Nyasa = 'tog'; + case Tonga_Tonga_Islands = 'ton'; + case Tsimshian = 'tsi'; + case Tsonga = 'tso'; + case Tswana = 'tsn'; + case Tumbuka = 'tum'; + case Tupi_languages = 'tup'; + case Turkish = 'tur'; + case Turkish_Ottoman_1500_1928 = 'ota'; + case Turkmen = 'tuk'; + case Tuvalu = 'tvl'; + case Tuvinian = 'tyv'; + case Twi = 'twi'; + case Udmurt = 'udm'; + case Ugaritic = 'uga'; + case Uighur_Uyghur = 'uig'; + case Ukrainian = 'ukr'; + case Umbundu = 'umb'; + case Uncoded_languages = 'mis'; + case Undetermined = 'und'; + case Upper_Sorbian = 'hsb'; + case Urdu = 'urd'; + case Uzbek = 'uzb'; + case Vai = 'vai'; + case Venda = 'ven'; + case Vietnamese = 'vie'; + case Volapuk = 'vol'; + case Votic = 'vot'; + case Wakashan_languages = 'wak'; + case Walloon = 'wln'; + case Waray = 'war'; + case Washo = 'was'; + case Welsh = 'wel'; + case Western_Frisian = 'fry'; + case Wolaitta_Wolaytta = 'wal'; + case Wolof = 'wol'; + case Xhosa = 'xho'; + case Yakut = 'sah'; + case Yao = 'yao'; + case Yapese = 'yap'; + case Yiddish = 'yid'; + case Yoruba = 'yor'; + case Yupik_languages = 'ypk'; + case Zande_languages = 'znd'; + case Zapotec = 'zap'; + case Zaza_Dimili_Dimli_Kirdki_Kirmanjki_Zazaki = 'zza'; + case Zenaga = 'zen'; + case Zhuang_Chuang = 'zha'; + case Zulu = 'zul'; + case Zuni = 'zun'; + +} + + +enum LanguageAlpha3Extensive: string +{ + case Ghotuo = 'aaa'; + case Alumu_Tesu = 'aab'; + case Ari = 'aac'; + case Amal = 'aad'; + case Arbereshe_Albanian = 'aae'; + case Aranadan = 'aaf'; + case Ambrak = 'aag'; + case Abu_Arapesh = 'aah'; + case Arifama_Miniafia = 'aai'; + case Ankave = 'aak'; + case Afade = 'aal'; + case Anambe = 'aan'; + case Algerian_Saharan_Arabic = 'aao'; + case Para_Arara = 'aap'; + case Eastern_Abnaki = 'aaq'; + case Afar = 'aar'; + case Aasax = 'aas'; + case Arvanitika_Albanian = 'aat'; + case Abau = 'aau'; + case Solong = 'aaw'; + case Mandobo_Atas = 'aax'; + case Amarasi = 'aaz'; + case Abe = 'aba'; + case Bankon = 'abb'; + case Ambala_Ayta = 'abc'; + case Manide = 'abd'; + case Western_Abnaki = 'abe'; + case Abai_Sungai = 'abf'; + case Abaga = 'abg'; + case Tajiki_Arabic = 'abh'; + case Abidji = 'abi'; + case Aka_Bea = 'abj'; + case Abkhazian = 'abk'; + case Lampung_Nyo = 'abl'; + case Abanyom = 'abm'; + case Abua = 'abn'; + case Abon = 'abo'; + case Abellen_Ayta = 'abp'; + case Abaza = 'abq'; + case Abron = 'abr'; + case Ambonese_Malay = 'abs'; + case Ambulas = 'abt'; + case Abure = 'abu'; + case Baharna_Arabic = 'abv'; + case Pal = 'abw'; + case Inabaknon = 'abx'; + case Aneme_Wake = 'aby'; + case Abui = 'abz'; + case Achagua = 'aca'; + case Anca = 'acb'; + case Gikyode = 'acd'; + case Achinese = 'ace'; + case Saint_Lucian_Creole_French = 'acf'; + case Acoli = 'ach'; + case Aka_Cari = 'aci'; + case Aka_Kora = 'ack'; + case Akar_Bale = 'acl'; + case Mesopotamian_Arabic = 'acm'; + case Achang = 'acn'; + case Eastern_Acipa = 'acp'; + case Ta_izzi_Adeni_Arabic = 'acq'; + case Achi = 'acr'; + case Acroa = 'acs'; + case Achterhoeks = 'act'; + case Achuar_Shiwiar = 'acu'; + case Achumawi = 'acv'; + case Hijazi_Arabic = 'acw'; + case Omani_Arabic = 'acx'; + case Cypriot_Arabic = 'acy'; + case Acheron = 'acz'; + case Adangme = 'ada'; + case Atauran = 'adb'; + case Lidzonka = 'add'; + case Adele = 'ade'; + case Dhofari_Arabic = 'adf'; + case Andegerebinha = 'adg'; + case Adhola = 'adh'; + case Adi = 'adi'; + case Adioukrou = 'adj'; + case Galo = 'adl'; + case Adang = 'adn'; + case Abu = 'ado'; + case Adangbe = 'adq'; + case Adonara = 'adr'; + case Adamorobe_Sign_Language = 'ads'; + case Adnyamathanha = 'adt'; + case Aduge = 'adu'; + case Amundava = 'adw'; + case Amdo_Tibetan = 'adx'; + case Adyghe = 'ady'; + case Adzera = 'adz'; + case Areba = 'aea'; + case Tunisian_Arabic = 'aeb'; + case Saidi_Arabic = 'aec'; + case Argentine_Sign_Language = 'aed'; + case Northeast_Pashai = 'aee'; + case Haeke = 'aek'; + case Ambele = 'ael'; + case Arem = 'aem'; + case Armenian_Sign_Language = 'aen'; + case Aer = 'aeq'; + case Eastern_Arrernte = 'aer'; + case Alsea = 'aes'; + case Akeu = 'aeu'; + case Ambakich = 'aew'; + case Amele = 'aey'; + case Aeka = 'aez'; + case Gulf_Arabic = 'afb'; + case Andai = 'afd'; + case Putukwam = 'afe'; + case Afghan_Sign_Language = 'afg'; + case Afrihili = 'afh'; + case Akrukay = 'afi'; + case Nanubae = 'afk'; + case Defaka = 'afn'; + case Eloyi = 'afo'; + case Tapei = 'afp'; + case Afrikaans = 'afr'; + case Afro_Seminole_Creole = 'afs'; + case Afitti = 'aft'; + case Awutu = 'afu'; + case Obokuitai = 'afz'; + case Aguano = 'aga'; + case Legbo = 'agb'; + case Agatu = 'agc'; + case Agarabi = 'agd'; + case Angal = 'age'; + case Arguni = 'agf'; + case Angor = 'agg'; + case Ngelima = 'agh'; + case Agariya = 'agi'; + case Argobba = 'agj'; + case Isarog_Agta = 'agk'; + case Fembe = 'agl'; + case Angaataha = 'agm'; + case Agutaynen = 'agn'; + case Tainae = 'ago'; + case Aghem = 'agq'; + case Aguaruna = 'agr'; + case Esimbi = 'ags'; + case Central_Cagayan_Agta = 'agt'; + case Aguacateco = 'agu'; + case Remontado_Dumagat = 'agv'; + case Kahua = 'agw'; + case Aghul = 'agx'; + case Southern_Alta = 'agy'; + case Mt_Iriga_Agta = 'agz'; + case Ahanta = 'aha'; + case Axamb = 'ahb'; + case Qimant = 'ahg'; + case Aghu = 'ahh'; + case Tiagbamrin_Aizi = 'ahi'; + case Akha = 'ahk'; + case Igo = 'ahl'; + case Mobumrin_Aizi = 'ahm'; + case Ahan = 'ahn'; + case Ahom = 'aho'; + case Aproumu_Aizi = 'ahp'; + case Ahirani = 'ahr'; + case Ashe = 'ahs'; + case Ahtena = 'aht'; + case Arosi = 'aia'; + case Ainu_China = 'aib'; + case Ainbai = 'aic'; + case Alngith = 'aid'; + case Amara = 'aie'; + case Agi = 'aif'; + case Antigua_and_Barbuda_Creole_English = 'aig'; + case Ai_Cham = 'aih'; + case Assyrian_Neo_Aramaic = 'aii'; + case Lishanid_Noshan = 'aij'; + case Ake = 'aik'; + case Aimele = 'ail'; + case Aimol = 'aim'; + case Ainu_Japan = 'ain'; + case Aiton = 'aio'; + case Burumakok = 'aip'; + case Aimaq = 'aiq'; + case Airoran = 'air'; + case Arikem = 'ait'; + case Aari = 'aiw'; + case Aighon = 'aix'; + case Ali = 'aiy'; + case Aja_South_Sudan = 'aja'; + case Aja_Benin = 'ajg'; + case Ajie = 'aji'; + case Andajin = 'ajn'; + case Algerian_Jewish_Sign_Language = 'ajs'; + case Judeo_Moroccan_Arabic = 'aju'; + case Ajawa = 'ajw'; + case Amri_Karbi = 'ajz'; + case Akan = 'aka'; + case Batak_Angkola = 'akb'; + case Mpur = 'akc'; + case Ukpet_Ehom = 'akd'; + case Akawaio = 'ake'; + case Akpa = 'akf'; + case Anakalangu = 'akg'; + case Angal_Heneng = 'akh'; + case Aiome = 'aki'; + case Aka_Jeru = 'akj'; + case Akkadian = 'akk'; + case Aklanon = 'akl'; + case Aka_Bo = 'akm'; + case Akurio = 'ako'; + case Siwu = 'akp'; + case Ak = 'akq'; + case Araki = 'akr'; + case Akaselem = 'aks'; + case Akolet = 'akt'; + case Akum = 'aku'; + case Akhvakh = 'akv'; + case Akwa = 'akw'; + case Aka_Kede = 'akx'; + case Aka_Kol = 'aky'; + case Alabama = 'akz'; + case Alago = 'ala'; + case Qawasqar = 'alc'; + case Alladian = 'ald'; + case Aleut = 'ale'; + case Alege = 'alf'; + case Alawa = 'alh'; + case Amaimon = 'ali'; + case Alangan = 'alj'; + case Alak = 'alk'; + case Allar = 'all'; + case Amblong = 'alm'; + case Gheg_Albanian = 'aln'; + case Larike_Wakasihu = 'alo'; + case Alune = 'alp'; + case Algonquin = 'alq'; + case Alutor = 'alr'; + case Tosk_Albanian = 'als'; + case Southern_Altai = 'alt'; + case Are_are = 'alu'; + case Alaba_K_abeena = 'alw'; + case Amol = 'alx'; + case Alyawarr = 'aly'; + case Alur = 'alz'; + case Amanaye = 'ama'; + case Ambo = 'amb'; + case Amahuaca = 'amc'; + case Yanesha = 'ame'; + case Hamer_Banna = 'amf'; + case Amurdak = 'amg'; + case Amharic = 'amh'; + case Amis = 'ami'; + case Amdang = 'amj'; + case Ambai = 'amk'; + case War_Jaintia = 'aml'; + case Ama_Papua_New_Guinea = 'amm'; + case Amanab = 'amn'; + case Amo = 'amo'; + case Alamblak = 'amp'; + case Amahai = 'amq'; + case Amarakaeri = 'amr'; + case Southern_Amami_Oshima = 'ams'; + case Amto = 'amt'; + case Guerrero_Amuzgo = 'amu'; + case Ambelau = 'amv'; + case Western_Neo_Aramaic = 'amw'; + case Anmatyerre = 'amx'; + case Ami = 'amy'; + case Atampaya = 'amz'; + case Andaqui = 'ana'; + case Andoa = 'anb'; + case Ngas = 'anc'; + case Ansus = 'and'; + case Xaracuu = 'ane'; + case Animere = 'anf'; + case Old_English_ca_450_1100 = 'ang'; + case Nend = 'anh'; + case Andi = 'ani'; + case Anor = 'anj'; + case Goemai = 'ank'; + case Anu_Hkongso_Chin = 'anl'; + case Anal = 'anm'; + case Obolo = 'ann'; + case Andoque = 'ano'; + case Angika = 'anp'; + case Jarawa_India = 'anq'; + case Andh = 'anr'; + case Anserma = 'ans'; + case Antakarinya = 'ant'; + case Anuak = 'anu'; + case Denya = 'anv'; + case Anaang = 'anw'; + case Andra_Hus = 'anx'; + case Anyin = 'any'; + case Anem = 'anz'; + case Angolar = 'aoa'; + case Abom = 'aob'; + case Pemon = 'aoc'; + case Andarum = 'aod'; + case Angal_Enen = 'aoe'; + case Bragat = 'aof'; + case Angoram = 'aog'; + case Anindilyakwa = 'aoi'; + case Mufian = 'aoj'; + case Arho = 'aok'; + case Alor = 'aol'; + case Omie = 'aom'; + case Bumbita_Arapesh = 'aon'; + case Aore = 'aor'; + case Taikat = 'aos'; + case Atong_India = 'aot'; + case A_ou = 'aou'; + case Atorada = 'aox'; + case Uab_Meto = 'aoz'; + case Sa_a = 'apb'; + case Levantine_Arabic = 'apc'; + case Sudanese_Arabic = 'apd'; + case Bukiyip = 'ape'; + case Pahanan_Agta = 'apf'; + case Ampanang = 'apg'; + case Athpariya = 'aph'; + case Apiaka = 'api'; + case Jicarilla_Apache = 'apj'; + case Kiowa_Apache = 'apk'; + case Lipan_Apache = 'apl'; + case Mescalero_Chiricahua_Apache = 'apm'; + case Apinaye = 'apn'; + case Ambul = 'apo'; + case Apma = 'app'; + case A_Pucikwar = 'apq'; + case Arop_Lokep = 'apr'; + case Arop_Sissano = 'aps'; + case Apatani = 'apt'; + case Apurina = 'apu'; + case Alapmunte = 'apv'; + case Western_Apache = 'apw'; + case Aputai = 'apx'; + case Apalai = 'apy'; + case Safeyoka = 'apz'; + case Archi = 'aqc'; + case Ampari_Dogon = 'aqd'; + case Arigidi = 'aqg'; + case Aninka = 'aqk'; + case Atohwaim = 'aqm'; + case Northern_Alta = 'aqn'; + case Atakapa = 'aqp'; + case Arha = 'aqr'; + case Angaite = 'aqt'; + case Akuntsu = 'aqz'; + case Arabic = 'ara'; + case Standard_Arabic = 'arb'; + case Official_Aramaic_700_300_BCE = 'arc'; + case Arabana = 'ard'; + case Western_Arrarnta = 'are'; + case Aragonese = 'arg'; + case Arhuaco = 'arh'; + case Arikara = 'ari'; + case Arapaso = 'arj'; + case Arikapu = 'ark'; + case Arabela = 'arl'; + case Mapudungun = 'arn'; + case Araona = 'aro'; + case Arapaho = 'arp'; + case Algerian_Arabic = 'arq'; + case Karo_Brazil = 'arr'; + case Najdi_Arabic = 'ars'; + case Arua_Amazonas_State = 'aru'; + case Arbore = 'arv'; + case Arawak = 'arw'; + case Arua_Rodonia_State = 'arx'; + case Moroccan_Arabic = 'ary'; + case Egyptian_Arabic = 'arz'; + case Asu_Tanzania = 'asa'; + case Assiniboine = 'asb'; + case Casuarina_Coast_Asmat = 'asc'; + case American_Sign_Language = 'ase'; + case Auslan = 'asf'; + case Cishingini = 'asg'; + case Abishira = 'ash'; + case Buruwai = 'asi'; + case Sari = 'asj'; + case Ashkun = 'ask'; + case Asilulu = 'asl'; + case Assamese = 'asm'; + case Xingu_Asurini = 'asn'; + case Dano = 'aso'; + case Algerian_Sign_Language = 'asp'; + case Austrian_Sign_Language = 'asq'; + case Asuri = 'asr'; + case Ipulo = 'ass'; + case Asturian = 'ast'; + case Tocantins_Asurini = 'asu'; + case Asoa = 'asv'; + case Australian_Aborigines_Sign_Language = 'asw'; + case Muratayak = 'asx'; + case Yaosakor_Asmat = 'asy'; + case As = 'asz'; + case Pele_Ata = 'ata'; + case Zaiwa = 'atb'; + case Atsahuaca = 'atc'; + case Ata_Manobo = 'atd'; + case Atemble = 'ate'; + case Ivbie_North_Okpela_Arhe = 'atg'; + case Attie = 'ati'; + case Atikamekw = 'atj'; + case Ati = 'atk'; + case Mt_Iraya_Agta = 'atl'; + case Ata = 'atm'; + case Ashtiani = 'atn'; + case Atong_Cameroon = 'ato'; + case Pudtol_Atta = 'atp'; + case Aralle_Tabulahan = 'atq'; + case Waimiri_Atroari = 'atr'; + case Gros_Ventre = 'ats'; + case Pamplona_Atta = 'att'; + case Reel = 'atu'; + case Northern_Altai = 'atv'; + case Atsugewi = 'atw'; + case Arutani = 'atx'; + case Aneityum = 'aty'; + case Arta = 'atz'; + case Asumboa = 'aua'; + case Alugu = 'aub'; + case Waorani = 'auc'; + case Anuta = 'aud'; + case Aguna = 'aug'; + case Aushi = 'auh'; + case Anuki = 'aui'; + case Awjilah = 'auj'; + case Heyo = 'auk'; + case Aulua = 'aul'; + case Asu_Nigeria = 'aum'; + case Molmo_One = 'aun'; + case Auyokawa = 'auo'; + case Makayam = 'aup'; + case Anus = 'auq'; + case Aruek = 'aur'; + case Austral = 'aut'; + case Auye = 'auu'; + case Awyi = 'auw'; + case Aura = 'aux'; + case Awiyaana = 'auy'; + case Uzbeki_Arabic = 'auz'; + case Avaric = 'ava'; + case Avau = 'avb'; + case Alviri_Vidari = 'avd'; + case Avestan = 'ave'; + case Avikam = 'avi'; + case Kotava = 'avk'; + case Eastern_Egyptian_Bedawi_Arabic = 'avl'; + case Angkamuthi = 'avm'; + case Avatime = 'avn'; + case Agavotaguerra = 'avo'; + case Aushiri = 'avs'; + case Au = 'avt'; + case Avokaya = 'avu'; + case Ava_Canoeiro = 'avv'; + case Awadhi = 'awa'; + case Awa_Papua_New_Guinea = 'awb'; + case Cicipu = 'awc'; + case Aweti = 'awe'; + case Anguthimri = 'awg'; + case Awbono = 'awh'; + case Aekyom = 'awi'; + case Awabakal = 'awk'; + case Arawum = 'awm'; + case Awngi = 'awn'; + case Awak = 'awo'; + case Awera = 'awr'; + case South_Awyu = 'aws'; + case Arawete = 'awt'; + case Central_Awyu = 'awu'; + case Jair_Awyu = 'awv'; + case Awun = 'aww'; + case Awara = 'awx'; + case Edera_Awyu = 'awy'; + case Abipon = 'axb'; + case Ayerrerenge = 'axe'; + case Mato_Grosso_Arara = 'axg'; + case Yaka_Central_African_Republic = 'axk'; + case Lower_Southern_Aranda = 'axl'; + case Middle_Armenian = 'axm'; + case Xaragure = 'axx'; + case Awar = 'aya'; + case Ayizo_Gbe = 'ayb'; + case Southern_Aymara = 'ayc'; + case Ayabadhu = 'ayd'; + case Ayere = 'aye'; + case Ginyanga = 'ayg'; + case Hadrami_Arabic = 'ayh'; + case Leyigha = 'ayi'; + case Akuku = 'ayk'; + case Libyan_Arabic = 'ayl'; + case Aymara = 'aym'; + case Sanaani_Arabic = 'ayn'; + case Ayoreo = 'ayo'; + case North_Mesopotamian_Arabic = 'ayp'; + case Ayi_Papua_New_Guinea = 'ayq'; + case Central_Aymara = 'ayr'; + case Sorsogon_Ayta = 'ays'; + case Magbukun_Ayta = 'ayt'; + case Ayu = 'ayu'; + case Mai_Brat = 'ayz'; + case Azha = 'aza'; + case South_Azerbaijani = 'azb'; + case Eastern_Durango_Nahuatl = 'azd'; + case Azerbaijani = 'aze'; + case San_Pedro_Amuzgos_Amuzgo = 'azg'; + case North_Azerbaijani = 'azj'; + case Ipalapa_Amuzgo = 'azm'; + case Western_Durango_Nahuatl = 'azn'; + case Awing = 'azo'; + case Faire_Atta = 'azt'; + case Highland_Puebla_Nahuatl = 'azz'; + case Babatana = 'baa'; + case Bainouk_Gunyuno = 'bab'; + case Badui = 'bac'; + case Bare = 'bae'; + case Nubaca = 'baf'; + case Tuki = 'bag'; + case Bahamas_Creole_English = 'bah'; + case Barakai = 'baj'; + case Bashkir = 'bak'; + case Baluchi = 'bal'; + case Bambara = 'bam'; + case Balinese = 'ban'; + case Waimaha = 'bao'; + case Bantawa = 'bap'; + case Bavarian = 'bar'; + case Basa_Cameroon = 'bas'; + case Bada_Nigeria = 'bau'; + case Vengo = 'bav'; + case Bambili_Bambui = 'baw'; + case Bamun = 'bax'; + case Batuley = 'bay'; + case Baatonum = 'bba'; + case Barai = 'bbb'; + case Batak_Toba = 'bbc'; + case Bau = 'bbd'; + case Bangba = 'bbe'; + case Baibai = 'bbf'; + case Barama = 'bbg'; + case Bugan = 'bbh'; + case Barombi = 'bbi'; + case Ghomala = 'bbj'; + case Babanki = 'bbk'; + case Bats = 'bbl'; + case Babango = 'bbm'; + case Uneapa = 'bbn'; + case Northern_Bobo_Madare = 'bbo'; + case West_Central_Banda = 'bbp'; + case Bamali = 'bbq'; + case Girawa = 'bbr'; + case Bakpinka = 'bbs'; + case Mburku = 'bbt'; + case Kulung_Nigeria = 'bbu'; + case Karnai = 'bbv'; + case Baba = 'bbw'; + case Bubia = 'bbx'; + case Befang = 'bby'; + case Central_Bai = 'bca'; + case Bainouk_Samik = 'bcb'; + case Southern_Balochi = 'bcc'; + case North_Babar = 'bcd'; + case Bamenyam = 'bce'; + case Bamu = 'bcf'; + case Baga_Pokur = 'bcg'; + case Bariai = 'bch'; + case Baoule = 'bci'; + case Bardi = 'bcj'; + case Bunuba = 'bck'; + case Central_Bikol = 'bcl'; + case Bannoni = 'bcm'; + case Bali_Nigeria = 'bcn'; + case Kaluli = 'bco'; + case Bali_Democratic_Republic_of_Congo = 'bcp'; + case Bench = 'bcq'; + case Babine = 'bcr'; + case Kohumono = 'bcs'; + case Bendi = 'bct'; + case Awad_Bing = 'bcu'; + case Shoo_Minda_Nye = 'bcv'; + case Bana = 'bcw'; + case Bacama = 'bcy'; + case Bainouk_Gunyaamolo = 'bcz'; + case Bayot = 'bda'; + case Basap = 'bdb'; + case Embera_Baudo = 'bdc'; + case Bunama = 'bdd'; + case Bade = 'bde'; + case Biage = 'bdf'; + case Bonggi = 'bdg'; + case Baka_South_Sudan = 'bdh'; + case Burun = 'bdi'; + case Bai_South_Sudan = 'bdj'; + case Budukh = 'bdk'; + case Indonesian_Bajau = 'bdl'; + case Buduma = 'bdm'; + case Baldemu = 'bdn'; + case Morom = 'bdo'; + case Bende = 'bdp'; + case Bahnar = 'bdq'; + case West_Coast_Bajau = 'bdr'; + case Burunge = 'bds'; + case Bokoto = 'bdt'; + case Oroko = 'bdu'; + case Bodo_Parja = 'bdv'; + case Baham = 'bdw'; + case Budong_Budong = 'bdx'; + case Bandjalang = 'bdy'; + case Badeshi = 'bdz'; + case Beaver = 'bea'; + case Bebele = 'beb'; + case Iceve_Maci = 'bec'; + case Bedoanas = 'bed'; + case Byangsi = 'bee'; + case Benabena = 'bef'; + case Belait = 'beg'; + case Biali = 'beh'; + case Bekati = 'bei'; + case Beja = 'bej'; + case Bebeli = 'bek'; + case Belarusian = 'bel'; + case Bemba_Zambia = 'bem'; + case Bengali = 'ben'; + case Beami = 'beo'; + case Besoa = 'bep'; + case Beembe = 'beq'; + case Besme = 'bes'; + case Guiberoua_Bete = 'bet'; + case Blagar = 'beu'; + case Daloa_Bete = 'bev'; + case Betawi = 'bew'; + case Jur_Modo = 'bex'; + case Beli_Papua_New_Guinea = 'bey'; + case Bena_Tanzania = 'bez'; + case Bari = 'bfa'; + case Pauri_Bareli = 'bfb'; + case Panyi_Bai = 'bfc'; + case Bafut = 'bfd'; + case Betaf = 'bfe'; + case Bofi = 'bff'; + case Busang_Kayan = 'bfg'; + case Blafe = 'bfh'; + case British_Sign_Language = 'bfi'; + case Bafanji = 'bfj'; + case Ban_Khor_Sign_Language = 'bfk'; + case Banda_Ndele = 'bfl'; + case Mmen = 'bfm'; + case Bunak = 'bfn'; + case Malba_Birifor = 'bfo'; + case Beba = 'bfp'; + case Badaga = 'bfq'; + case Bazigar = 'bfr'; + case Southern_Bai = 'bfs'; + case Balti = 'bft'; + case Gahri = 'bfu'; + case Bondo = 'bfw'; + case Bantayanon = 'bfx'; + case Bagheli = 'bfy'; + case Mahasu_Pahari = 'bfz'; + case Gwamhi_Wuri = 'bga'; + case Bobongko = 'bgb'; + case Haryanvi = 'bgc'; + case Rathwi_Bareli = 'bgd'; + case Bauria = 'bge'; + case Bangandu = 'bgf'; + case Bugun = 'bgg'; + case Giangan = 'bgi'; + case Bangolan = 'bgj'; + case Bit = 'bgk'; + case Bo_Laos = 'bgl'; + case Western_Balochi = 'bgn'; + case Baga_Koga = 'bgo'; + case Eastern_Balochi = 'bgp'; + case Bagri = 'bgq'; + case Bawm_Chin = 'bgr'; + case Tagabawa = 'bgs'; + case Bughotu = 'bgt'; + case Mbongno = 'bgu'; + case Warkay_Bipim = 'bgv'; + case Bhatri = 'bgw'; + case Balkan_Gagauz_Turkish = 'bgx'; + case Benggoi = 'bgy'; + case Banggai = 'bgz'; + case Bharia = 'bha'; + case Bhili = 'bhb'; + case Biga = 'bhc'; + case Bhadrawahi = 'bhd'; + case Bhaya = 'bhe'; + case Odiai = 'bhf'; + case Binandere = 'bhg'; + case Bukharic = 'bhh'; + case Bhilali = 'bhi'; + case Bahing = 'bhj'; + case Bimin = 'bhl'; + case Bathari = 'bhm'; + case Bohtan_Neo_Aramaic = 'bhn'; + case Bhojpuri = 'bho'; + case Bima = 'bhp'; + case Tukang_Besi_South = 'bhq'; + case Bara_Malagasy = 'bhr'; + case Buwal = 'bhs'; + case Bhattiyali = 'bht'; + case Bhunjia = 'bhu'; + case Bahau = 'bhv'; + case Biak = 'bhw'; + case Bhalay = 'bhx'; + case Bhele = 'bhy'; + case Bada_Indonesia = 'bhz'; + case Badimaya = 'bia'; + case Bissa = 'bib'; + case Bidiyo = 'bid'; + case Bepour = 'bie'; + case Biafada = 'bif'; + case Biangai = 'big'; + case Bikol = 'bik'; + case Bile = 'bil'; + case Bimoba = 'bim'; + case Bini = 'bin'; + case Nai = 'bio'; + case Bila = 'bip'; + case Bipi = 'biq'; + case Bisorio = 'bir'; + case Bislama = 'bis'; + case Berinomo = 'bit'; + case Biete = 'biu'; + case Southern_Birifor = 'biv'; + case Kol_Cameroon = 'biw'; + case Bijori = 'bix'; + case Birhor = 'biy'; + case Baloi = 'biz'; + case Budza = 'bja'; + case Banggarla = 'bjb'; + case Bariji = 'bjc'; + case Biao_Jiao_Mien = 'bje'; + case Barzani_Jewish_Neo_Aramaic = 'bjf'; + case Bidyogo = 'bjg'; + case Bahinemo = 'bjh'; + case Burji = 'bji'; + case Kanauji = 'bjj'; + case Barok = 'bjk'; + case Bulu_Papua_New_Guinea = 'bjl'; + case Bajelani = 'bjm'; + case Banjar = 'bjn'; + case Mid_Southern_Banda = 'bjo'; + case Fanamaket = 'bjp'; + case Binumarien = 'bjr'; + case Bajan = 'bjs'; + case Balanta_Ganja = 'bjt'; + case Busuu = 'bju'; + case Bedjond = 'bjv'; + case Bakwe = 'bjw'; + case Banao_Itneg = 'bjx'; + case Bayali = 'bjy'; + case Baruga = 'bjz'; + case Kyak = 'bka'; + case Baka_Cameroon = 'bkc'; + case Binukid = 'bkd'; + case Beeke = 'bkf'; + case Buraka = 'bkg'; + case Bakoko = 'bkh'; + case Baki = 'bki'; + case Pande = 'bkj'; + case Brokskat = 'bkk'; + case Berik = 'bkl'; + case Kom_Cameroon = 'bkm'; + case Bukitan = 'bkn'; + case Kwa = 'bko'; + case Boko_Democratic_Republic_of_Congo = 'bkp'; + case Bakairi = 'bkq'; + case Bakumpai = 'bkr'; + case Northern_Sorsoganon = 'bks'; + case Boloki = 'bkt'; + case Buhid = 'bku'; + case Bekwarra = 'bkv'; + case Bekwel = 'bkw'; + case Baikeno = 'bkx'; + case Bokyi = 'bky'; + case Bungku = 'bkz'; + case Siksika = 'bla'; + case Bilua = 'blb'; + case Bella_Coola = 'blc'; + case Bolango = 'bld'; + case Balanta_Kentohe = 'ble'; + case Buol = 'blf'; + case Kuwaa = 'blh'; + case Bolia = 'bli'; + case Bolongan = 'blj'; + case Pa_o_Karen = 'blk'; + case Biloxi = 'bll'; + case Beli_South_Sudan = 'blm'; + case Southern_Catanduanes_Bikol = 'bln'; + case Anii = 'blo'; + case Blablanga = 'blp'; + case Baluan_Pam = 'blq'; + case Blang = 'blr'; + case Balaesang = 'bls'; + case Tai_Dam = 'blt'; + case Kibala = 'blv'; + case Balangao = 'blw'; + case Mag_Indi_Ayta = 'blx'; + case Notre = 'bly'; + case Balantak = 'blz'; + case Lame = 'bma'; + case Bembe = 'bmb'; + case Biem = 'bmc'; + case Baga_Manduri = 'bmd'; + case Limassa = 'bme'; + case Bom_Kim = 'bmf'; + case Bamwe = 'bmg'; + case Kein = 'bmh'; + case Bagirmi = 'bmi'; + case Bote_Majhi = 'bmj'; + case Ghayavi = 'bmk'; + case Bomboli = 'bml'; + case Northern_Betsimisaraka_Malagasy = 'bmm'; + case Bina_Papua_New_Guinea = 'bmn'; + case Bambalang = 'bmo'; + case Bulgebi = 'bmp'; + case Bomu = 'bmq'; + case Muinane = 'bmr'; + case Bilma_Kanuri = 'bms'; + case Biao_Mon = 'bmt'; + case Somba_Siawari = 'bmu'; + case Bum = 'bmv'; + case Bomwali = 'bmw'; + case Baimak = 'bmx'; + case Baramu = 'bmz'; + case Bonerate = 'bna'; + case Bookan = 'bnb'; + case Bontok = 'bnc'; + case Banda_Indonesia = 'bnd'; + case Bintauna = 'bne'; + case Masiwang = 'bnf'; + case Benga = 'bng'; + case Bangi = 'bni'; + case Eastern_Tawbuid = 'bnj'; + case Bierebo = 'bnk'; + case Boon = 'bnl'; + case Batanga = 'bnm'; + case Bunun = 'bnn'; + case Bantoanon = 'bno'; + case Bola = 'bnp'; + case Bantik = 'bnq'; + case Butmas_Tur = 'bnr'; + case Bundeli = 'bns'; + case Bentong = 'bnu'; + case Bonerif = 'bnv'; + case Bisis = 'bnw'; + case Bangubangu = 'bnx'; + case Bintulu = 'bny'; + case Beezen = 'bnz'; + case Bora = 'boa'; + case Aweer = 'bob'; + case Tibetan = 'bod'; + case Mundabli = 'boe'; + case Bolon = 'bof'; + case Bamako_Sign_Language = 'bog'; + case Boma = 'boh'; + case Barbareno = 'boi'; + case Anjam = 'boj'; + case Bonjo = 'bok'; + case Bole = 'bol'; + case Berom = 'bom'; + case Bine = 'bon'; + case Tiemacewe_Bozo = 'boo'; + case Bonkiman = 'bop'; + case Bogaya = 'boq'; + case Bororo = 'bor'; + case Bosnian = 'bos'; + case Bongo = 'bot'; + case Bondei = 'bou'; + case Tuwuli = 'bov'; + case Rema = 'bow'; + case Buamu = 'box'; + case Bodo_Central_African_Republic = 'boy'; + case Tieyaxo_Bozo = 'boz'; + case Daakaka = 'bpa'; + case Mbuk = 'bpc'; + case Banda_Banda = 'bpd'; + case Bauni = 'bpe'; + case Bonggo = 'bpg'; + case Botlikh = 'bph'; + case Bagupi = 'bpi'; + case Binji = 'bpj'; + case Orowe = 'bpk'; + case Broome_Pearling_Lugger_Pidgin = 'bpl'; + case Biyom = 'bpm'; + case Dzao_Min = 'bpn'; + case Anasi = 'bpo'; + case Kaure = 'bpp'; + case Banda_Malay = 'bpq'; + case Koronadal_Blaan = 'bpr'; + case Sarangani_Blaan = 'bps'; + case Barrow_Point = 'bpt'; + case Bongu = 'bpu'; + case Bian_Marind = 'bpv'; + case Bo_Papua_New_Guinea = 'bpw'; + case Palya_Bareli = 'bpx'; + case Bishnupriya = 'bpy'; + case Bilba = 'bpz'; + case Tchumbuli = 'bqa'; + case Bagusa = 'bqb'; + case Boko_Benin = 'bqc'; + case Bung = 'bqd'; + case Baga_Kaloum = 'bqf'; + case Bago_Kusuntu = 'bqg'; + case Baima = 'bqh'; + case Bakhtiari = 'bqi'; + case Bandial = 'bqj'; + case Banda_Mbres = 'bqk'; + case Bilakura = 'bql'; + case Wumboko = 'bqm'; + case Bulgarian_Sign_Language = 'bqn'; + case Balo = 'bqo'; + case Busa = 'bqp'; + case Biritai = 'bqq'; + case Burusu = 'bqr'; + case Bosngun = 'bqs'; + case Bamukumbit = 'bqt'; + case Boguru = 'bqu'; + case Koro_Wachi = 'bqv'; + case Buru_Nigeria = 'bqw'; + case Baangi = 'bqx'; + case Bengkala_Sign_Language = 'bqy'; + case Bakaka = 'bqz'; + case Braj = 'bra'; + case Brao = 'brb'; + case Berbice_Creole_Dutch = 'brc'; + case Baraamu = 'brd'; + case Breton = 'bre'; + case Bira = 'brf'; + case Baure = 'brg'; + case Brahui = 'brh'; + case Mokpwe = 'bri'; + case Bieria = 'brj'; + case Birked = 'brk'; + case Birwa = 'brl'; + case Barambu = 'brm'; + case Boruca = 'brn'; + case Brokkat = 'bro'; + case Barapasi = 'brp'; + case Breri = 'brq'; + case Birao = 'brr'; + case Baras = 'brs'; + case Bitare = 'brt'; + case Eastern_Bru = 'bru'; + case Western_Bru = 'brv'; + case Bellari = 'brw'; + case Bodo_India = 'brx'; + case Burui = 'bry'; + case Bilbil = 'brz'; + case Abinomn = 'bsa'; + case Brunei_Bisaya = 'bsb'; + case Bassari = 'bsc'; + case Wushi = 'bse'; + case Bauchi = 'bsf'; + case Bashkardi = 'bsg'; + case Kati = 'bsh'; + case Bassossi = 'bsi'; + case Bangwinji = 'bsj'; + case Burushaski = 'bsk'; + case Basa_Gumna = 'bsl'; + case Busami = 'bsm'; + case Barasana_Eduria = 'bsn'; + case Buso = 'bso'; + case Baga_Sitemu = 'bsp'; + case Bassa = 'bsq'; + case Bassa_Kontagora = 'bsr'; + case Akoose = 'bss'; + case Basketo = 'bst'; + case Bahonsuai = 'bsu'; + case Baga_Sobane = 'bsv'; + case Baiso = 'bsw'; + case Yangkam = 'bsx'; + case Sabah_Bisaya = 'bsy'; + case Bata = 'bta'; + case Bati_Cameroon = 'btc'; + case Batak_Dairi = 'btd'; + case Gamo_Ningi = 'bte'; + case Birgit = 'btf'; + case Gagnoa_Bete = 'btg'; + case Biatah_Bidayuh = 'bth'; + case Burate = 'bti'; + case Bacanese_Malay = 'btj'; + case Batak_Mandailing = 'btm'; + case Ratagnon = 'btn'; + case Rinconada_Bikol = 'bto'; + case Budibud = 'btp'; + case Batek = 'btq'; + case Baetora = 'btr'; + case Batak_Simalungun = 'bts'; + case Bete_Bendi = 'btt'; + case Batu = 'btu'; + case Bateri = 'btv'; + case Butuanon = 'btw'; + case Batak_Karo = 'btx'; + case Bobot = 'bty'; + case Batak_Alas_Kluet = 'btz'; + case Buriat = 'bua'; + case Bua = 'bub'; + case Bushi = 'buc'; + case Ntcham = 'bud'; + case Beothuk = 'bue'; + case Bushoong = 'buf'; + case Buginese = 'bug'; + case Younuo_Bunu = 'buh'; + case Bongili = 'bui'; + case Basa_Gurmana = 'buj'; + case Bugawac = 'buk'; + case Bulgarian = 'bul'; + case Bulu_Cameroon = 'bum'; + case Sherbro = 'bun'; + case Terei = 'buo'; + case Busoa = 'bup'; + case Brem = 'buq'; + case Bokobaru = 'bus'; + case Bungain = 'but'; + case Budu = 'buu'; + case Bun = 'buv'; + case Bubi = 'buw'; + case Boghom = 'bux'; + case Bullom_So = 'buy'; + case Bukwen = 'buz'; + case Barein = 'bva'; + case Bube = 'bvb'; + case Baelelea = 'bvc'; + case Baeggu = 'bvd'; + case Berau_Malay = 'bve'; + case Boor = 'bvf'; + case Bonkeng = 'bvg'; + case Bure = 'bvh'; + case Belanda_Viri = 'bvi'; + case Baan = 'bvj'; + case Bukat = 'bvk'; + case Bolivian_Sign_Language = 'bvl'; + case Bamunka = 'bvm'; + case Buna = 'bvn'; + case Bolgo = 'bvo'; + case Bumang = 'bvp'; + case Birri = 'bvq'; + case Burarra = 'bvr'; + case Bati_Indonesia = 'bvt'; + case Bukit_Malay = 'bvu'; + case Baniva = 'bvv'; + case Boga = 'bvw'; + case Dibole = 'bvx'; + case Baybayanon = 'bvy'; + case Bauzi = 'bvz'; + case Bwatoo = 'bwa'; + case Namosi_Naitasiri_Serua = 'bwb'; + case Bwile = 'bwc'; + case Bwaidoka = 'bwd'; + case Bwe_Karen = 'bwe'; + case Boselewa = 'bwf'; + case Barwe = 'bwg'; + case Bishuo = 'bwh'; + case Baniwa = 'bwi'; + case Laa_Laa_Bwamu = 'bwj'; + case Bauwaki = 'bwk'; + case Bwela = 'bwl'; + case Biwat = 'bwm'; + case Wunai_Bunu = 'bwn'; + case Boro_Ethiopia = 'bwo'; + case Mandobo_Bawah = 'bwp'; + case Southern_Bobo_Madare = 'bwq'; + case Bura_Pabir = 'bwr'; + case Bomboma = 'bws'; + case Bafaw_Balong = 'bwt'; + case Buli_Ghana = 'bwu'; + case Bwa = 'bww'; + case Bu_Nao_Bunu = 'bwx'; + case Cwi_Bwamu = 'bwy'; + case Bwisi = 'bwz'; + case Tairaha = 'bxa'; + case Belanda_Bor = 'bxb'; + case Molengue = 'bxc'; + case Pela = 'bxd'; + case Birale = 'bxe'; + case Bilur = 'bxf'; + case Bangala = 'bxg'; + case Buhutu = 'bxh'; + case Pirlatapa = 'bxi'; + case Bayungu = 'bxj'; + case Bukusu = 'bxk'; + case Jalkunan = 'bxl'; + case Mongolia_Buriat = 'bxm'; + case Burduna = 'bxn'; + case Barikanchi = 'bxo'; + case Bebil = 'bxp'; + case Beele = 'bxq'; + case Russia_Buriat = 'bxr'; + case Busam = 'bxs'; + case China_Buriat = 'bxu'; + case Berakou = 'bxv'; + case Bankagooma = 'bxw'; + case Binahari = 'bxz'; + case Batak = 'bya'; + case Bikya = 'byb'; + case Ubaghara = 'byc'; + case Benyadu = 'byd'; + case Pouye = 'bye'; + case Bete = 'byf'; + case Baygo = 'byg'; + case Bhujel = 'byh'; + case Buyu = 'byi'; + case Bina_Nigeria = 'byj'; + case Biao = 'byk'; + case Bayono = 'byl'; + case Bidjara = 'bym'; + case Bilin = 'byn'; + case Biyo = 'byo'; + case Bumaji = 'byp'; + case Basay = 'byq'; + case Baruya = 'byr'; + case Burak = 'bys'; + case Berti = 'byt'; + case Medumba = 'byv'; + case Belhariya = 'byw'; + case Qaqet = 'byx'; + case Banaro = 'byz'; + case Bandi = 'bza'; + case Andio = 'bzb'; + case Southern_Betsimisaraka_Malagasy = 'bzc'; + case Bribri = 'bzd'; + case Jenaama_Bozo = 'bze'; + case Boikin = 'bzf'; + case Babuza = 'bzg'; + case Mapos_Buang = 'bzh'; + case Bisu = 'bzi'; + case Belize_Kriol_English = 'bzj'; + case Nicaragua_Creole_English = 'bzk'; + case Boano_Sulawesi = 'bzl'; + case Bolondo = 'bzm'; + case Boano_Maluku = 'bzn'; + case Bozaba = 'bzo'; + case Kemberano = 'bzp'; + case Buli_Indonesia = 'bzq'; + case Biri = 'bzr'; + case Brazilian_Sign_Language = 'bzs'; + case Brithenig = 'bzt'; + case Burmeso = 'bzu'; + case Naami = 'bzv'; + case Basa_Nigeria = 'bzw'; + case Kelengaxo_Bozo = 'bzx'; + case Obanliku = 'bzy'; + case Evant = 'bzz'; + case Chorti = 'caa'; + case Garifuna = 'cab'; + case Chuj = 'cac'; + case Caddo = 'cad'; + case Lehar = 'cae'; + case Southern_Carrier = 'caf'; + case Nivacle = 'cag'; + case Cahuarano = 'cah'; + case Chane = 'caj'; + case Kaqchikel = 'cak'; + case Carolinian = 'cal'; + case Cemuhi = 'cam'; + case Chambri = 'can'; + case Chacobo = 'cao'; + case Chipaya = 'cap'; + case Car_Nicobarese = 'caq'; + case Galibi_Carib = 'car'; + case Tsimane = 'cas'; + case Catalan = 'cat'; + case Cavinena = 'cav'; + case Callawalla = 'caw'; + case Chiquitano = 'cax'; + case Cayuga = 'cay'; + case Canichana = 'caz'; + case Cabiyari = 'cbb'; + case Carapana = 'cbc'; + case Carijona = 'cbd'; + case Chimila = 'cbg'; + case Chachi = 'cbi'; + case Ede_Cabe = 'cbj'; + case Chavacano = 'cbk'; + case Bualkhaw_Chin = 'cbl'; + case Nyahkur = 'cbn'; + case Izora = 'cbo'; + case Tsucuba = 'cbq'; + case Cashibo_Cacataibo = 'cbr'; + case Cashinahua = 'cbs'; + case Chayahuita = 'cbt'; + case Candoshi_Shapra = 'cbu'; + case Cacua = 'cbv'; + case Kinabalian = 'cbw'; + case Carabayo = 'cby'; + case Chamicuro = 'ccc'; + case Cafundo_Creole = 'ccd'; + case Chopi = 'cce'; + case Samba_Daka = 'ccg'; + case Atsam = 'cch'; + case Kasanga = 'ccj'; + case Cutchi_Swahili = 'ccl'; + case Malaccan_Creole_Malay = 'ccm'; + case Comaltepec_Chinantec = 'cco'; + case Chakma = 'ccp'; + case Cacaopera = 'ccr'; + case Choni = 'cda'; + case Chenchu = 'cde'; + case Chiru = 'cdf'; + case Chambeali = 'cdh'; + case Chodri = 'cdi'; + case Churahi = 'cdj'; + case Chepang = 'cdm'; + case Chaudangsi = 'cdn'; + case Min_Dong_Chinese = 'cdo'; + case Cinda_Regi_Tiyal = 'cdr'; + case Chadian_Sign_Language = 'cds'; + case Chadong = 'cdy'; + case Koda = 'cdz'; + case Lower_Chehalis = 'cea'; + case Cebuano = 'ceb'; + case Chamacoco = 'ceg'; + case Eastern_Khumi_Chin = 'cek'; + case Cen = 'cen'; + case Czech = 'ces'; + case Centuum = 'cet'; + case Ekai_Chin = 'cey'; + case Dijim_Bwilim = 'cfa'; + case Cara = 'cfd'; + case Como_Karim = 'cfg'; + case Falam_Chin = 'cfm'; + case Changriwa = 'cga'; + case Kagayanen = 'cgc'; + case Chiga = 'cgg'; + case Chocangacakha = 'cgk'; + case Chamorro = 'cha'; + case Chibcha = 'chb'; + case Catawba = 'chc'; + case Highland_Oaxaca_Chontal = 'chd'; + case Chechen = 'che'; + case Tabasco_Chontal = 'chf'; + case Chagatai = 'chg'; + case Chinook = 'chh'; + case Ojitlan_Chinantec = 'chj'; + case Chuukese = 'chk'; + case Cahuilla = 'chl'; + case Mari_Russia = 'chm'; + case Chinook_jargon = 'chn'; + case Choctaw = 'cho'; + case Chipewyan = 'chp'; + case Quiotepec_Chinantec = 'chq'; + case Cherokee = 'chr'; + case Cholon = 'cht'; + case Church_Slavic = 'chu'; + case Chuvash = 'chv'; + case Chuwabu = 'chw'; + case Chantyal = 'chx'; + case Cheyenne = 'chy'; + case Ozumacin_Chinantec = 'chz'; + case Cia_Cia = 'cia'; + case Ci_Gbe = 'cib'; + case Chickasaw = 'cic'; + case Chimariko = 'cid'; + case Cineni = 'cie'; + case Chinali = 'cih'; + case Chitkuli_Kinnauri = 'cik'; + case Cimbrian = 'cim'; + case Cinta_Larga = 'cin'; + case Chiapanec = 'cip'; + case Tiri = 'cir'; + case Chippewa = 'ciw'; + case Chaima = 'ciy'; + case Western_Cham = 'cja'; + case Chru = 'cje'; + case Upper_Chehalis = 'cjh'; + case Chamalal = 'cji'; + case Chokwe = 'cjk'; + case Eastern_Cham = 'cjm'; + case Chenapian = 'cjn'; + case Asheninka_Pajonal = 'cjo'; + case Cabecar = 'cjp'; + case Shor = 'cjs'; + case Chuave = 'cjv'; + case Jinyu_Chinese = 'cjy'; + case Central_Kurdish = 'ckb'; + case Chak = 'ckh'; + case Cibak = 'ckl'; + case Chakavian = 'ckm'; + case Kaang_Chin = 'ckn'; + case Anufo = 'cko'; + case Kajakse = 'ckq'; + case Kairak = 'ckr'; + case Tayo = 'cks'; + case Chukot = 'ckt'; + case Koasati = 'cku'; + case Kavalan = 'ckv'; + case Caka = 'ckx'; + case Cakfem_Mushere = 'cky'; + case Cakchiquel_Quiche_Mixed_Language = 'ckz'; + case Ron = 'cla'; + case Chilcotin = 'clc'; + case Chaldean_Neo_Aramaic = 'cld'; + case Lealao_Chinantec = 'cle'; + case Chilisso = 'clh'; + case Chakali = 'cli'; + case Laitu_Chin = 'clj'; + case Idu_Mishmi = 'clk'; + case Chala = 'cll'; + case Clallam = 'clm'; + case Lowland_Oaxaca_Chontal = 'clo'; + case Classical_Sanskrit = 'cls'; + case Lautu_Chin = 'clt'; + case Caluyanun = 'clu'; + case Chulym = 'clw'; + case Eastern_Highland_Chatino = 'cly'; + case Maa = 'cma'; + case Cerma = 'cme'; + case Classical_Mongolian = 'cmg'; + case Embera_Chami = 'cmi'; + case Campalagian = 'cml'; + case Michigamea = 'cmm'; + case Mandarin_Chinese = 'cmn'; + case Central_Mnong = 'cmo'; + case Mro_Khimi_Chin = 'cmr'; + case Messapic = 'cms'; + case Camtho = 'cmt'; + case Changthang = 'cna'; + case Chinbon_Chin = 'cnb'; + case Coong = 'cnc'; + case Northern_Qiang = 'cng'; + case Hakha_Chin = 'cnh'; + case Ashaninka = 'cni'; + case Khumi_Chin = 'cnk'; + case Lalana_Chinantec = 'cnl'; + case Con = 'cno'; + case Northern_Ping_Chinese = 'cnp'; + case Chung = 'cnq'; + case Montenegrin = 'cnr'; + case Central_Asmat = 'cns'; + case Tepetotutla_Chinantec = 'cnt'; + case Chenoua = 'cnu'; + case Ngawn_Chin = 'cnw'; + case Middle_Cornish = 'cnx'; + case Cocos_Islands_Malay = 'coa'; + case Chicomuceltec = 'cob'; + case Cocopa = 'coc'; + case Cocama_Cocamilla = 'cod'; + case Koreguaje = 'coe'; + case Colorado = 'cof'; + case Chong = 'cog'; + case Chonyi_Dzihana_Kauma = 'coh'; + case Cochimi = 'coj'; + case Santa_Teresa_Cora = 'cok'; + case Columbia_Wenatchi = 'col'; + case Comanche = 'com'; + case Cofan = 'con'; + case Comox = 'coo'; + case Coptic = 'cop'; + case Coquille = 'coq'; + case Cornish = 'cor'; + case Corsican = 'cos'; + case Caquinte = 'cot'; + case Wamey = 'cou'; + case Cao_Miao = 'cov'; + case Cowlitz = 'cow'; + case Nanti = 'cox'; + case Chochotec = 'coz'; + case Palantla_Chinantec = 'cpa'; + case Ucayali_Yurua_Asheninka = 'cpb'; + case Ajyininka_Apurucayali = 'cpc'; + case Cappadocian_Greek = 'cpg'; + case Chinese_Pidgin_English = 'cpi'; + case Cherepon = 'cpn'; + case Kpeego = 'cpo'; + case Capiznon = 'cps'; + case Pichis_Asheninka = 'cpu'; + case Pu_Xian_Chinese = 'cpx'; + case South_Ucayali_Asheninka = 'cpy'; + case Chuanqiandian_Cluster_Miao = 'cqd'; + case Chara = 'cra'; + case Island_Carib = 'crb'; + case Lonwolwol = 'crc'; + case Coeur_d_Alene = 'crd'; + case Cree = 'cre'; + case Caramanta = 'crf'; + case Michif = 'crg'; + case Crimean_Tatar = 'crh'; + case Saotomense = 'cri'; + case Southern_East_Cree = 'crj'; + case Plains_Cree = 'crk'; + case Northern_East_Cree = 'crl'; + case Moose_Cree = 'crm'; + case El_Nayar_Cora = 'crn'; + case Crow = 'cro'; + case Iyo_wujwa_Chorote = 'crq'; + case Carolina_Algonquian = 'crr'; + case Seselwa_Creole_French = 'crs'; + case Iyojwa_ja_Chorote = 'crt'; + case Chaura = 'crv'; + case Chrau = 'crw'; + case Carrier = 'crx'; + case Cori = 'cry'; + case Cruzeno = 'crz'; + case Chiltepec_Chinantec = 'csa'; + case Kashubian = 'csb'; + case Catalan_Sign_Language = 'csc'; + case Chiangmai_Sign_Language = 'csd'; + case Czech_Sign_Language = 'cse'; + case Cuba_Sign_Language = 'csf'; + case Chilean_Sign_Language = 'csg'; + case Asho_Chin = 'csh'; + case Coast_Miwok = 'csi'; + case Songlai_Chin = 'csj'; + case Jola_Kasa = 'csk'; + case Chinese_Sign_Language = 'csl'; + case Central_Sierra_Miwok = 'csm'; + case Colombian_Sign_Language = 'csn'; + case Sochiapam_Chinantec = 'cso'; + case Southern_Ping_Chinese = 'csp'; + case Croatia_Sign_Language = 'csq'; + case Costa_Rican_Sign_Language = 'csr'; + case Southern_Ohlone = 'css'; + case Northern_Ohlone = 'cst'; + case Sumtu_Chin = 'csv'; + case Swampy_Cree = 'csw'; + case Cambodian_Sign_Language = 'csx'; + case Siyin_Chin = 'csy'; + case Coos = 'csz'; + case Tataltepec_Chatino = 'cta'; + case Chetco = 'ctc'; + case Tedim_Chin = 'ctd'; + case Tepinapa_Chinantec = 'cte'; + case Chittagonian = 'ctg'; + case Thaiphum_Chin = 'cth'; + case Tlacoatzintepec_Chinantec = 'ctl'; + case Chitimacha = 'ctm'; + case Chhintange = 'ctn'; + case Embera_Catio = 'cto'; + case Western_Highland_Chatino = 'ctp'; + case Northern_Catanduanes_Bikol = 'cts'; + case Wayanad_Chetti = 'ctt'; + case Chol = 'ctu'; + case Moundadan_Chetty = 'cty'; + case Zacatepec_Chatino = 'ctz'; + case Cua = 'cua'; + case Cubeo = 'cub'; + case Usila_Chinantec = 'cuc'; + case Chuka = 'cuh'; + case Cuiba = 'cui'; + case Mashco_Piro = 'cuj'; + case San_Blas_Kuna = 'cuk'; + case Culina = 'cul'; + case Cumanagoto = 'cuo'; + case Cupeno = 'cup'; + case Cun = 'cuq'; + case Chhulung = 'cur'; + case Teutila_Cuicatec = 'cut'; + case Tai_Ya = 'cuu'; + case Cuvok = 'cuv'; + case Chukwa = 'cuw'; + case Tepeuxila_Cuicatec = 'cux'; + case Cuitlatec = 'cuy'; + case Chug = 'cvg'; + case Valle_Nacional_Chinantec = 'cvn'; + case Kabwa = 'cwa'; + case Maindo = 'cwb'; + case Woods_Cree = 'cwd'; + case Kwere = 'cwe'; + case Chewong = 'cwg'; + case Kuwaataay = 'cwt'; + case Cha_ari = 'cxh'; + case Nopala_Chatino = 'cya'; + case Cayubaba = 'cyb'; + case Welsh = 'cym'; + case Cuyonon = 'cyo'; + case Huizhou_Chinese = 'czh'; + case Knaanic = 'czk'; + case Zenzontepec_Chatino = 'czn'; + case Min_Zhong_Chinese = 'czo'; + case Zotung_Chin = 'czt'; + case Dangaleat = 'daa'; + case Dambi = 'dac'; + case Marik = 'dad'; + case Duupa = 'dae'; + case Dagbani = 'dag'; + case Gwahatike = 'dah'; + case Day = 'dai'; + case Dar_Fur_Daju = 'daj'; + case Dakota = 'dak'; + case Dahalo = 'dal'; + case Damakawa = 'dam'; + case Danish = 'dan'; + case Daai_Chin = 'dao'; + case Dandami_Maria = 'daq'; + case Dargwa = 'dar'; + case Daho_Doo = 'das'; + case Dar_Sila_Daju = 'dau'; + case Taita = 'dav'; + case Davawenyo = 'daw'; + case Dayi = 'dax'; + case Dao = 'daz'; + case Bangime = 'dba'; + case Deno = 'dbb'; + case Dadiya = 'dbd'; + case Dabe = 'dbe'; + case Edopi = 'dbf'; + case Dogul_Dom_Dogon = 'dbg'; + case Doka = 'dbi'; + case Ida_an = 'dbj'; + case Dyirbal = 'dbl'; + case Duguri = 'dbm'; + case Duriankere = 'dbn'; + case Dulbu = 'dbo'; + case Duwai = 'dbp'; + case Daba = 'dbq'; + case Dabarre = 'dbr'; + case Ben_Tey_Dogon = 'dbt'; + case Bondum_Dom_Dogon = 'dbu'; + case Dungu = 'dbv'; + case Bankan_Tey_Dogon = 'dbw'; + case Dibiyaso = 'dby'; + case Deccan = 'dcc'; + case Negerhollands = 'dcr'; + case Dadi_Dadi = 'dda'; + case Dongotono = 'ddd'; + case Doondo = 'dde'; + case Fataluku = 'ddg'; + case West_Goodenough = 'ddi'; + case Jaru = 'ddj'; + case Dendi_Benin = 'ddn'; + case Dido = 'ddo'; + case Dhudhuroa = 'ddr'; + case Donno_So_Dogon = 'dds'; + case Dawera_Daweloor = 'ddw'; + case Dagik = 'dec'; + case Dedua = 'ded'; + case Dewoin = 'dee'; + case Dezfuli = 'def'; + case Degema = 'deg'; + case Dehwari = 'deh'; + case Demisa = 'dei'; + case Dek = 'dek'; + case Delaware = 'del'; + case Dem = 'dem'; + case Slave_Athapascan = 'den'; + case Pidgin_Delaware = 'dep'; + case Dendi_Central_African_Republic = 'deq'; + case Deori = 'der'; + case Desano = 'des'; + case German = 'deu'; + case Domung = 'dev'; + case Dengese = 'dez'; + case Southern_Dagaare = 'dga'; + case Bunoge_Dogon = 'dgb'; + case Casiguran_Dumagat_Agta = 'dgc'; + case Dagaari_Dioula = 'dgd'; + case Degenan = 'dge'; + case Doga = 'dgg'; + case Dghwede = 'dgh'; + case Northern_Dagara = 'dgi'; + case Dagba = 'dgk'; + case Andaandi = 'dgl'; + case Dagoman = 'dgn'; + case Dogri_individual_language = 'dgo'; + case Dogrib = 'dgr'; + case Dogoso = 'dgs'; + case Ndra_ngith = 'dgt'; + case Daungwurrung = 'dgw'; + case Doghoro = 'dgx'; + case Daga = 'dgz'; + case Dhundari = 'dhd'; + case Dhangu_Djangu = 'dhg'; + case Dhimal = 'dhi'; + case Dhalandji = 'dhl'; + case Zemba = 'dhm'; + case Dhanki = 'dhn'; + case Dhodia = 'dho'; + case Dhargari = 'dhr'; + case Dhaiso = 'dhs'; + case Dhurga = 'dhu'; + case Dehu = 'dhv'; + case Dhanwar_Nepal = 'dhw'; + case Dhungaloo = 'dhx'; + case Dia = 'dia'; + case South_Central_Dinka = 'dib'; + case Lakota_Dida = 'dic'; + case Didinga = 'did'; + case Dieri = 'dif'; + case Digo = 'dig'; + case Kumiai = 'dih'; + case Dimbong = 'dii'; + case Dai = 'dij'; + case Southwestern_Dinka = 'dik'; + case Dilling = 'dil'; + case Dime = 'dim'; + case Dinka = 'din'; + case Dibo = 'dio'; + case Northeastern_Dinka = 'dip'; + case Dimli_individual_language = 'diq'; + case Dirim = 'dir'; + case Dimasa = 'dis'; + case Diriku = 'diu'; + case Dhivehi = 'div'; + case Northwestern_Dinka = 'diw'; + case Dixon_Reef = 'dix'; + case Diuwe = 'diy'; + case Ding = 'diz'; + case Djadjawurrung = 'dja'; + case Djinba = 'djb'; + case Dar_Daju_Daju = 'djc'; + case Djamindjung = 'djd'; + case Zarma = 'dje'; + case Djangun = 'djf'; + case Djinang = 'dji'; + case Djeebbana = 'djj'; + case Eastern_Maroon_Creole = 'djk'; + case Jamsay_Dogon = 'djm'; + case Jawoyn = 'djn'; + case Jangkang = 'djo'; + case Djambarrpuyngu = 'djr'; + case Kapriman = 'dju'; + case Djawi = 'djw'; + case Dakpakha = 'dka'; + case Kadung = 'dkg'; + case Dakka = 'dkk'; + case Kuijau = 'dkr'; + case Southeastern_Dinka = 'dks'; + case Mazagway = 'dkx'; + case Dolgan = 'dlg'; + case Dahalik = 'dlk'; + case Dalmatian = 'dlm'; + case Darlong = 'dln'; + case Duma = 'dma'; + case Mombo_Dogon = 'dmb'; + case Gavak = 'dmc'; + case Madhi_Madhi = 'dmd'; + case Dugwor = 'dme'; + case Medefaidrin = 'dmf'; + case Upper_Kinabatangan = 'dmg'; + case Domaaki = 'dmk'; + case Dameli = 'dml'; + case Dama = 'dmm'; + case Kemedzung = 'dmo'; + case East_Damar = 'dmr'; + case Dampelas = 'dms'; + case Dubu = 'dmu'; + case Dumpas = 'dmv'; + case Mudburra = 'dmw'; + case Dema = 'dmx'; + case Demta = 'dmy'; + case Upper_Grand_Valley_Dani = 'dna'; + case Daonda = 'dnd'; + case Ndendeule = 'dne'; + case Dungan = 'dng'; + case Lower_Grand_Valley_Dani = 'dni'; + case Dan = 'dnj'; + case Dengka = 'dnk'; + case Dzuungoo = 'dnn'; + case Ndrulo = 'dno'; + case Danaru = 'dnr'; + case Mid_Grand_Valley_Dani = 'dnt'; + case Danau = 'dnu'; + case Danu = 'dnv'; + case Western_Dani = 'dnw'; + case Deni = 'dny'; + case Dom = 'doa'; + case Dobu = 'dob'; + case Northern_Dong = 'doc'; + case Doe = 'doe'; + case Domu = 'dof'; + case Dong = 'doh'; + case Dogri_macrolanguage = 'doi'; + case Dondo = 'dok'; + case Doso = 'dol'; + case Toura_Papua_New_Guinea = 'don'; + case Dongo = 'doo'; + case Lukpa = 'dop'; + case Dominican_Sign_Language = 'doq'; + case Dori_o = 'dor'; + case Dogose = 'dos'; + case Dass = 'dot'; + case Dombe = 'dov'; + case Doyayo = 'dow'; + case Bussa = 'dox'; + case Dompo = 'doy'; + case Dorze = 'doz'; + case Papar = 'dpp'; + case Dair = 'drb'; + case Minderico = 'drc'; + case Darmiya = 'drd'; + case Dolpo = 'dre'; + case Rungus = 'drg'; + case C_Lela = 'dri'; + case Paakantyi = 'drl'; + case West_Damar = 'drn'; + case Daro_Matu_Melanau = 'dro'; + case Dura = 'drq'; + case Gedeo = 'drs'; + case Drents = 'drt'; + case Rukai = 'dru'; + case Darai = 'dry'; + case Lower_Sorbian = 'dsb'; + case Dutch_Sign_Language = 'dse'; + case Daasanach = 'dsh'; + case Disa = 'dsi'; + case Dokshi = 'dsk'; + case Danish_Sign_Language = 'dsl'; + case Dusner = 'dsn'; + case Desiya = 'dso'; + case Tadaksahak = 'dsq'; + case Mardin_Sign_Language = 'dsz'; + case Daur = 'dta'; + case Labuk_Kinabatangan_Kadazan = 'dtb'; + case Ditidaht = 'dtd'; + case Adithinngithigh = 'dth'; + case Ana_Tinga_Dogon = 'dti'; + case Tene_Kan_Dogon = 'dtk'; + case Tomo_Kan_Dogon = 'dtm'; + case Daats_iin = 'dtn'; + case Tommo_So_Dogon = 'dto'; + case Kadazan_Dusun = 'dtp'; + case Lotud = 'dtr'; + case Toro_So_Dogon = 'dts'; + case Toro_Tegu_Dogon = 'dtt'; + case Tebul_Ure_Dogon = 'dtu'; + case Dotyali = 'dty'; + case Duala = 'dua'; + case Dubli = 'dub'; + case Duna = 'duc'; + case Umiray_Dumaget_Agta = 'due'; + case Dumbea = 'duf'; + case Duruma = 'dug'; + case Dungra_Bhil = 'duh'; + case Dumun = 'dui'; + case Uyajitaya = 'duk'; + case Alabat_Island_Agta = 'dul'; + case Middle_Dutch_ca_1050_1350 = 'dum'; + case Dusun_Deyah = 'dun'; + case Dupaninan_Agta = 'duo'; + case Duano = 'dup'; + case Dusun_Malang = 'duq'; + case Dii = 'dur'; + case Dumi = 'dus'; + case Drung = 'duu'; + case Duvle = 'duv'; + case Dusun_Witu = 'duw'; + case Duungooma = 'dux'; + case Dicamay_Agta = 'duy'; + case Duli_Gey = 'duz'; + case Duau = 'dva'; + case Diri = 'dwa'; + case Dawik_Kui = 'dwk'; + case Dawro = 'dwr'; + case Dutton_World_Speedwords = 'dws'; + case Dhuwal = 'dwu'; + case Dawawa = 'dww'; + case Dhuwaya = 'dwy'; + case Dewas_Rai = 'dwz'; + case Dyan = 'dya'; + case Dyaberdyaber = 'dyb'; + case Dyugun = 'dyd'; + case Villa_Viciosa_Agta = 'dyg'; + case Djimini_Senoufo = 'dyi'; + case Yanda_Dom_Dogon = 'dym'; + case Dyangadi = 'dyn'; + case Jola_Fonyi = 'dyo'; + case Dyarim = 'dyr'; + case Dyula = 'dyu'; + case Djabugay = 'dyy'; + case Tunzu = 'dza'; + case Daza = 'dzd'; + case Djiwarli = 'dze'; + case Dazaga = 'dzg'; + case Dzalakha = 'dzl'; + case Dzando = 'dzn'; + case Dzongkha = 'dzo'; + case Karenggapa = 'eaa'; + case Beginci = 'ebc'; + case Ebughu = 'ebg'; + case Eastern_Bontok = 'ebk'; + case Teke_Ebo = 'ebo'; + case Ebrie = 'ebr'; + case Embu = 'ebu'; + case Eteocretan = 'ecr'; + case Ecuadorian_Sign_Language = 'ecs'; + case Eteocypriot = 'ecy'; + case E = 'eee'; + case Efai = 'efa'; + case Efe = 'efe'; + case Efik = 'efi'; + case Ega = 'ega'; + case Emilian = 'egl'; + case Benamanga = 'egm'; + case Eggon = 'ego'; + case Egyptian_Ancient = 'egy'; + case Miyakubo_Sign_Language = 'ehs'; + case Ehueun = 'ehu'; + case Eipomek = 'eip'; + case Eitiep = 'eit'; + case Askopan = 'eiv'; + case Ejamat = 'eja'; + case Ekajuk = 'eka'; + case Ekit = 'eke'; + case Ekari = 'ekg'; + case Eki = 'eki'; + case Standard_Estonian = 'ekk'; + case Kol_Bangladesh = 'ekl'; + case Elip = 'ekm'; + case Koti = 'eko'; + case Ekpeye = 'ekp'; + case Yace = 'ekr'; + case Eastern_Kayah = 'eky'; + case Elepi = 'ele'; + case El_Hugeirat = 'elh'; + case Nding = 'eli'; + case Elkei = 'elk'; + case Modern_Greek_1453 = 'ell'; + case Eleme = 'elm'; + case El_Molo = 'elo'; + case Elu = 'elu'; + case Elamite = 'elx'; + case Emai_Iuleha_Ora = 'ema'; + case Embaloh = 'emb'; + case Emerillon = 'eme'; + case Eastern_Meohang = 'emg'; + case Mussau_Emira = 'emi'; + case Eastern_Maninkakan = 'emk'; + case Mamulique = 'emm'; + case Eman = 'emn'; + case Northern_Embera = 'emp'; + case Eastern_Minyag = 'emq'; + case Pacific_Gulf_Yupik = 'ems'; + case Eastern_Muria = 'emu'; + case Emplawas = 'emw'; + case Erromintxela = 'emx'; + case Epigraphic_Mayan = 'emy'; + case Mbessa = 'emz'; + case Apali = 'ena'; + case Markweeta = 'enb'; + case En = 'enc'; + case Ende = 'end'; + case Forest_Enets = 'enf'; + case English = 'eng'; + case Tundra_Enets = 'enh'; + case Enlhet = 'enl'; + case Middle_English_1100_1500 = 'enm'; + case Engenni = 'enn'; + case Enggano = 'eno'; + case Enga = 'enq'; + case Emumu = 'enr'; + case Enu = 'enu'; + case Enwan_Edo_State = 'env'; + case Enwan_Akwa_Ibom_State = 'enw'; + case Enxet = 'enx'; + case Beti_Cote_d_Ivoire = 'eot'; + case Epie = 'epi'; + case Esperanto = 'epo'; + case Eravallan = 'era'; + case Sie = 'erg'; + case Eruwa = 'erh'; + case Ogea = 'eri'; + case South_Efate = 'erk'; + case Horpa = 'ero'; + case Erre = 'err'; + case Ersu = 'ers'; + case Eritai = 'ert'; + case Erokwanas = 'erw'; + case Ese_Ejja = 'ese'; + case Aheri_Gondi = 'esg'; + case Eshtehardi = 'esh'; + case North_Alaskan_Inupiatun = 'esi'; + case Northwest_Alaska_Inupiatun = 'esk'; + case Egypt_Sign_Language = 'esl'; + case Esuma = 'esm'; + case Salvadoran_Sign_Language = 'esn'; + case Estonian_Sign_Language = 'eso'; + case Esselen = 'esq'; + case Central_Siberian_Yupik = 'ess'; + case Estonian = 'est'; + case Central_Yupik = 'esu'; + case Eskayan = 'esy'; + case Etebi = 'etb'; + case Etchemin = 'etc'; + case Ethiopian_Sign_Language = 'eth'; + case Eton_Vanuatu = 'etn'; + case Eton_Cameroon = 'eto'; + case Edolo = 'etr'; + case Yekhee = 'ets'; + case Etruscan = 'ett'; + case Ejagham = 'etu'; + case Eten = 'etx'; + case Semimi = 'etz'; + case Eudeve = 'eud'; + case Basque = 'eus'; + case Even = 'eve'; + case Uvbie = 'evh'; + case Evenki = 'evn'; + case Ewe = 'ewe'; + case Ewondo = 'ewo'; + case Extremaduran = 'ext'; + case Eyak = 'eya'; + case Keiyo = 'eyo'; + case Ezaa = 'eza'; + case Uzekwe = 'eze'; + case Fasu = 'faa'; + case Fa_d_Ambu = 'fab'; + case Wagi = 'fad'; + case Fagani = 'faf'; + case Finongan = 'fag'; + case Baissa_Fali = 'fah'; + case Faiwol = 'fai'; + case Faita = 'faj'; + case Fang_Cameroon = 'fak'; + case South_Fali = 'fal'; + case Fam = 'fam'; + case Fang_Equatorial_Guinea = 'fan'; + case Faroese = 'fao'; + case Paloor = 'fap'; + case Fataleka = 'far'; + case Persian = 'fas'; + case Fanti = 'fat'; + case Fayu = 'fau'; + case Fala = 'fax'; + case Southwestern_Fars = 'fay'; + case Northwestern_Fars = 'faz'; + case West_Albay_Bikol = 'fbl'; + case Quebec_Sign_Language = 'fcs'; + case Feroge = 'fer'; + case Foia_Foia = 'ffi'; + case Maasina_Fulfulde = 'ffm'; + case Fongoro = 'fgr'; + case Nobiin = 'fia'; + case Fyer = 'fie'; + case Faifi = 'fif'; + case Fijian = 'fij'; + case Filipino = 'fil'; + case Finnish = 'fin'; + case Fipa = 'fip'; + case Firan = 'fir'; + case Tornedalen_Finnish = 'fit'; + case Fiwaga = 'fiw'; + case Kirya_Konzel = 'fkk'; + case Kven_Finnish = 'fkv'; + case Kalispel_Pend_d_Oreille = 'fla'; + case Foau = 'flh'; + case Fali = 'fli'; + case North_Fali = 'fll'; + case Flinders_Island = 'fln'; + case Fuliiru = 'flr'; + case Flaaitaal = 'fly'; + case Fe_fe = 'fmp'; + case Far_Western_Muria = 'fmu'; + case Fanbak = 'fnb'; + case Fanagalo = 'fng'; + case Fania = 'fni'; + case Foodo = 'fod'; + case Foi = 'foi'; + case Foma = 'fom'; + case Fon = 'fon'; + case Fore = 'for'; + case Siraya = 'fos'; + case Fernando_Po_Creole_English = 'fpe'; + case Fas = 'fqs'; + case French = 'fra'; + case Cajun_French = 'frc'; + case Fordata = 'frd'; + case Frankish = 'frk'; + case Middle_French_ca_1400_1600 = 'frm'; + case Old_French_842_ca_1400 = 'fro'; + case Arpitan = 'frp'; + case Forak = 'frq'; + case Northern_Frisian = 'frr'; + case Eastern_Frisian = 'frs'; + case Fortsenal = 'frt'; + case Western_Frisian = 'fry'; + case Finnish_Sign_Language = 'fse'; + case French_Sign_Language = 'fsl'; + case Finland_Swedish_Sign_Language = 'fss'; + case Adamawa_Fulfulde = 'fub'; + case Pulaar = 'fuc'; + case East_Futuna = 'fud'; + case Borgu_Fulfulde = 'fue'; + case Pular = 'fuf'; + case Western_Niger_Fulfulde = 'fuh'; + case Bagirmi_Fulfulde = 'fui'; + case Ko = 'fuj'; + case Fulah = 'ful'; + case Fum = 'fum'; + case Fulnio = 'fun'; + case Central_Eastern_Niger_Fulfulde = 'fuq'; + case Friulian = 'fur'; + case Futuna_Aniwa = 'fut'; + case Furu = 'fuu'; + case Nigerian_Fulfulde = 'fuv'; + case Fuyug = 'fuy'; + case Fur = 'fvr'; + case Fwai = 'fwa'; + case Fwe = 'fwe'; + case Ga = 'gaa'; + case Gabri = 'gab'; + case Mixed_Great_Andamanese = 'gac'; + case Gaddang = 'gad'; + case Guarequena = 'gae'; + case Gende = 'gaf'; + case Gagauz = 'gag'; + case Alekano = 'gah'; + case Borei = 'gai'; + case Gadsup = 'gaj'; + case Gamkonora = 'gak'; + case Galolen = 'gal'; + case Kandawo = 'gam'; + case Gan_Chinese = 'gan'; + case Gants = 'gao'; + case Gal = 'gap'; + case Gata = 'gaq'; + case Galeya = 'gar'; + case Adiwasi_Garasia = 'gas'; + case Kenati = 'gat'; + case Mudhili_Gadaba = 'gau'; + case Nobonob = 'gaw'; + case Borana_Arsi_Guji_Oromo = 'gax'; + case Gayo = 'gay'; + case West_Central_Oromo = 'gaz'; + case Gbaya_Central_African_Republic = 'gba'; + case Kaytetye = 'gbb'; + case Karajarri = 'gbd'; + case Niksek = 'gbe'; + case Gaikundi = 'gbf'; + case Gbanziri = 'gbg'; + case Defi_Gbe = 'gbh'; + case Galela = 'gbi'; + case Bodo_Gadaba = 'gbj'; + case Gaddi = 'gbk'; + case Gamit = 'gbl'; + case Garhwali = 'gbm'; + case Mo_da = 'gbn'; + case Northern_Grebo = 'gbo'; + case Gbaya_Bossangoa = 'gbp'; + case Gbaya_Bozoum = 'gbq'; + case Gbagyi = 'gbr'; + case Gbesi_Gbe = 'gbs'; + case Gagadu = 'gbu'; + case Gbanu = 'gbv'; + case Gabi_Gabi = 'gbw'; + case Eastern_Xwla_Gbe = 'gbx'; + case Gbari = 'gby'; + case Zoroastrian_Dari = 'gbz'; + case Mali = 'gcc'; + case Ganggalida = 'gcd'; + case Galice = 'gce'; + case Guadeloupean_Creole_French = 'gcf'; + case Grenadian_Creole_English = 'gcl'; + case Gaina = 'gcn'; + case Guianese_Creole_French = 'gcr'; + case Colonia_Tovar_German = 'gct'; + case Gade_Lohar = 'gda'; + case Pottangi_Ollar_Gadaba = 'gdb'; + case Gugu_Badhun = 'gdc'; + case Gedaged = 'gdd'; + case Gude = 'gde'; + case Guduf_Gava = 'gdf'; + case Ga_dang = 'gdg'; + case Gadjerawang = 'gdh'; + case Gundi = 'gdi'; + case Gurdjar = 'gdj'; + case Gadang = 'gdk'; + case Dirasha = 'gdl'; + case Laal = 'gdm'; + case Umanakaina = 'gdn'; + case Ghodoberi = 'gdo'; + case Mehri = 'gdq'; + case Wipi = 'gdr'; + case Ghandruk_Sign_Language = 'gds'; + case Kungardutyi = 'gdt'; + case Gudu = 'gdu'; + case Godwari = 'gdx'; + case Geruma = 'gea'; + case Kire = 'geb'; + case Gboloo_Grebo = 'gec'; + case Gade = 'ged'; + case Gerai = 'gef'; + case Gengle = 'geg'; + case Hutterite_German = 'geh'; + case Gebe = 'gei'; + case Gen = 'gej'; + case Ywom = 'gek'; + case ut_Ma_in = 'gel'; + case Geme = 'geq'; + case Geser_Gorom = 'ges'; + case Eviya = 'gev'; + case Gera = 'gew'; + case Garre = 'gex'; + case Enya = 'gey'; + case Geez = 'gez'; + case Patpatar = 'gfk'; + case Gafat = 'gft'; + case Gao = 'gga'; + case Gbii = 'ggb'; + case Gugadj = 'ggd'; + case Gurr_goni = 'gge'; + case Gurgula = 'ggg'; + case Kungarakany = 'ggk'; + case Ganglau = 'ggl'; + case Gitua = 'ggt'; + case Gagu = 'ggu'; + case Gogodala = 'ggw'; + case Ghadames = 'gha'; + case Hiberno_Scottish_Gaelic = 'ghc'; + case Southern_Ghale = 'ghe'; + case Northern_Ghale = 'ghh'; + case Geko_Karen = 'ghk'; + case Ghulfan = 'ghl'; + case Ghanongga = 'ghn'; + case Ghomara = 'gho'; + case Ghera = 'ghr'; + case Guhu_Samane = 'ghs'; + case Kuke = 'ght'; + case Kija = 'gia'; + case Gibanawa = 'gib'; + case Gail = 'gic'; + case Gidar = 'gid'; + case Gabogbo = 'gie'; + case Goaria = 'gig'; + case Githabul = 'gih'; + case Girirra = 'gii'; + case Gilbertese = 'gil'; + case Gimi_Eastern_Highlands = 'gim'; + case Hinukh = 'gin'; + case Gimi_West_New_Britain = 'gip'; + case Green_Gelao = 'giq'; + case Red_Gelao = 'gir'; + case North_Giziga = 'gis'; + case Gitxsan = 'git'; + case Mulao = 'giu'; + case White_Gelao = 'giw'; + case Gilima = 'gix'; + case Giyug = 'giy'; + case South_Giziga = 'giz'; + case Kachi_Koli = 'gjk'; + case Gunditjmara = 'gjm'; + case Gonja = 'gjn'; + case Gurindji_Kriol = 'gjr'; + case Gujari = 'gju'; + case Guya = 'gka'; + case Magi_Madang_Province = 'gkd'; + case Ndai = 'gke'; + case Gokana = 'gkn'; + case Kok_Nar = 'gko'; + case Guinea_Kpelle = 'gkp'; + case Ungkue = 'gku'; + case Scottish_Gaelic = 'gla'; + case Belning = 'glb'; + case Bon_Gula = 'glc'; + case Nanai = 'gld'; + case Irish = 'gle'; + case Galician = 'glg'; + case Northwest_Pashai = 'glh'; + case Gula_Iro = 'glj'; + case Gilaki = 'glk'; + case Garlali = 'gll'; + case Galambu = 'glo'; + case Glaro_Twabo = 'glr'; + case Gula_Chad = 'glu'; + case Manx = 'glv'; + case Glavda = 'glw'; + case Gule = 'gly'; + case Gambera = 'gma'; + case Gula_alaa = 'gmb'; + case Maghdi = 'gmd'; + case Magiyi = 'gmg'; + case Middle_High_German_ca_1050_1500 = 'gmh'; + case Middle_Low_German = 'gml'; + case Gbaya_Mbodomo = 'gmm'; + case Gimnime = 'gmn'; + case Mirning = 'gmr'; + case Gumalu = 'gmu'; + case Gamo = 'gmv'; + case Magoma = 'gmx'; + case Mycenaean_Greek = 'gmy'; + case Mgbolizhia = 'gmz'; + case Kaansa = 'gna'; + case Gangte = 'gnb'; + case Guanche = 'gnc'; + case Zulgo_Gemzek = 'gnd'; + case Ganang = 'gne'; + case Ngangam = 'gng'; + case Lere = 'gnh'; + case Gooniyandi = 'gni'; + case Ngen = 'gnj'; + case Gana = 'gnk'; + case Gangulu = 'gnl'; + case Ginuman = 'gnm'; + case Gumatj = 'gnn'; + case Northern_Gondi = 'gno'; + case Gana_2 = 'gnq'; + case Gureng_Gureng = 'gnr'; + case Guntai = 'gnt'; + case Gnau = 'gnu'; + case Western_Bolivian_Guarani = 'gnw'; + case Ganzi = 'gnz'; + case Guro = 'goa'; + case Playero = 'gob'; + case Gorakor = 'goc'; + case Godie = 'god'; + case Gongduk = 'goe'; + case Gofa = 'gof'; + case Gogo = 'gog'; + case Old_High_German_ca_750_1050 = 'goh'; + case Gobasi = 'goi'; + case Gowlan = 'goj'; + case Gowli = 'gok'; + case Gola = 'gol'; + case Goan_Konkani = 'gom'; + case Gondi = 'gon'; + case Gone_Dau = 'goo'; + case Yeretuar = 'gop'; + case Gorap = 'goq'; + case Gorontalo = 'gor'; + case Gronings = 'gos'; + case Gothic = 'got'; + case Gavar = 'gou'; + case Goo = 'gov'; + case Gorowa = 'gow'; + case Gobu = 'gox'; + case Goundo = 'goy'; + case Gozarkhani = 'goz'; + case Gupa_Abawa = 'gpa'; + case Ghanaian_Pidgin_English = 'gpe'; + case Taiap = 'gpn'; + case Ga_anda = 'gqa'; + case Guiqiong = 'gqi'; + case Guana_Brazil = 'gqn'; + case Gor = 'gqr'; + case Qau = 'gqu'; + case Rajput_Garasia = 'gra'; + case Grebo = 'grb'; + case Ancient_Greek_to_1453 = 'grc'; + case Guruntum_Mbaaru = 'grd'; + case Madi = 'grg'; + case Gbiri_Niragu = 'grh'; + case Ghari = 'gri'; + case Southern_Grebo = 'grj'; + case Kota_Marudu_Talantang = 'grm'; + case Guarani = 'grn'; + case Groma = 'gro'; + case Gorovu = 'grq'; + case Taznatit = 'grr'; + case Gresi = 'grs'; + case Garo = 'grt'; + case Kistane = 'gru'; + case Central_Grebo = 'grv'; + case Gweda = 'grw'; + case Guriaso = 'grx'; + case Barclayville_Grebo = 'gry'; + case Guramalum = 'grz'; + case Ghanaian_Sign_Language = 'gse'; + case German_Sign_Language = 'gsg'; + case Gusilay = 'gsl'; + case Guatemalan_Sign_Language = 'gsm'; + case Nema = 'gsn'; + case Southwest_Gbaya = 'gso'; + case Wasembo = 'gsp'; + case Greek_Sign_Language = 'gss'; + case Swiss_German = 'gsw'; + case Guato = 'gta'; + case Aghu_Tharnggala = 'gtu'; + case Shiki = 'gua'; + case Guajajara = 'gub'; + case Wayuu = 'guc'; + case Yocoboue_Dida = 'gud'; + case Gurindji = 'gue'; + case Gupapuyngu = 'guf'; + case Paraguayan_Guarani = 'gug'; + case Guahibo = 'guh'; + case Eastern_Bolivian_Guarani = 'gui'; + case Gujarati = 'guj'; + case Gumuz = 'guk'; + case Sea_Island_Creole_English = 'gul'; + case Guambiano = 'gum'; + case Mbya_Guarani = 'gun'; + case Guayabero = 'guo'; + case Gunwinggu = 'gup'; + case Ache = 'guq'; + case Farefare = 'gur'; + case Guinean_Sign_Language = 'gus'; + case Maleku_Jaika = 'gut'; + case Yanomamo = 'guu'; + case Gun = 'guw'; + case Gourmanchema = 'gux'; + case Gusii = 'guz'; + case Guana_Paraguay = 'gva'; + case Guanano = 'gvc'; + case Duwet = 'gve'; + case Golin = 'gvf'; + case Guaja = 'gvj'; + case Gulay = 'gvl'; + case Gurmana = 'gvm'; + case Kuku_Yalanji = 'gvn'; + case Gaviao_Do_Jiparana = 'gvo'; + case Para_Gaviao = 'gvp'; + case Gurung = 'gvr'; + case Gumawana = 'gvs'; + case Guyani = 'gvy'; + case Mbato = 'gwa'; + case Gwa = 'gwb'; + case Gawri = 'gwc'; + case Gawwada = 'gwd'; + case Gweno = 'gwe'; + case Gowro = 'gwf'; + case Moo = 'gwg'; + case Gwich_in = 'gwi'; + case Gwi = 'gwj'; + case Awngthim = 'gwm'; + case Gwandara = 'gwn'; + case Gwere = 'gwr'; + case Gawar_Bati = 'gwt'; + case Guwamu = 'gwu'; + case Kwini = 'gww'; + case Gua = 'gwx'; + case We_Southern = 'gxx'; + case Northwest_Gbaya = 'gya'; + case Garus = 'gyb'; + case Kayardild = 'gyd'; + case Gyem = 'gye'; + case Gungabula = 'gyf'; + case Gbayi = 'gyg'; + case Gyele = 'gyi'; + case Gayil = 'gyl'; + case Ngabere = 'gym'; + case Guyanese_Creole_English = 'gyn'; + case Gyalsumdo = 'gyo'; + case Guarayu = 'gyr'; + case Gunya = 'gyy'; + case Geji = 'gyz'; + case Ganza = 'gza'; + case Gazi = 'gzi'; + case Gane = 'gzn'; + case Han = 'haa'; + case Hanoi_Sign_Language = 'hab'; + case Gurani = 'hac'; + case Hatam = 'had'; + case Eastern_Oromo = 'hae'; + case Haiphong_Sign_Language = 'haf'; + case Hanga = 'hag'; + case Hahon = 'hah'; + case Haida = 'hai'; + case Hajong = 'haj'; + case Hakka_Chinese = 'hak'; + case Halang = 'hal'; + case Hewa = 'ham'; + case Hangaza = 'han'; + case Hako = 'hao'; + case Hupla = 'hap'; + case Ha = 'haq'; + case Harari = 'har'; + case Haisla = 'has'; + case Haitian = 'hat'; + case Hausa = 'hau'; + case Havu = 'hav'; + case Hawaiian = 'haw'; + case Southern_Haida = 'hax'; + case Haya = 'hay'; + case Hazaragi = 'haz'; + case Hamba = 'hba'; + case Huba = 'hbb'; + case Heiban = 'hbn'; + case Ancient_Hebrew = 'hbo'; + case Serbo_Croatian = 'hbs'; + case Habu = 'hbu'; + case Andaman_Creole_Hindi = 'hca'; + case Huichol = 'hch'; + case Northern_Haida = 'hdn'; + case Honduras_Sign_Language = 'hds'; + case Hadiyya = 'hdy'; + case Northern_Qiandong_Miao = 'hea'; + case Hebrew = 'heb'; + case Herde = 'hed'; + case Helong = 'heg'; + case Hehe = 'heh'; + case Heiltsuk = 'hei'; + case Hemba = 'hem'; + case Herero = 'her'; + case Hai_om = 'hgm'; + case Haigwai = 'hgw'; + case Hoia_Hoia = 'hhi'; + case Kerak = 'hhr'; + case Hoyahoya = 'hhy'; + case Lamang = 'hia'; + case Hibito = 'hib'; + case Hidatsa = 'hid'; + case Fiji_Hindi = 'hif'; + case Kamwe = 'hig'; + case Pamosu = 'hih'; + case Hinduri = 'hii'; + case Hijuk = 'hij'; + case Seit_Kaitetu = 'hik'; + case Hiligaynon = 'hil'; + case Hindi = 'hin'; + case Tsoa = 'hio'; + case Himarima = 'hir'; + case Hittite = 'hit'; + case Hiw = 'hiw'; + case Hixkaryana = 'hix'; + case Haji = 'hji'; + case Kahe = 'hka'; + case Hunde = 'hke'; + case Khah = 'hkh'; + case Hunjara_Kaina_Ke = 'hkk'; + case Mel_Khaonh = 'hkn'; + case Hong_Kong_Sign_Language = 'hks'; + case Halia = 'hla'; + case Halbi = 'hlb'; + case Halang_Doan = 'hld'; + case Hlersu = 'hle'; + case Matu_Chin = 'hlt'; + case Hieroglyphic_Luwian = 'hlu'; + case Southern_Mashan_Hmong = 'hma'; + case Humburi_Senni_Songhay = 'hmb'; + case Central_Huishui_Hmong = 'hmc'; + case Large_Flowery_Miao = 'hmd'; + case Eastern_Huishui_Hmong = 'hme'; + case Hmong_Don = 'hmf'; + case Southwestern_Guiyang_Hmong = 'hmg'; + case Southwestern_Huishui_Hmong = 'hmh'; + case Northern_Huishui_Hmong = 'hmi'; + case Ge = 'hmj'; + case Maek = 'hmk'; + case Luopohe_Hmong = 'hml'; + case Central_Mashan_Hmong = 'hmm'; + case Hmong = 'hmn'; + case Hiri_Motu = 'hmo'; + case Northern_Mashan_Hmong = 'hmp'; + case Eastern_Qiandong_Miao = 'hmq'; + case Hmar = 'hmr'; + case Southern_Qiandong_Miao = 'hms'; + case Hamtai = 'hmt'; + case Hamap = 'hmu'; + case Hmong_Do = 'hmv'; + case Western_Mashan_Hmong = 'hmw'; + case Southern_Guiyang_Hmong = 'hmy'; + case Hmong_Shua = 'hmz'; + case Mina_Cameroon = 'hna'; + case Southern_Hindko = 'hnd'; + case Chhattisgarhi = 'hne'; + case Hungu = 'hng'; + case Ani = 'hnh'; + case Hani = 'hni'; + case Hmong_Njua = 'hnj'; + case Hanunoo = 'hnn'; + case Northern_Hindko = 'hno'; + case Caribbean_Hindustani = 'hns'; + case Hung = 'hnu'; + case Hoava = 'hoa'; + case Mari_Madang_Province = 'hob'; + case Ho = 'hoc'; + case Holma = 'hod'; + case Horom = 'hoe'; + case Hobyot = 'hoh'; + case Holikachuk = 'hoi'; + case Hadothi = 'hoj'; + case Holu = 'hol'; + case Homa = 'hom'; + case Holoholo = 'hoo'; + case Hopi = 'hop'; + case Horo = 'hor'; + case Ho_Chi_Minh_City_Sign_Language = 'hos'; + case Hote = 'hot'; + case Hovongan = 'hov'; + case Honi = 'how'; + case Holiya = 'hoy'; + case Hozo = 'hoz'; + case Hpon = 'hpo'; + case Hawai_i_Sign_Language_HSL = 'hps'; + case Hrangkhol = 'hra'; + case Niwer_Mil = 'hrc'; + case Hre = 'hre'; + case Haruku = 'hrk'; + case Horned_Miao = 'hrm'; + case Haroi = 'hro'; + case Nhirrpi = 'hrp'; + case Hertevin = 'hrt'; + case Hruso = 'hru'; + case Croatian = 'hrv'; + case Warwar_Feni = 'hrw'; + case Hunsrik = 'hrx'; + case Harzani = 'hrz'; + case Upper_Sorbian = 'hsb'; + case Hungarian_Sign_Language = 'hsh'; + case Hausa_Sign_Language = 'hsl'; + case Xiang_Chinese = 'hsn'; + case Harsusi = 'hss'; + case Hoti = 'hti'; + case Minica_Huitoto = 'hto'; + case Hadza = 'hts'; + case Hitu = 'htu'; + case Middle_Hittite = 'htx'; + case Huambisa = 'hub'; + case Hua = 'huc'; + case Huaulu = 'hud'; + case San_Francisco_Del_Mar_Huave = 'hue'; + case Humene = 'huf'; + case Huachipaeri = 'hug'; + case Huilliche = 'huh'; + case Huli = 'hui'; + case Northern_Guiyang_Hmong = 'huj'; + case Hulung = 'huk'; + case Hula = 'hul'; + case Hungana = 'hum'; + case Hungarian = 'hun'; + case Hu = 'huo'; + case Hupa = 'hup'; + case Tsat = 'huq'; + case Halkomelem = 'hur'; + case Huastec = 'hus'; + case Humla = 'hut'; + case Murui_Huitoto = 'huu'; + case San_Mateo_Del_Mar_Huave = 'huv'; + case Hukumina = 'huw'; + case Nupode_Huitoto = 'hux'; + case Hulaula = 'huy'; + case Hunzib = 'huz'; + case Haitian_Vodoun_Culture_Language = 'hvc'; + case San_Dionisio_Del_Mar_Huave = 'hve'; + case Haveke = 'hvk'; + case Sabu = 'hvn'; + case Santa_Maria_Del_Mar_Huave = 'hvv'; + case Wane = 'hwa'; + case Hawai_i_Creole_English = 'hwc'; + case Hwana = 'hwo'; + case Hya = 'hya'; + case Armenian = 'hye'; + case Western_Armenian = 'hyw'; + case Iaai = 'iai'; + case Iatmul = 'ian'; + case Purari = 'iar'; + case Iban = 'iba'; + case Ibibio = 'ibb'; + case Iwaidja = 'ibd'; + case Akpes = 'ibe'; + case Ibanag = 'ibg'; + case Bih = 'ibh'; + case Ibaloi = 'ibl'; + case Agoi = 'ibm'; + case Ibino = 'ibn'; + case Igbo = 'ibo'; + case Ibuoro = 'ibr'; + case Ibu = 'ibu'; + case Ibani = 'iby'; + case Ede_Ica = 'ica'; + case Etkywan = 'ich'; + case Icelandic_Sign_Language = 'icl'; + case Islander_Creole_English = 'icr'; + case Idakho_Isukha_Tiriki = 'ida'; + case Indo_Portuguese = 'idb'; + case Idon = 'idc'; + case Ede_Idaca = 'idd'; + case Idere = 'ide'; + case Idi = 'idi'; + case Ido = 'ido'; + case Indri = 'idr'; + case Idesa = 'ids'; + case Idate = 'idt'; + case Idoma = 'idu'; + case Amganad_Ifugao = 'ifa'; + case Batad_Ifugao = 'ifb'; + case Ife = 'ife'; + case Ifo = 'iff'; + case Tuwali_Ifugao = 'ifk'; + case Teke_Fuumu = 'ifm'; + case Mayoyao_Ifugao = 'ifu'; + case Keley_I_Kallahan = 'ify'; + case Ebira = 'igb'; + case Igede = 'ige'; + case Igana = 'igg'; + case Igala = 'igl'; + case Kanggape = 'igm'; + case Ignaciano = 'ign'; + case Isebe = 'igo'; + case Interglossa = 'igs'; + case Igwe = 'igw'; + case Iha_Based_Pidgin = 'ihb'; + case Ihievbe = 'ihi'; + case Iha = 'ihp'; + case Bidhawal = 'ihw'; + case Sichuan_Yi = 'iii'; + case Thiin = 'iin'; + case Izon = 'ijc'; + case Biseni = 'ije'; + case Ede_Ije = 'ijj'; + case Kalabari = 'ijn'; + case Southeast_Ijo = 'ijs'; + case Eastern_Canadian_Inuktitut = 'ike'; + case Ikhin_Arokho = 'ikh'; + case Iko = 'iki'; + case Ika = 'ikk'; + case Ikulu = 'ikl'; + case Olulumo_Ikom = 'iko'; + case Ikpeshi = 'ikp'; + case Ikaranggal = 'ikr'; + case Inuit_Sign_Language = 'iks'; + case Inuinnaqtun = 'ikt'; + case Inuktitut = 'iku'; + case Iku_Gora_Ankwa = 'ikv'; + case Ikwere = 'ikw'; + case Ik = 'ikx'; + case Ikizu = 'ikz'; + case Ile_Ape = 'ila'; + case Ila = 'ilb'; + case Interlingue = 'ile'; + case Garig_Ilgar = 'ilg'; + case Ili_Turki = 'ili'; + case Ilongot = 'ilk'; + case Iranun_Malaysia = 'ilm'; + case Iloko = 'ilo'; + case Iranun_Philippines = 'ilp'; + case International_Sign = 'ils'; + case Ili_uun = 'ilu'; + case Ilue = 'ilv'; + case Mala_Malasar = 'ima'; + case Anamgura = 'imi'; + case Miluk = 'iml'; + case Imonda = 'imn'; + case Imbongu = 'imo'; + case Imroing = 'imr'; + case Marsian = 'ims'; + case Imotong = 'imt'; + case Milyan = 'imy'; + case Interlingua_International_Auxiliary_Language_Association = 'ina'; + case Inga = 'inb'; + case Indonesian = 'ind'; + case Degexit_an = 'ing'; + case Ingush = 'inh'; + case Jungle_Inga = 'inj'; + case Indonesian_Sign_Language = 'inl'; + case Minaean = 'inm'; + case Isinai = 'inn'; + case Inoke_Yate = 'ino'; + case Inapari = 'inp'; + case Indian_Sign_Language = 'ins'; + case Intha = 'int'; + case Ineseno = 'inz'; + case Inor = 'ior'; + case Tuma_Irumu = 'iou'; + case Iowa_Oto = 'iow'; + case Ipili = 'ipi'; + case Inupiaq = 'ipk'; + case Ipiko = 'ipo'; + case Iquito = 'iqu'; + case Ikwo = 'iqw'; + case Iresim = 'ire'; + case Irarutu = 'irh'; + case Rigwe = 'iri'; + case Iraqw = 'irk'; + case Irantxe = 'irn'; + case Ir = 'irr'; + case Irula = 'iru'; + case Kamberau = 'irx'; + case Iraya = 'iry'; + case Isabi = 'isa'; + case Isconahua = 'isc'; + case Isnag = 'isd'; + case Italian_Sign_Language = 'ise'; + case Irish_Sign_Language = 'isg'; + case Esan = 'ish'; + case Nkem_Nkum = 'isi'; + case Ishkashimi = 'isk'; + case Icelandic = 'isl'; + case Masimasi = 'ism'; + case Isanzu = 'isn'; + case Isoko = 'iso'; + case Israeli_Sign_Language = 'isr'; + case Istriot = 'ist'; + case Isu_Menchum_Division = 'isu'; + case Italian = 'ita'; + case Binongan_Itneg = 'itb'; + case Southern_Tidung = 'itd'; + case Itene = 'ite'; + case Inlaod_Itneg = 'iti'; + case Judeo_Italian = 'itk'; + case Itelmen = 'itl'; + case Itu_Mbon_Uzo = 'itm'; + case Itonama = 'ito'; + case Iteri = 'itr'; + case Isekiri = 'its'; + case Maeng_Itneg = 'itt'; + case Itawit = 'itv'; + case Ito = 'itw'; + case Itik = 'itx'; + case Moyadan_Itneg = 'ity'; + case Itza = 'itz'; + case Iu_Mien = 'ium'; + case Ibatan = 'ivb'; + case Ivatan = 'ivv'; + case I_Wak = 'iwk'; + case Iwam = 'iwm'; + case Iwur = 'iwo'; + case Sepik_Iwam = 'iws'; + case Ixcatec = 'ixc'; + case Ixil = 'ixl'; + case Iyayu = 'iya'; + case Mesaka = 'iyo'; + case Yaka_Congo = 'iyx'; + case Ingrian = 'izh'; + case Kizamani = 'izm'; + case Izere = 'izr'; + case Izii = 'izz'; + case Jamamadi = 'jaa'; + case Hyam = 'jab'; + case Popti = 'jac'; + case Jahanka = 'jad'; + case Yabem = 'jae'; + case Jara = 'jaf'; + case Jah_Hut = 'jah'; + case Zazao = 'jaj'; + case Jakun = 'jak'; + case Yalahatan = 'jal'; + case Jamaican_Creole_English = 'jam'; + case Jandai = 'jan'; + case Yanyuwa = 'jao'; + case Yaqay = 'jaq'; + case New_Caledonian_Javanese = 'jas'; + case Jakati = 'jat'; + case Yaur = 'jau'; + case Javanese = 'jav'; + case Jambi_Malay = 'jax'; + case Yan_nhangu = 'jay'; + case Jawe = 'jaz'; + case Judeo_Berber = 'jbe'; + case Badjiri = 'jbi'; + case Arandai = 'jbj'; + case Barikewa = 'jbk'; + case Bijim = 'jbm'; + case Nafusi = 'jbn'; + case Lojban = 'jbo'; + case Jofotek_Bromnya = 'jbr'; + case Jabuti = 'jbt'; + case Jukun_Takum = 'jbu'; + case Yawijibaya = 'jbw'; + case Jamaican_Country_Sign_Language = 'jcs'; + case Krymchak = 'jct'; + case Jad = 'jda'; + case Jadgali = 'jdg'; + case Judeo_Tat = 'jdt'; + case Jebero = 'jeb'; + case Jerung = 'jee'; + case Jeh = 'jeh'; + case Yei = 'jei'; + case Jeri_Kuo = 'jek'; + case Yelmek = 'jel'; + case Dza = 'jen'; + case Jere = 'jer'; + case Manem = 'jet'; + case Jonkor_Bourmataguil = 'jeu'; + case Ngbee = 'jgb'; + case Judeo_Georgian = 'jge'; + case Gwak = 'jgk'; + case Ngomba = 'jgo'; + case Jehai = 'jhi'; + case Jhankot_Sign_Language = 'jhs'; + case Jina = 'jia'; + case Jibu = 'jib'; + case Tol = 'jic'; + case Bu_Kaduna_State = 'jid'; + case Jilbe = 'jie'; + case Jingulu = 'jig'; + case sTodsde = 'jih'; + case Jiiddu = 'jii'; + case Jilim = 'jil'; + case Jimi_Cameroon = 'jim'; + case Jiamao = 'jio'; + case Guanyinqiao = 'jiq'; + case Jita = 'jit'; + case Youle_Jinuo = 'jiu'; + case Shuar = 'jiv'; + case Buyuan_Jinuo = 'jiy'; + case Jejueo = 'jje'; + case Bankal = 'jjr'; + case Kaera = 'jka'; + case Mobwa_Karen = 'jkm'; + case Kubo = 'jko'; + case Paku_Karen = 'jkp'; + case Koro_India = 'jkr'; + case Amami_Koniya_Sign_Language = 'jks'; + case Labir = 'jku'; + case Ngile = 'jle'; + case Jamaican_Sign_Language = 'jls'; + case Dima = 'jma'; + case Zumbun = 'jmb'; + case Machame = 'jmc'; + case Yamdena = 'jmd'; + case Jimi_Nigeria = 'jmi'; + case Jumli = 'jml'; + case Makuri_Naga = 'jmn'; + case Kamara = 'jmr'; + case Mashi_Nigeria = 'jms'; + case Mouwase = 'jmw'; + case Western_Juxtlahuaca_Mixtec = 'jmx'; + case Jangshung = 'jna'; + case Jandavra = 'jnd'; + case Yangman = 'jng'; + case Janji = 'jni'; + case Yemsa = 'jnj'; + case Rawat = 'jnl'; + case Jaunsari = 'jns'; + case Joba = 'job'; + case Wojenaka = 'jod'; + case Jogi = 'jog'; + case Jora = 'jor'; + case Jordanian_Sign_Language = 'jos'; + case Jowulu = 'jow'; + case Jewish_Palestinian_Aramaic = 'jpa'; + case Japanese = 'jpn'; + case Judeo_Persian = 'jpr'; + case Jaqaru = 'jqr'; + case Jarai = 'jra'; + case Judeo_Arabic = 'jrb'; + case Jiru = 'jrr'; + case Jakattoe = 'jrt'; + case Japreria = 'jru'; + case Japanese_Sign_Language = 'jsl'; + case Juma = 'jua'; + case Wannu = 'jub'; + case Jurchen = 'juc'; + case Worodougou = 'jud'; + case Hone = 'juh'; + case Ngadjuri = 'jui'; + case Wapan = 'juk'; + case Jirel = 'jul'; + case Jumjum = 'jum'; + case Juang = 'jun'; + case Jiba = 'juo'; + case Hupde = 'jup'; + case Juruna = 'jur'; + case Jumla_Sign_Language = 'jus'; + case Jutish = 'jut'; + case Ju = 'juu'; + case Wapha = 'juw'; + case Juray = 'juy'; + case Javindo = 'jvd'; + case Caribbean_Javanese = 'jvn'; + case Jwira_Pepesa = 'jwi'; + case Jiarong = 'jya'; + case Judeo_Yemeni_Arabic = 'jye'; + case Jaya = 'jyy'; + case Kara_Kalpak = 'kaa'; + case Kabyle = 'kab'; + case Kachin = 'kac'; + case Adara = 'kad'; + case Ketangalan = 'kae'; + case Katso = 'kaf'; + case Kajaman = 'kag'; + case Kara_Central_African_Republic = 'kah'; + case Karekare = 'kai'; + case Jju = 'kaj'; + case Kalanguya = 'kak'; + case Kalaallisut = 'kal'; + case Kamba_Kenya = 'kam'; + case Kannada = 'kan'; + case Xaasongaxango = 'kao'; + case Bezhta = 'kap'; + case Capanahua = 'kaq'; + case Kashmiri = 'kas'; + case Georgian = 'kat'; + case Kanuri = 'kau'; + case Katukina = 'kav'; + case Kawi = 'kaw'; + case Kao = 'kax'; + case Kamayura = 'kay'; + case Kazakh = 'kaz'; + case Kalarko = 'kba'; + case Kaxuiana = 'kbb'; + case Kadiweu = 'kbc'; + case Kabardian = 'kbd'; + case Kanju = 'kbe'; + case Khamba = 'kbg'; + case Camsa = 'kbh'; + case Kaptiau = 'kbi'; + case Kari = 'kbj'; + case Grass_Koiari = 'kbk'; + case Kanembu = 'kbl'; + case Iwal = 'kbm'; + case Kare_Central_African_Republic = 'kbn'; + case Keliko = 'kbo'; + case Kabiye = 'kbp'; + case Kamano = 'kbq'; + case Kafa = 'kbr'; + case Kande = 'kbs'; + case Abadi = 'kbt'; + case Kabutra = 'kbu'; + case Dera_Indonesia = 'kbv'; + case Kaiep = 'kbw'; + case Ap_Ma = 'kbx'; + case Manga_Kanuri = 'kby'; + case Duhwa = 'kbz'; + case Khanty = 'kca'; + case Kawacha = 'kcb'; + case Lubila = 'kcc'; + case Ngkalmpw_Kanum = 'kcd'; + case Kaivi = 'kce'; + case Ukaan = 'kcf'; + case Tyap = 'kcg'; + case Vono = 'kch'; + case Kamantan = 'kci'; + case Kobiana = 'kcj'; + case Kalanga = 'kck'; + case Kela_Papua_New_Guinea = 'kcl'; + case Gula_Central_African_Republic = 'kcm'; + case Nubi = 'kcn'; + case Kinalakna = 'kco'; + case Kanga = 'kcp'; + case Kamo = 'kcq'; + case Katla = 'kcr'; + case Koenoem = 'kcs'; + case Kaian = 'kct'; + case Kami_Tanzania = 'kcu'; + case Kete = 'kcv'; + case Kabwari = 'kcw'; + case Kachama_Ganjule = 'kcx'; + case Korandje = 'kcy'; + case Konongo = 'kcz'; + case Worimi = 'kda'; + case Kutu = 'kdc'; + case Yankunytjatjara = 'kdd'; + case Makonde = 'kde'; + case Mamusi = 'kdf'; + case Seba = 'kdg'; + case Tem = 'kdh'; + case Kumam = 'kdi'; + case Karamojong = 'kdj'; + case Numee = 'kdk'; + case Tsikimba = 'kdl'; + case Kagoma = 'kdm'; + case Kunda = 'kdn'; + case Kaningdon_Nindem = 'kdp'; + case Koch = 'kdq'; + case Karaim = 'kdr'; + case Kuy = 'kdt'; + case Kadaru = 'kdu'; + case Koneraw = 'kdw'; + case Kam = 'kdx'; + case Keder = 'kdy'; + case Kwaja = 'kdz'; + case Kabuverdianu = 'kea'; + case Kele = 'keb'; + case Keiga = 'kec'; + case Kerewe = 'ked'; + case Eastern_Keres = 'kee'; + case Kpessi = 'kef'; + case Tese = 'keg'; + case Keak = 'keh'; + case Kei = 'kei'; + case Kadar = 'kej'; + case Kekchi = 'kek'; + case Kela_Democratic_Republic_of_Congo = 'kel'; + case Kemak = 'kem'; + case Kenyang = 'ken'; + case Kakwa = 'keo'; + case Kaikadi = 'kep'; + case Kamar = 'keq'; + case Kera = 'ker'; + case Kugbo = 'kes'; + case Ket = 'ket'; + case Akebu = 'keu'; + case Kanikkaran = 'kev'; + case West_Kewa = 'kew'; + case Kukna = 'kex'; + case Kupia = 'key'; + case Kukele = 'kez'; + case Kodava = 'kfa'; + case Northwestern_Kolami = 'kfb'; + case Konda_Dora = 'kfc'; + case Korra_Koraga = 'kfd'; + case Kota_India = 'kfe'; + case Koya = 'kff'; + case Kudiya = 'kfg'; + case Kurichiya = 'kfh'; + case Kannada_Kurumba = 'kfi'; + case Kemiehua = 'kfj'; + case Kinnauri = 'kfk'; + case Kung = 'kfl'; + case Khunsari = 'kfm'; + case Kuk = 'kfn'; + case Koro_Cote_d_Ivoire = 'kfo'; + case Korwa = 'kfp'; + case Korku = 'kfq'; + case Kachhi = 'kfr'; + case Bilaspuri = 'kfs'; + case Kanjari = 'kft'; + case Katkari = 'kfu'; + case Kurmukar = 'kfv'; + case Kharam_Naga = 'kfw'; + case Kullu_Pahari = 'kfx'; + case Kumaoni = 'kfy'; + case Koromfe = 'kfz'; + case Koyaga = 'kga'; + case Kawe = 'kgb'; + case Komering = 'kge'; + case Kube = 'kgf'; + case Kusunda = 'kgg'; + case Selangor_Sign_Language = 'kgi'; + case Gamale_Kham = 'kgj'; + case Kaiwa = 'kgk'; + case Kunggari = 'kgl'; + case Karingani = 'kgn'; + case Krongo = 'kgo'; + case Kaingang = 'kgp'; + case Kamoro = 'kgq'; + case Abun = 'kgr'; + case Kumbainggar = 'kgs'; + case Somyev = 'kgt'; + case Kobol = 'kgu'; + case Karas = 'kgv'; + case Karon_Dori = 'kgw'; + case Kamaru = 'kgx'; + case Kyerung = 'kgy'; + case Khasi = 'kha'; + case Lu = 'khb'; + case Tukang_Besi_North = 'khc'; + case Badi_Kanum = 'khd'; + case Korowai = 'khe'; + case Khuen = 'khf'; + case Khams_Tibetan = 'khg'; + case Kehu = 'khh'; + case Kuturmi = 'khj'; + case Halh_Mongolian = 'khk'; + case Lusi = 'khl'; + case Khmer = 'khm'; + case Khandesi = 'khn'; + case Khotanese = 'kho'; + case Kapori = 'khp'; + case Koyra_Chiini_Songhay = 'khq'; + case Kharia = 'khr'; + case Kasua = 'khs'; + case Khamti = 'kht'; + case Nkhumbi = 'khu'; + case Khvarshi = 'khv'; + case Khowar = 'khw'; + case Kanu = 'khx'; + case Kele_Democratic_Republic_of_Congo = 'khy'; + case Keapara = 'khz'; + case Kim = 'kia'; + case Koalib = 'kib'; + case Kickapoo = 'kic'; + case Koshin = 'kid'; + case Kibet = 'kie'; + case Eastern_Parbate_Kham = 'kif'; + case Kimaama = 'kig'; + case Kilmeri = 'kih'; + case Kitsai = 'kii'; + case Kilivila = 'kij'; + case Kikuyu = 'kik'; + case Kariya = 'kil'; + case Karagas = 'kim'; + case Kinyarwanda = 'kin'; + case Kiowa = 'kio'; + case Sheshi_Kham = 'kip'; + case Kosadle = 'kiq'; + case Kirghiz = 'kir'; + case Kis = 'kis'; + case Agob = 'kit'; + case Kirmanjki_individual_language = 'kiu'; + case Kimbu = 'kiv'; + case Northeast_Kiwai = 'kiw'; + case Khiamniungan_Naga = 'kix'; + case Kirikiri = 'kiy'; + case Kisi = 'kiz'; + case Mlap = 'kja'; + case Q_anjob_al = 'kjb'; + case Coastal_Konjo = 'kjc'; + case Southern_Kiwai = 'kjd'; + case Kisar = 'kje'; + case Khmu = 'kjg'; + case Khakas = 'kjh'; + case Zabana = 'kji'; + case Khinalugh = 'kjj'; + case Highland_Konjo = 'kjk'; + case Western_Parbate_Kham = 'kjl'; + case Khang = 'kjm'; + case Kunjen = 'kjn'; + case Harijan_Kinnauri = 'kjo'; + case Pwo_Eastern_Karen = 'kjp'; + case Western_Keres = 'kjq'; + case Kurudu = 'kjr'; + case East_Kewa = 'kjs'; + case Phrae_Pwo_Karen = 'kjt'; + case Kashaya = 'kju'; + case Kaikavian_Literary_Language = 'kjv'; + case Ramopa = 'kjx'; + case Erave = 'kjy'; + case Bumthangkha = 'kjz'; + case Kakanda = 'kka'; + case Kwerisa = 'kkb'; + case Odoodee = 'kkc'; + case Kinuku = 'kkd'; + case Kakabe = 'kke'; + case Kalaktang_Monpa = 'kkf'; + case Mabaka_Valley_Kalinga = 'kkg'; + case Khun = 'kkh'; + case Kagulu = 'kki'; + case Kako = 'kkj'; + case Kokota = 'kkk'; + case Kosarek_Yale = 'kkl'; + case Kiong = 'kkm'; + case Kon_Keu = 'kkn'; + case Karko = 'kko'; + case Gugubera = 'kkp'; + case Kaeku = 'kkq'; + case Kir_Balar = 'kkr'; + case Giiwo = 'kks'; + case Koi = 'kkt'; + case Tumi = 'kku'; + case Kangean = 'kkv'; + case Teke_Kukuya = 'kkw'; + case Kohin = 'kkx'; + case Guugu_Yimidhirr = 'kky'; + case Kaska = 'kkz'; + case Klamath_Modoc = 'kla'; + case Kiliwa = 'klb'; + case Kolbila = 'klc'; + case Gamilaraay = 'kld'; + case Kulung_Nepal = 'kle'; + case Kendeje = 'klf'; + case Tagakaulo = 'klg'; + case Weliki = 'klh'; + case Kalumpang = 'kli'; + case Khalaj = 'klj'; + case Kono_Nigeria = 'klk'; + case Kagan_Kalagan = 'kll'; + case Migum = 'klm'; + case Kalenjin = 'kln'; + case Kapya = 'klo'; + case Kamasa = 'klp'; + case Rumu = 'klq'; + case Khaling = 'klr'; + case Kalasha = 'kls'; + case Nukna = 'klt'; + case Klao = 'klu'; + case Maskelynes = 'klv'; + case Tado = 'klw'; + case Koluwawa = 'klx'; + case Kalao = 'kly'; + case Kabola = 'klz'; + case Konni = 'kma'; + case Kimbundu = 'kmb'; + case Southern_Dong = 'kmc'; + case Majukayang_Kalinga = 'kmd'; + case Bakole = 'kme'; + case Kare_Papua_New_Guinea = 'kmf'; + case Kate = 'kmg'; + case Kalam = 'kmh'; + case Kami_Nigeria = 'kmi'; + case Kumarbhag_Paharia = 'kmj'; + case Limos_Kalinga = 'kmk'; + case Tanudan_Kalinga = 'kml'; + case Kom_India = 'kmm'; + case Awtuw = 'kmn'; + case Kwoma = 'kmo'; + case Gimme = 'kmp'; + case Kwama = 'kmq'; + case Northern_Kurdish = 'kmr'; + case Kamasau = 'kms'; + case Kemtuik = 'kmt'; + case Kanite = 'kmu'; + case Karipuna_Creole_French = 'kmv'; + case Komo_Democratic_Republic_of_Congo = 'kmw'; + case Waboda = 'kmx'; + case Koma = 'kmy'; + case Khorasani_Turkish = 'kmz'; + case Dera_Nigeria = 'kna'; + case Lubuagan_Kalinga = 'knb'; + case Central_Kanuri = 'knc'; + case Konda = 'knd'; + case Kankanaey = 'kne'; + case Mankanya = 'knf'; + case Koongo = 'kng'; + case Kanufi = 'kni'; + case Western_Kanjobal = 'knj'; + case Kuranko = 'knk'; + case Keninjal = 'knl'; + case Kanamari = 'knm'; + case Konkani_individual_language = 'knn'; + case Kono_Sierra_Leone = 'kno'; + case Kwanja = 'knp'; + case Kintaq = 'knq'; + case Kaningra = 'knr'; + case Kensiu = 'kns'; + case Panoan_Katukina = 'knt'; + case Kono_Guinea = 'knu'; + case Tabo = 'knv'; + case Kung_Ekoka = 'knw'; + case Kendayan = 'knx'; + case Kanyok = 'kny'; + case Kalamse = 'knz'; + case Konomala = 'koa'; + case Kpati = 'koc'; + case Kodi = 'kod'; + case Kacipo_Bale_Suri = 'koe'; + case Kubi = 'kof'; + case Cogui = 'kog'; + case Koyo = 'koh'; + case Komi_Permyak = 'koi'; + case Konkani_macrolanguage = 'kok'; + case Kol_Papua_New_Guinea = 'kol'; + case Komi = 'kom'; + case Kongo = 'kon'; + case Konzo = 'koo'; + case Waube = 'kop'; + case Kota_Gabon = 'koq'; + case Korean = 'kor'; + case Kosraean = 'kos'; + case Lagwan = 'kot'; + case Koke = 'kou'; + case Kudu_Camo = 'kov'; + case Kugama = 'kow'; + case Koyukon = 'koy'; + case Korak = 'koz'; + case Kutto = 'kpa'; + case Mullu_Kurumba = 'kpb'; + case Curripaco = 'kpc'; + case Koba = 'kpd'; + case Kpelle = 'kpe'; + case Komba = 'kpf'; + case Kapingamarangi = 'kpg'; + case Kplang = 'kph'; + case Kofei = 'kpi'; + case Karaja = 'kpj'; + case Kpan = 'kpk'; + case Kpala = 'kpl'; + case Koho = 'kpm'; + case Kepkiriwat = 'kpn'; + case Ikposo = 'kpo'; + case Korupun_Sela = 'kpq'; + case Korafe_Yegha = 'kpr'; + case Tehit = 'kps'; + case Karata = 'kpt'; + case Kafoa = 'kpu'; + case Komi_Zyrian = 'kpv'; + case Kobon = 'kpw'; + case Mountain_Koiali = 'kpx'; + case Koryak = 'kpy'; + case Kupsabiny = 'kpz'; + case Mum = 'kqa'; + case Kovai = 'kqb'; + case Doromu_Koki = 'kqc'; + case Koy_Sanjaq_Surat = 'kqd'; + case Kalagan = 'kqe'; + case Kakabai = 'kqf'; + case Khe = 'kqg'; + case Kisankasa = 'kqh'; + case Koitabu = 'kqi'; + case Koromira = 'kqj'; + case Kotafon_Gbe = 'kqk'; + case Kyenele = 'kql'; + case Khisa = 'kqm'; + case Kaonde = 'kqn'; + case Eastern_Krahn = 'kqo'; + case Kimre = 'kqp'; + case Krenak = 'kqq'; + case Kimaragang = 'kqr'; + case Northern_Kissi = 'kqs'; + case Klias_River_Kadazan = 'kqt'; + case Seroa = 'kqu'; + case Okolod = 'kqv'; + case Kandas = 'kqw'; + case Mser = 'kqx'; + case Koorete = 'kqy'; + case Korana = 'kqz'; + case Kumhali = 'kra'; + case Karkin = 'krb'; + case Karachay_Balkar = 'krc'; + case Kairui_Midiki = 'krd'; + case Panara = 'kre'; + case Koro_Vanuatu = 'krf'; + case Kurama = 'krh'; + case Krio = 'kri'; + case Kinaray_A = 'krj'; + case Kerek = 'krk'; + case Karelian = 'krl'; + case Sapo = 'krn'; + case Durop = 'krp'; + case Krung = 'krr'; + case Gbaya_Sudan = 'krs'; + case Tumari_Kanuri = 'krt'; + case Kurukh = 'kru'; + case Kavet = 'krv'; + case Western_Krahn = 'krw'; + case Karon = 'krx'; + case Kryts = 'kry'; + case Sota_Kanum = 'krz'; + case Shambala = 'ksb'; + case Southern_Kalinga = 'ksc'; + case Kuanua = 'ksd'; + case Kuni = 'kse'; + case Bafia = 'ksf'; + case Kusaghe = 'ksg'; + case Kolsch = 'ksh'; + case Krisa = 'ksi'; + case Uare = 'ksj'; + case Kansa = 'ksk'; + case Kumalu = 'ksl'; + case Kumba = 'ksm'; + case Kasiguranin = 'ksn'; + case Kofa = 'kso'; + case Kaba = 'ksp'; + case Kwaami = 'ksq'; + case Borong = 'ksr'; + case Southern_Kisi = 'kss'; + case Winye = 'kst'; + case Khamyang = 'ksu'; + case Kusu = 'ksv'; + case S_gaw_Karen = 'ksw'; + case Kedang = 'ksx'; + case Kharia_Thar = 'ksy'; + case Kodaku = 'ksz'; + case Katua = 'kta'; + case Kambaata = 'ktb'; + case Kholok = 'ktc'; + case Kokata = 'ktd'; + case Nubri = 'kte'; + case Kwami = 'ktf'; + case Kalkutung = 'ktg'; + case Karanga = 'kth'; + case North_Muyu = 'kti'; + case Plapo_Krumen = 'ktj'; + case Kaniet = 'ktk'; + case Koroshi = 'ktl'; + case Kurti = 'ktm'; + case Karitiana = 'ktn'; + case Kuot = 'kto'; + case Kaduo = 'ktp'; + case Katabaga = 'ktq'; + case South_Muyu = 'kts'; + case Ketum = 'ktt'; + case Kituba_Democratic_Republic_of_Congo = 'ktu'; + case Eastern_Katu = 'ktv'; + case Kato = 'ktw'; + case Kaxarari = 'ktx'; + case Kango_Bas_Uele_District = 'kty'; + case Ju_hoan = 'ktz'; + case Kuanyama = 'kua'; + case Kutep = 'kub'; + case Kwinsu = 'kuc'; + case Auhelawa = 'kud'; + case Kuman_Papua_New_Guinea = 'kue'; + case Western_Katu = 'kuf'; + case Kupa = 'kug'; + case Kushi = 'kuh'; + case Kuikuro_Kalapalo = 'kui'; + case Kuria = 'kuj'; + case Kepo = 'kuk'; + case Kulere = 'kul'; + case Kumyk = 'kum'; + case Kunama = 'kun'; + case Kumukio = 'kuo'; + case Kunimaipa = 'kup'; + case Karipuna = 'kuq'; + case Kurdish = 'kur'; + case Kusaal = 'kus'; + case Kutenai = 'kut'; + case Upper_Kuskokwim = 'kuu'; + case Kur = 'kuv'; + case Kpagua = 'kuw'; + case Kukatja = 'kux'; + case Kuuku_Ya_u = 'kuy'; + case Kunza = 'kuz'; + case Bagvalal = 'kva'; + case Kubu = 'kvb'; + case Kove = 'kvc'; + case Kui_Indonesia = 'kvd'; + case Kalabakan = 'kve'; + case Kabalai = 'kvf'; + case Kuni_Boazi = 'kvg'; + case Komodo = 'kvh'; + case Kwang = 'kvi'; + case Psikye = 'kvj'; + case Korean_Sign_Language = 'kvk'; + case Kayaw = 'kvl'; + case Kendem = 'kvm'; + case Border_Kuna = 'kvn'; + case Dobel = 'kvo'; + case Kompane = 'kvp'; + case Geba_Karen = 'kvq'; + case Kerinci = 'kvr'; + case Lahta_Karen = 'kvt'; + case Yinbaw_Karen = 'kvu'; + case Kola = 'kvv'; + case Wersing = 'kvw'; + case Parkari_Koli = 'kvx'; + case Yintale_Karen = 'kvy'; + case Tsakwambo = 'kvz'; + case Daw = 'kwa'; + case Kwa_2 = 'kwb'; + case Likwala = 'kwc'; + case Kwaio = 'kwd'; + case Kwerba = 'kwe'; + case Kwara_ae = 'kwf'; + case Sara_Kaba_Deme = 'kwg'; + case Kowiai = 'kwh'; + case Awa_Cuaiquer = 'kwi'; + case Kwanga = 'kwj'; + case Kwakiutl = 'kwk'; + case Kofyar = 'kwl'; + case Kwambi = 'kwm'; + case Kwangali = 'kwn'; + case Kwomtari = 'kwo'; + case Kodia = 'kwp'; + case Kwer = 'kwr'; + case Kwese = 'kws'; + case Kwesten = 'kwt'; + case Kwakum = 'kwu'; + case Sara_Kaba_Naa = 'kwv'; + case Kwinti = 'kww'; + case Khirwar = 'kwx'; + case San_Salvador_Kongo = 'kwy'; + case Kwadi = 'kwz'; + case Kairiru = 'kxa'; + case Krobu = 'kxb'; + case Konso = 'kxc'; + case Brunei = 'kxd'; + case Manumanaw_Karen = 'kxf'; + case Karo_Ethiopia = 'kxh'; + case Keningau_Murut = 'kxi'; + case Kulfa = 'kxj'; + case Zayein_Karen = 'kxk'; + case Northern_Khmer = 'kxm'; + case Kanowit_Tanjong_Melanau = 'kxn'; + case Kanoe = 'kxo'; + case Wadiyara_Koli = 'kxp'; + case Smarky_Kanum = 'kxq'; + case Koro_Papua_New_Guinea = 'kxr'; + case Kangjia = 'kxs'; + case Koiwat = 'kxt'; + case Kuvi = 'kxv'; + case Konai = 'kxw'; + case Likuba = 'kxx'; + case Kayong = 'kxy'; + case Kerewo = 'kxz'; + case Kwaya = 'kya'; + case Butbut_Kalinga = 'kyb'; + case Kyaka = 'kyc'; + case Karey = 'kyd'; + case Krache = 'kye'; + case Kouya = 'kyf'; + case Keyagana = 'kyg'; + case Karok = 'kyh'; + case Kiput = 'kyi'; + case Karao = 'kyj'; + case Kamayo = 'kyk'; + case Kalapuya = 'kyl'; + case Kpatili = 'kym'; + case Northern_Binukidnon = 'kyn'; + case Kelon = 'kyo'; + case Kang = 'kyp'; + case Kenga = 'kyq'; + case Kuruaya = 'kyr'; + case Baram_Kayan = 'kys'; + case Kayagar = 'kyt'; + case Western_Kayah = 'kyu'; + case Kayort = 'kyv'; + case Kudmali = 'kyw'; + case Rapoisi = 'kyx'; + case Kambaira = 'kyy'; + case Kayabi = 'kyz'; + case Western_Karaboro = 'kza'; + case Kaibobo = 'kzb'; + case Bondoukou_Kulango = 'kzc'; + case Kadai = 'kzd'; + case Kosena = 'kze'; + case Da_a_Kaili = 'kzf'; + case Kikai = 'kzg'; + case Kelabit = 'kzi'; + case Kazukuru = 'kzk'; + case Kayeli = 'kzl'; + case Kais = 'kzm'; + case Kokola = 'kzn'; + case Kaningi = 'kzo'; + case Kaidipang = 'kzp'; + case Kaike = 'kzq'; + case Karang = 'kzr'; + case Sugut_Dusun = 'kzs'; + case Kayupulau = 'kzu'; + case Komyandaret = 'kzv'; + case Kariri_Xoco = 'kzw'; + case Kamarian = 'kzx'; + case Kango_Tshopo_District = 'kzy'; + case Kalabra = 'kzz'; + case Southern_Subanen = 'laa'; + case Linear_A = 'lab'; + case Lacandon = 'lac'; + case Ladino = 'lad'; + case Pattani = 'lae'; + case Lafofa = 'laf'; + case Rangi = 'lag'; + case Lahnda = 'lah'; + case Lambya = 'lai'; + case Lango_Uganda = 'laj'; + case Lalia = 'lal'; + case Lamba = 'lam'; + case Laru = 'lan'; + case Lao = 'lao'; + case Laka_Chad = 'lap'; + case Qabiao = 'laq'; + case Larteh = 'lar'; + case Lama_Togo = 'las'; + case Latin = 'lat'; + case Laba = 'lau'; + case Latvian = 'lav'; + case Lauje = 'law'; + case Tiwa = 'lax'; + case Lama_Bai = 'lay'; + case Aribwatsa = 'laz'; + case Label = 'lbb'; + case Lakkia = 'lbc'; + case Lak = 'lbe'; + case Tinani = 'lbf'; + case Laopang = 'lbg'; + case La_bi = 'lbi'; + case Ladakhi = 'lbj'; + case Central_Bontok = 'lbk'; + case Libon_Bikol = 'lbl'; + case Lodhi = 'lbm'; + case Rmeet = 'lbn'; + case Laven = 'lbo'; + case Wampar = 'lbq'; + case Lohorung = 'lbr'; + case Libyan_Sign_Language = 'lbs'; + case Lachi = 'lbt'; + case Labu = 'lbu'; + case Lavatbura_Lamusong = 'lbv'; + case Tolaki = 'lbw'; + case Lawangan = 'lbx'; + case Lamalama = 'lby'; + case Lardil = 'lbz'; + case Legenyem = 'lcc'; + case Lola = 'lcd'; + case Loncong = 'lce'; + case Lubu = 'lcf'; + case Luchazi = 'lch'; + case Lisela = 'lcl'; + case Tungag = 'lcm'; + case Western_Lawa = 'lcp'; + case Luhu = 'lcq'; + case Lisabata_Nuniali = 'lcs'; + case Kla_Dan = 'lda'; + case Du_ya = 'ldb'; + case Luri = 'ldd'; + case Lenyima = 'ldg'; + case Lamja_Dengsa_Tola = 'ldh'; + case Laari = 'ldi'; + case Lemoro = 'ldj'; + case Leelau = 'ldk'; + case Kaan = 'ldl'; + case Landoma = 'ldm'; + case Laadan = 'ldn'; + case Loo = 'ldo'; + case Tso = 'ldp'; + case Lufu = 'ldq'; + case Lega_Shabunda = 'lea'; + case Lala_Bisa = 'leb'; + case Leco = 'lec'; + case Lendu = 'led'; + case Lyele = 'lee'; + case Lelemi = 'lef'; + case Lenje = 'leh'; + case Lemio = 'lei'; + case Lengola = 'lej'; + case Leipon = 'lek'; + case Lele_Democratic_Republic_of_Congo = 'lel'; + case Nomaande = 'lem'; + case Lenca = 'len'; + case Leti_Cameroon = 'leo'; + case Lepcha = 'lep'; + case Lembena = 'leq'; + case Lenkau = 'ler'; + case Lese = 'les'; + case Lesing_Gelimi = 'let'; + case Kara_Papua_New_Guinea = 'leu'; + case Lamma = 'lev'; + case Ledo_Kaili = 'lew'; + case Luang = 'lex'; + case Lemolang = 'ley'; + case Lezghian = 'lez'; + case Lefa = 'lfa'; + case Lingua_Franca_Nova = 'lfn'; + case Lungga = 'lga'; + case Laghu = 'lgb'; + case Lugbara = 'lgg'; + case Laghuu = 'lgh'; + case Lengilu = 'lgi'; + case Lingarak = 'lgk'; + case Wala = 'lgl'; + case Lega_Mwenga = 'lgm'; + case T_apo = 'lgn'; + case Lango_South_Sudan = 'lgo'; + case Logba = 'lgq'; + case Lengo = 'lgr'; + case Guinea_Bissau_Sign_Language = 'lgs'; + case Pahi = 'lgt'; + case Longgu = 'lgu'; + case Ligenza = 'lgz'; + case Laha_Viet_Nam = 'lha'; + case Laha_Indonesia = 'lhh'; + case Lahu_Shi = 'lhi'; + case Lahul_Lohar = 'lhl'; + case Lhomi = 'lhm'; + case Lahanan = 'lhn'; + case Lhokpu = 'lhp'; + case Mlahso = 'lhs'; + case Lo_Toga = 'lht'; + case Lahu = 'lhu'; + case West_Central_Limba = 'lia'; + case Likum = 'lib'; + case Hlai = 'lic'; + case Nyindrou = 'lid'; + case Likila = 'lie'; + case Limbu = 'lif'; + case Ligbi = 'lig'; + case Lihir = 'lih'; + case Ligurian = 'lij'; + case Lika = 'lik'; + case Lillooet = 'lil'; + case Limburgan = 'lim'; + case Lingala = 'lin'; + case Liki = 'lio'; + case Sekpele = 'lip'; + case Libido = 'liq'; + case Liberian_English = 'lir'; + case Lisu = 'lis'; + case Lithuanian = 'lit'; + case Logorik = 'liu'; + case Liv = 'liv'; + case Col = 'liw'; + case Liabuku = 'lix'; + case Banda_Bambari = 'liy'; + case Libinza = 'liz'; + case Golpa = 'lja'; + case Rampi = 'lje'; + case Laiyolo = 'lji'; + case Li_o = 'ljl'; + case Lampung_Api = 'ljp'; + case Yirandali = 'ljw'; + case Yuru = 'ljx'; + case Lakalei = 'lka'; + case Kabras = 'lkb'; + case Kucong = 'lkc'; + case Lakonde = 'lkd'; + case Kenyi = 'lke'; + case Lakha = 'lkh'; + case Laki = 'lki'; + case Remun = 'lkj'; + case Laeko_Libuat = 'lkl'; + case Kalaamaya = 'lkm'; + case Lakon = 'lkn'; + case Khayo = 'lko'; + case Pari = 'lkr'; + case Kisa = 'lks'; + case Lakota = 'lkt'; + case Kungkari = 'lku'; + case Lokoya = 'lky'; + case Lala_Roba = 'lla'; + case Lolo = 'llb'; + case Lele_Guinea = 'llc'; + case Ladin = 'lld'; + case Lele_Papua_New_Guinea = 'lle'; + case Hermit = 'llf'; + case Lole = 'llg'; + case Lamu = 'llh'; + case Teke_Laali = 'lli'; + case Ladji_Ladji = 'llj'; + case Lelak = 'llk'; + case Lilau = 'lll'; + case Lasalimu = 'llm'; + case Lele_Chad = 'lln'; + case North_Efate = 'llp'; + case Lolak = 'llq'; + case Lithuanian_Sign_Language = 'lls'; + case Lau = 'llu'; + case Lauan = 'llx'; + case East_Limba = 'lma'; + case Merei = 'lmb'; + case Limilngan = 'lmc'; + case Lumun = 'lmd'; + case Peve = 'lme'; + case South_Lembata = 'lmf'; + case Lamogai = 'lmg'; + case Lambichhong = 'lmh'; + case Lombi = 'lmi'; + case West_Lembata = 'lmj'; + case Lamkang = 'lmk'; + case Hano = 'lml'; + case Lambadi = 'lmn'; + case Lombard = 'lmo'; + case Limbum = 'lmp'; + case Lamatuka = 'lmq'; + case Lamalera = 'lmr'; + case Lamenu = 'lmu'; + case Lomaiviti = 'lmv'; + case Lake_Miwok = 'lmw'; + case Laimbue = 'lmx'; + case Lamboya = 'lmy'; + case Langbashe = 'lna'; + case Mbalanhu = 'lnb'; + case Lundayeh = 'lnd'; + case Langobardic = 'lng'; + case Lanoh = 'lnh'; + case Daantanai = 'lni'; + case Leningitij = 'lnj'; + case South_Central_Banda = 'lnl'; + case Langam = 'lnm'; + case Lorediakarkar = 'lnn'; + case Lamnso = 'lns'; + case Longuda = 'lnu'; + case Lanima = 'lnw'; + case Lonzo = 'lnz'; + case Loloda = 'loa'; + case Lobi = 'lob'; + case Inonhan = 'loc'; + case Saluan = 'loe'; + case Logol = 'lof'; + case Logo = 'log'; + case Laarim = 'loh'; + case Loma_Cote_d_Ivoire = 'loi'; + case Lou = 'loj'; + case Loko = 'lok'; + case Mongo = 'lol'; + case Loma_Liberia = 'lom'; + case Malawi_Lomwe = 'lon'; + case Lombo = 'loo'; + case Lopa = 'lop'; + case Lobala = 'loq'; + case Teen = 'lor'; + case Loniu = 'los'; + case Otuho = 'lot'; + case Louisiana_Creole = 'lou'; + case Lopi = 'lov'; + case Tampias_Lobu = 'low'; + case Loun = 'lox'; + case Loke = 'loy'; + case Lozi = 'loz'; + case Lelepa = 'lpa'; + case Lepki = 'lpe'; + case Long_Phuri_Naga = 'lpn'; + case Lipo = 'lpo'; + case Lopit = 'lpx'; + case Logir = 'lqr'; + case Rara_Bakati = 'lra'; + case Northern_Luri = 'lrc'; + case Laurentian = 'lre'; + case Laragia = 'lrg'; + case Marachi = 'lri'; + case Loarki = 'lrk'; + case Lari = 'lrl'; + case Marama = 'lrm'; + case Lorang = 'lrn'; + case Laro = 'lro'; + case Southern_Yamphu = 'lrr'; + case Larantuka_Malay = 'lrt'; + case Larevat = 'lrv'; + case Lemerig = 'lrz'; + case Lasgerdi = 'lsa'; + case Burundian_Sign_Language = 'lsb'; + case Albarradas_Sign_Language = 'lsc'; + case Lishana_Deni = 'lsd'; + case Lusengo = 'lse'; + case Lish = 'lsh'; + case Lashi = 'lsi'; + case Latvian_Sign_Language = 'lsl'; + case Saamia = 'lsm'; + case Tibetan_Sign_Language = 'lsn'; + case Laos_Sign_Language = 'lso'; + case Panamanian_Sign_Language = 'lsp'; + case Aruop = 'lsr'; + case Lasi = 'lss'; + case Trinidad_and_Tobago_Sign_Language = 'lst'; + case Sivia_Sign_Language = 'lsv'; + case Seychelles_Sign_Language = 'lsw'; + case Mauritian_Sign_Language = 'lsy'; + case Late_Middle_Chinese = 'ltc'; + case Latgalian = 'ltg'; + case Thur = 'lth'; + case Leti_Indonesia = 'lti'; + case Latunde = 'ltn'; + case Tsotso = 'lto'; + case Tachoni = 'lts'; + case Latu = 'ltu'; + case Luxembourgish = 'ltz'; + case Luba_Lulua = 'lua'; + case Luba_Katanga = 'lub'; + case Aringa = 'luc'; + case Ludian = 'lud'; + case Luvale = 'lue'; + case Laua = 'luf'; + case Ganda = 'lug'; + case Luiseno = 'lui'; + case Luna = 'luj'; + case Lunanakha = 'luk'; + case Olu_bo = 'lul'; + case Luimbi = 'lum'; + case Lunda = 'lun'; + case Luo_Kenya_and_Tanzania = 'luo'; + case Lumbu = 'lup'; + case Lucumi = 'luq'; + case Laura = 'lur'; + case Lushai = 'lus'; + case Lushootseed = 'lut'; + case Lumba_Yakkha = 'luu'; + case Luwati = 'luv'; + case Luo_Cameroon = 'luw'; + case Luyia = 'luy'; + case Southern_Luri = 'luz'; + case Maku_a = 'lva'; + case Lavi = 'lvi'; + case Lavukaleve = 'lvk'; + case Lwel = 'lvl'; + case Standard_Latvian = 'lvs'; + case Levuka = 'lvu'; + case Lwalu = 'lwa'; + case Lewo_Eleng = 'lwe'; + case Wanga = 'lwg'; + case White_Lachi = 'lwh'; + case Eastern_Lawa = 'lwl'; + case Laomian = 'lwm'; + case Luwo = 'lwo'; + case Malawian_Sign_Language = 'lws'; + case Lewotobi = 'lwt'; + case Lawu = 'lwu'; + case Lewo = 'lww'; + case Lakurumau = 'lxm'; + case Layakha = 'lya'; + case Lyngngam = 'lyg'; + case Luyana = 'lyn'; + case Literary_Chinese = 'lzh'; + case Litzlitz = 'lzl'; + case Leinong_Naga = 'lzn'; + case Laz = 'lzz'; + case San_Jeronimo_Tecoatl_Mazatec = 'maa'; + case Yutanduchi_Mixtec = 'mab'; + case Madurese = 'mad'; + case Bo_Rukul = 'mae'; + case Mafa = 'maf'; + case Magahi = 'mag'; + case Marshallese = 'mah'; + case Maithili = 'mai'; + case Jalapa_De_Diaz_Mazatec = 'maj'; + case Makasar = 'mak'; + case Malayalam = 'mal'; + case Mam = 'mam'; + case Mandingo = 'man'; + case Chiquihuitlan_Mazatec = 'maq'; + case Marathi = 'mar'; + case Masai = 'mas'; + case San_Francisco_Matlatzinca = 'mat'; + case Huautla_Mazatec = 'mau'; + case Satere_Mawe = 'mav'; + case Mampruli = 'maw'; + case North_Moluccan_Malay = 'max'; + case Central_Mazahua = 'maz'; + case Higaonon = 'mba'; + case Western_Bukidnon_Manobo = 'mbb'; + case Macushi = 'mbc'; + case Dibabawon_Manobo = 'mbd'; + case Molale = 'mbe'; + case Baba_Malay = 'mbf'; + case Mangseng = 'mbh'; + case Ilianen_Manobo = 'mbi'; + case Nadeb = 'mbj'; + case Malol = 'mbk'; + case Maxakali = 'mbl'; + case Ombamba = 'mbm'; + case Macaguan = 'mbn'; + case Mbo_Cameroon = 'mbo'; + case Malayo = 'mbp'; + case Maisin = 'mbq'; + case Nukak_Maku = 'mbr'; + case Sarangani_Manobo = 'mbs'; + case Matigsalug_Manobo = 'mbt'; + case Mbula_Bwazza = 'mbu'; + case Mbulungish = 'mbv'; + case Maring = 'mbw'; + case Mari_East_Sepik_Province = 'mbx'; + case Memoni = 'mby'; + case Amoltepec_Mixtec = 'mbz'; + case Maca = 'mca'; + case Machiguenga = 'mcb'; + case Bitur = 'mcc'; + case Sharanahua = 'mcd'; + case Itundujia_Mixtec = 'mce'; + case Matses = 'mcf'; + case Mapoyo = 'mcg'; + case Maquiritari = 'mch'; + case Mese = 'mci'; + case Mvanip = 'mcj'; + case Mbunda = 'mck'; + case Macaguaje = 'mcl'; + case Malaccan_Creole_Portuguese = 'mcm'; + case Masana = 'mcn'; + case Coatlan_Mixe = 'mco'; + case Makaa = 'mcp'; + case Ese = 'mcq'; + case Menya = 'mcr'; + case Mambai = 'mcs'; + case Mengisa = 'mct'; + case Cameroon_Mambila = 'mcu'; + case Minanibai = 'mcv'; + case Mawa_Chad = 'mcw'; + case Mpiemo = 'mcx'; + case South_Watut = 'mcy'; + case Mawan = 'mcz'; + case Mada_Nigeria = 'mda'; + case Morigi = 'mdb'; + case Male_Papua_New_Guinea = 'mdc'; + case Mbum = 'mdd'; + case Maba_Chad = 'mde'; + case Moksha = 'mdf'; + case Massalat = 'mdg'; + case Maguindanaon = 'mdh'; + case Mamvu = 'mdi'; + case Mangbetu = 'mdj'; + case Mangbutu = 'mdk'; + case Maltese_Sign_Language = 'mdl'; + case Mayogo = 'mdm'; + case Mbati = 'mdn'; + case Mbala = 'mdp'; + case Mbole = 'mdq'; + case Mandar = 'mdr'; + case Maria_Papua_New_Guinea = 'mds'; + case Mbere = 'mdt'; + case Mboko = 'mdu'; + case Santa_Lucia_Monteverde_Mixtec = 'mdv'; + case Mbosi = 'mdw'; + case Dizin = 'mdx'; + case Male_Ethiopia = 'mdy'; + case Surui_Do_Para = 'mdz'; + case Menka = 'mea'; + case Ikobi = 'meb'; + case Marra = 'mec'; + case Melpa = 'med'; + case Mengen = 'mee'; + case Megam = 'mef'; + case Southwestern_Tlaxiaco_Mixtec = 'meh'; + case Midob = 'mei'; + case Meyah = 'mej'; + case Mekeo = 'mek'; + case Central_Melanau = 'mel'; + case Mangala = 'mem'; + case Mende_Sierra_Leone = 'men'; + case Kedah_Malay = 'meo'; + case Miriwoong = 'mep'; + case Merey = 'meq'; + case Meru = 'mer'; + case Masmaje = 'mes'; + case Mato = 'met'; + case Motu = 'meu'; + case Mano = 'mev'; + case Maaka = 'mew'; + case Hassaniyya = 'mey'; + case Menominee = 'mez'; + case Pattani_Malay = 'mfa'; + case Bangka = 'mfb'; + case Mba = 'mfc'; + case Mendankwe_Nkwen = 'mfd'; + case Morisyen = 'mfe'; + case Naki = 'mff'; + case Mogofin = 'mfg'; + case Matal = 'mfh'; + case Wandala = 'mfi'; + case Mefele = 'mfj'; + case North_Mofu = 'mfk'; + case Putai = 'mfl'; + case Marghi_South = 'mfm'; + case Cross_River_Mbembe = 'mfn'; + case Mbe = 'mfo'; + case Makassar_Malay = 'mfp'; + case Moba = 'mfq'; + case Marrithiyel = 'mfr'; + case Mexican_Sign_Language = 'mfs'; + case Mokerang = 'mft'; + case Mbwela = 'mfu'; + case Mandjak = 'mfv'; + case Mulaha = 'mfw'; + case Melo = 'mfx'; + case Mayo = 'mfy'; + case Mabaan = 'mfz'; + case Middle_Irish_900_1200 = 'mga'; + case Mararit = 'mgb'; + case Morokodo = 'mgc'; + case Moru = 'mgd'; + case Mango = 'mge'; + case Maklew = 'mgf'; + case Mpumpong = 'mgg'; + case Makhuwa_Meetto = 'mgh'; + case Lijili = 'mgi'; + case Abureni = 'mgj'; + case Mawes = 'mgk'; + case Maleu_Kilenge = 'mgl'; + case Mambae = 'mgm'; + case Mbangi = 'mgn'; + case Meta = 'mgo'; + case Eastern_Magar = 'mgp'; + case Malila = 'mgq'; + case Mambwe_Lungu = 'mgr'; + case Manda_Tanzania = 'mgs'; + case Mongol = 'mgt'; + case Mailu = 'mgu'; + case Matengo = 'mgv'; + case Matumbi = 'mgw'; + case Mbunga = 'mgy'; + case Mbugwe = 'mgz'; + case Manda_India = 'mha'; + case Mahongwe = 'mhb'; + case Mocho = 'mhc'; + case Mbugu = 'mhd'; + case Besisi = 'mhe'; + case Mamaa = 'mhf'; + case Margu = 'mhg'; + case Ma_di = 'mhi'; + case Mogholi = 'mhj'; + case Mungaka = 'mhk'; + case Mauwake = 'mhl'; + case Makhuwa_Moniga = 'mhm'; + case Mocheno = 'mhn'; + case Mashi_Zambia = 'mho'; + case Balinese_Malay = 'mhp'; + case Mandan = 'mhq'; + case Eastern_Mari = 'mhr'; + case Buru_Indonesia = 'mhs'; + case Mandahuaca = 'mht'; + case Digaro_Mishmi = 'mhu'; + case Mbukushu = 'mhw'; + case Maru = 'mhx'; + case Ma_anyan = 'mhy'; + case Mor_Mor_Islands = 'mhz'; + case Miami = 'mia'; + case Atatlahuca_Mixtec = 'mib'; + case Mi_kmaq = 'mic'; + case Mandaic = 'mid'; + case Ocotepec_Mixtec = 'mie'; + case Mofu_Gudur = 'mif'; + case San_Miguel_El_Grande_Mixtec = 'mig'; + case Chayuco_Mixtec = 'mih'; + case Chigmecatitlan_Mixtec = 'mii'; + case Abar = 'mij'; + case Mikasuki = 'mik'; + case Penoles_Mixtec = 'mil'; + case Alacatlatzala_Mixtec = 'mim'; + case Minangkabau = 'min'; + case Pinotepa_Nacional_Mixtec = 'mio'; + case Apasco_Apoala_Mixtec = 'mip'; + case Miskito = 'miq'; + case Isthmus_Mixe = 'mir'; + case Uncoded_languages = 'mis'; + case Southern_Puebla_Mixtec = 'mit'; + case Cacaloxtepec_Mixtec = 'miu'; + case Akoye = 'miw'; + case Mixtepec_Mixtec = 'mix'; + case Ayutla_Mixtec = 'miy'; + case Coatzospan_Mixtec = 'miz'; + case Makalero = 'mjb'; + case San_Juan_Colorado_Mixtec = 'mjc'; + case Northwest_Maidu = 'mjd'; + case Muskum = 'mje'; + case Tu = 'mjg'; + case Mwera_Nyasa = 'mjh'; + case Kim_Mun = 'mji'; + case Mawak = 'mjj'; + case Matukar = 'mjk'; + case Mandeali = 'mjl'; + case Medebur = 'mjm'; + case Ma_Papua_New_Guinea = 'mjn'; + case Malankuravan = 'mjo'; + case Malapandaram = 'mjp'; + case Malaryan = 'mjq'; + case Malavedan = 'mjr'; + case Miship = 'mjs'; + case Sauria_Paharia = 'mjt'; + case Manna_Dora = 'mju'; + case Mannan = 'mjv'; + case Karbi = 'mjw'; + case Mahali = 'mjx'; + case Mahican = 'mjy'; + case Majhi = 'mjz'; + case Mbre = 'mka'; + case Mal_Paharia = 'mkb'; + case Siliput = 'mkc'; + case Macedonian = 'mkd'; + case Mawchi = 'mke'; + case Miya = 'mkf'; + case Mak_China = 'mkg'; + case Dhatki = 'mki'; + case Mokilese = 'mkj'; + case Byep = 'mkk'; + case Mokole = 'mkl'; + case Moklen = 'mkm'; + case Kupang_Malay = 'mkn'; + case Mingang_Doso = 'mko'; + case Moikodi = 'mkp'; + case Bay_Miwok = 'mkq'; + case Malas = 'mkr'; + case Silacayoapan_Mixtec = 'mks'; + case Vamale = 'mkt'; + case Konyanka_Maninka = 'mku'; + case Mafea = 'mkv'; + case Kituba_Congo = 'mkw'; + case Kinamiging_Manobo = 'mkx'; + case East_Makian = 'mky'; + case Makasae = 'mkz'; + case Malo = 'mla'; + case Mbule = 'mlb'; + case Cao_Lan = 'mlc'; + case Manambu = 'mle'; + case Mal = 'mlf'; + case Malagasy = 'mlg'; + case Mape = 'mlh'; + case Malimpung = 'mli'; + case Miltu = 'mlj'; + case Ilwana = 'mlk'; + case Malua_Bay = 'mll'; + case Mulam = 'mlm'; + case Malango = 'mln'; + case Mlomp = 'mlo'; + case Bargam = 'mlp'; + case Western_Maninkakan = 'mlq'; + case Vame = 'mlr'; + case Masalit = 'mls'; + case Maltese = 'mlt'; + case To_abaita = 'mlu'; + case Motlav = 'mlv'; + case Moloko = 'mlw'; + case Malfaxal = 'mlx'; + case Malaynon = 'mlz'; + case Mama = 'mma'; + case Momina = 'mmb'; + case Michoacan_Mazahua = 'mmc'; + case Maonan = 'mmd'; + case Mae = 'mme'; + case Mundat = 'mmf'; + case North_Ambrym = 'mmg'; + case Mehinaku = 'mmh'; + case Musar = 'mmi'; + case Majhwar = 'mmj'; + case Mukha_Dora = 'mmk'; + case Man_Met = 'mml'; + case Maii = 'mmm'; + case Mamanwa = 'mmn'; + case Mangga_Buang = 'mmo'; + case Siawi = 'mmp'; + case Musak = 'mmq'; + case Western_Xiangxi_Miao = 'mmr'; + case Malalamai = 'mmt'; + case Mmaala = 'mmu'; + case Miriti = 'mmv'; + case Emae = 'mmw'; + case Madak = 'mmx'; + case Migaama = 'mmy'; + case Mabaale = 'mmz'; + case Mbula = 'mna'; + case Muna = 'mnb'; + case Manchu = 'mnc'; + case Monde = 'mnd'; + case Naba = 'mne'; + case Mundani = 'mnf'; + case Eastern_Mnong = 'mng'; + case Mono_Democratic_Republic_of_Congo = 'mnh'; + case Manipuri = 'mni'; + case Munji = 'mnj'; + case Mandinka = 'mnk'; + case Tiale = 'mnl'; + case Mapena = 'mnm'; + case Southern_Mnong = 'mnn'; + case Min_Bei_Chinese = 'mnp'; + case Minriq = 'mnq'; + case Mono_USA = 'mnr'; + case Mansi = 'mns'; + case Mer = 'mnu'; + case Rennell_Bellona = 'mnv'; + case Mon = 'mnw'; + case Manikion = 'mnx'; + case Manyawa = 'mny'; + case Moni = 'mnz'; + case Mwan = 'moa'; + case Mocovi = 'moc'; + case Mobilian = 'mod'; + case Innu = 'moe'; + case Mongondow = 'mog'; + case Mohawk = 'moh'; + case Mboi = 'moi'; + case Monzombo = 'moj'; + case Morori = 'mok'; + case Mangue = 'mom'; + case Mongolian = 'mon'; + case Monom = 'moo'; + case Mopan_Maya = 'mop'; + case Mor_Bomberai_Peninsula = 'moq'; + case Moro = 'mor'; + case Mossi = 'mos'; + case Bari_2 = 'mot'; + case Mogum = 'mou'; + case Mohave = 'mov'; + case Moi_Congo = 'mow'; + case Molima = 'mox'; + case Shekkacho = 'moy'; + case Mukulu = 'moz'; + case Mpoto = 'mpa'; + case Malak_Malak = 'mpb'; + case Mangarrayi = 'mpc'; + case Machinere = 'mpd'; + case Majang = 'mpe'; + case Marba = 'mpg'; + case Maung = 'mph'; + case Mpade = 'mpi'; + case Martu_Wangka = 'mpj'; + case Mbara_Chad = 'mpk'; + case Middle_Watut = 'mpl'; + case Yosondua_Mixtec = 'mpm'; + case Mindiri = 'mpn'; + case Miu = 'mpo'; + case Migabac = 'mpp'; + case Matis = 'mpq'; + case Vangunu = 'mpr'; + case Dadibi = 'mps'; + case Mian = 'mpt'; + case Makurap = 'mpu'; + case Mungkip = 'mpv'; + case Mapidian = 'mpw'; + case Misima_Panaeati = 'mpx'; + case Mapia = 'mpy'; + case Mpi = 'mpz'; + case Maba_Indonesia = 'mqa'; + case Mbuko = 'mqb'; + case Mangole = 'mqc'; + case Matepi = 'mqe'; + case Momuna = 'mqf'; + case Kota_Bangun_Kutai_Malay = 'mqg'; + case Tlazoyaltepec_Mixtec = 'mqh'; + case Mariri = 'mqi'; + case Mamasa = 'mqj'; + case Rajah_Kabunsuwan_Manobo = 'mqk'; + case Mbelime = 'mql'; + case South_Marquesan = 'mqm'; + case Moronene = 'mqn'; + case Modole = 'mqo'; + case Manipa = 'mqp'; + case Minokok = 'mqq'; + case Mander = 'mqr'; + case West_Makian = 'mqs'; + case Mok = 'mqt'; + case Mandari = 'mqu'; + case Mosimo = 'mqv'; + case Murupi = 'mqw'; + case Mamuju = 'mqx'; + case Manggarai = 'mqy'; + case Pano = 'mqz'; + case Mlabri = 'mra'; + case Marino = 'mrb'; + case Maricopa = 'mrc'; + case Western_Magar = 'mrd'; + case Martha_s_Vineyard_Sign_Language = 'mre'; + case Elseng = 'mrf'; + case Mising = 'mrg'; + case Mara_Chin = 'mrh'; + case Maori = 'mri'; + case Western_Mari = 'mrj'; + case Hmwaveke = 'mrk'; + case Mortlockese = 'mrl'; + case Merlav = 'mrm'; + case Cheke_Holo = 'mrn'; + case Mru = 'mro'; + case Morouas = 'mrp'; + case North_Marquesan = 'mrq'; + case Maria_India = 'mrr'; + case Maragus = 'mrs'; + case Marghi_Central = 'mrt'; + case Mono_Cameroon = 'mru'; + case Mangareva = 'mrv'; + case Maranao = 'mrw'; + case Maremgi = 'mrx'; + case Mandaya = 'mry'; + case Marind = 'mrz'; + case Malay_macrolanguage = 'msa'; + case Masbatenyo = 'msb'; + case Sankaran_Maninka = 'msc'; + case Yucatec_Maya_Sign_Language = 'msd'; + case Musey = 'mse'; + case Mekwei = 'msf'; + case Moraid = 'msg'; + case Masikoro_Malagasy = 'msh'; + case Sabah_Malay = 'msi'; + case Ma_Democratic_Republic_of_Congo = 'msj'; + case Mansaka = 'msk'; + case Molof = 'msl'; + case Agusan_Manobo = 'msm'; + case Vures = 'msn'; + case Mombum = 'mso'; + case Maritsaua = 'msp'; + case Caac = 'msq'; + case Mongolian_Sign_Language = 'msr'; + case West_Masela = 'mss'; + case Musom = 'msu'; + case Maslam = 'msv'; + case Mansoanka = 'msw'; + case Moresada = 'msx'; + case Aruamu = 'msy'; + case Momare = 'msz'; + case Cotabato_Manobo = 'mta'; + case Anyin_Morofo = 'mtb'; + case Munit = 'mtc'; + case Mualang = 'mtd'; + case Mono_Solomon_Islands = 'mte'; + case Murik_Papua_New_Guinea = 'mtf'; + case Una = 'mtg'; + case Munggui = 'mth'; + case Maiwa_Papua_New_Guinea = 'mti'; + case Moskona = 'mtj'; + case Mbe_2 = 'mtk'; + case Montol = 'mtl'; + case Mator = 'mtm'; + case Matagalpa = 'mtn'; + case Totontepec_Mixe = 'mto'; + case Wichi_Lhamtes_Nocten = 'mtp'; + case Muong = 'mtq'; + case Mewari = 'mtr'; + case Yora = 'mts'; + case Mota = 'mtt'; + case Tututepec_Mixtec = 'mtu'; + case Asaro_o = 'mtv'; + case Southern_Binukidnon = 'mtw'; + case Tidaa_Mixtec = 'mtx'; + case Nabi = 'mty'; + case Mundang = 'mua'; + case Mubi = 'mub'; + case Ajumbu = 'muc'; + case Mednyj_Aleut = 'mud'; + case Media_Lengua = 'mue'; + case Musgu = 'mug'; + case Mundu = 'muh'; + case Musi = 'mui'; + case Mabire = 'muj'; + case Mugom = 'muk'; + case Multiple_languages = 'mul'; + case Maiwala = 'mum'; + case Nyong = 'muo'; + case Malvi = 'mup'; + case Eastern_Xiangxi_Miao = 'muq'; + case Murle = 'mur'; + case Creek = 'mus'; + case Western_Muria = 'mut'; + case Yaaku = 'muu'; + case Muthuvan = 'muv'; + case Bo_Ung = 'mux'; + case Muyang = 'muy'; + case Mursi = 'muz'; + case Manam = 'mva'; + case Mattole = 'mvb'; + case Mamboru = 'mvd'; + case Marwari_Pakistan = 'mve'; + case Peripheral_Mongolian = 'mvf'; + case Yucuane_Mixtec = 'mvg'; + case Mulgi = 'mvh'; + case Miyako = 'mvi'; + case Mekmek = 'mvk'; + case Mbara_Australia = 'mvl'; + case Minaveha = 'mvn'; + case Marovo = 'mvo'; + case Duri = 'mvp'; + case Moere = 'mvq'; + case Marau = 'mvr'; + case Massep = 'mvs'; + case Mpotovoro = 'mvt'; + case Marfa = 'mvu'; + case Tagal_Murut = 'mvv'; + case Machinga = 'mvw'; + case Meoswar = 'mvx'; + case Indus_Kohistani = 'mvy'; + case Mesqan = 'mvz'; + case Mwatebu = 'mwa'; + case Juwal = 'mwb'; + case Are = 'mwc'; + case Mwera_Chimwera = 'mwe'; + case Murrinh_Patha = 'mwf'; + case Aiklep = 'mwg'; + case Mouk_Aria = 'mwh'; + case Labo = 'mwi'; + case Kita_Maninkakan = 'mwk'; + case Mirandese = 'mwl'; + case Sar = 'mwm'; + case Nyamwanga = 'mwn'; + case Central_Maewo = 'mwo'; + case Kala_Lagaw_Ya = 'mwp'; + case Mun_Chin = 'mwq'; + case Marwari = 'mwr'; + case Mwimbi_Muthambi = 'mws'; + case Moken = 'mwt'; + case Mittu = 'mwu'; + case Mentawai = 'mwv'; + case Hmong_Daw = 'mww'; + case Moingi = 'mwz'; + case Northwest_Oaxaca_Mixtec = 'mxa'; + case Tezoatlan_Mixtec = 'mxb'; + case Manyika = 'mxc'; + case Modang = 'mxd'; + case Mele_Fila = 'mxe'; + case Malgbe = 'mxf'; + case Mbangala = 'mxg'; + case Mvuba = 'mxh'; + case Mozarabic = 'mxi'; + case Miju_Mishmi = 'mxj'; + case Monumbo = 'mxk'; + case Maxi_Gbe = 'mxl'; + case Meramera = 'mxm'; + case Moi_Indonesia = 'mxn'; + case Mbowe = 'mxo'; + case Tlahuitoltepec_Mixe = 'mxp'; + case Juquila_Mixe = 'mxq'; + case Murik_Malaysia = 'mxr'; + case Huitepec_Mixtec = 'mxs'; + case Jamiltepec_Mixtec = 'mxt'; + case Mada_Cameroon = 'mxu'; + case Metlatonoc_Mixtec = 'mxv'; + case Namo = 'mxw'; + case Mahou = 'mxx'; + case Southeastern_Nochixtlan_Mixtec = 'mxy'; + case Central_Masela = 'mxz'; + case Burmese = 'mya'; + case Mbay = 'myb'; + case Mayeka = 'myc'; + case Myene = 'mye'; + case Bambassi = 'myf'; + case Manta = 'myg'; + case Makah = 'myh'; + case Mangayat = 'myj'; + case Mamara_Senoufo = 'myk'; + case Moma = 'myl'; + case Me_en = 'mym'; + case Anfillo = 'myo'; + case Piraha = 'myp'; + case Muniche = 'myr'; + case Mesmes = 'mys'; + case Munduruku = 'myu'; + case Erzya = 'myv'; + case Muyuw = 'myw'; + case Masaaba = 'myx'; + case Macuna = 'myy'; + case Classical_Mandaic = 'myz'; + case Santa_Maria_Zacatepec_Mixtec = 'mza'; + case Tumzabt = 'mzb'; + case Madagascar_Sign_Language = 'mzc'; + case Malimba = 'mzd'; + case Morawa = 'mze'; + case Monastic_Sign_Language = 'mzg'; + case Wichi_Lhamtes_Guisnay = 'mzh'; + case Ixcatlan_Mazatec = 'mzi'; + case Manya = 'mzj'; + case Nigeria_Mambila = 'mzk'; + case Mazatlan_Mixe = 'mzl'; + case Mumuye = 'mzm'; + case Mazanderani = 'mzn'; + case Matipuhy = 'mzo'; + case Movima = 'mzp'; + case Mori_Atas = 'mzq'; + case Marubo = 'mzr'; + case Macanese = 'mzs'; + case Mintil = 'mzt'; + case Inapang = 'mzu'; + case Manza = 'mzv'; + case Deg = 'mzw'; + case Mawayana = 'mzx'; + case Mozambican_Sign_Language = 'mzy'; + case Maiadomu = 'mzz'; + case Namla = 'naa'; + case Southern_Nambikuara = 'nab'; + case Narak = 'nac'; + case Naka_ela = 'nae'; + case Nabak = 'naf'; + case Naga_Pidgin = 'nag'; + case Nalu = 'naj'; + case Nakanai = 'nak'; + case Nalik = 'nal'; + case Ngan_gityemerri = 'nam'; + case Min_Nan_Chinese = 'nan'; + case Naaba = 'nao'; + case Neapolitan = 'nap'; + case Khoekhoe = 'naq'; + case Iguta = 'nar'; + case Naasioi = 'nas'; + case Cahungwarya = 'nat'; + case Nauru = 'nau'; + case Navajo = 'nav'; + case Nawuri = 'naw'; + case Nakwi = 'nax'; + case Ngarrindjeri = 'nay'; + case Coatepec_Nahuatl = 'naz'; + case Nyemba = 'nba'; + case Ndoe = 'nbb'; + case Chang_Naga = 'nbc'; + case Ngbinda = 'nbd'; + case Konyak_Naga = 'nbe'; + case Nagarchal = 'nbg'; + case Ngamo = 'nbh'; + case Mao_Naga = 'nbi'; + case Ngarinyman = 'nbj'; + case Nake = 'nbk'; + case South_Ndebele = 'nbl'; + case Ngbaka_Ma_bo = 'nbm'; + case Kuri = 'nbn'; + case Nkukoli = 'nbo'; + case Nnam = 'nbp'; + case Nggem = 'nbq'; + case Numana = 'nbr'; + case Namibian_Sign_Language = 'nbs'; + case Na = 'nbt'; + case Rongmei_Naga = 'nbu'; + case Ngamambo = 'nbv'; + case Southern_Ngbandi = 'nbw'; + case Ningera = 'nby'; + case Iyo = 'nca'; + case Central_Nicobarese = 'ncb'; + case Ponam = 'ncc'; + case Nachering = 'ncd'; + case Yale = 'nce'; + case Notsi = 'ncf'; + case Nisga_a = 'ncg'; + case Central_Huasteca_Nahuatl = 'nch'; + case Classical_Nahuatl = 'nci'; + case Northern_Puebla_Nahuatl = 'ncj'; + case Na_kara = 'nck'; + case Michoacan_Nahuatl = 'ncl'; + case Nambo = 'ncm'; + case Nauna = 'ncn'; + case Sibe = 'nco'; + case Northern_Katang = 'ncq'; + case Ncane = 'ncr'; + case Nicaraguan_Sign_Language = 'ncs'; + case Chothe_Naga = 'nct'; + case Chumburung = 'ncu'; + case Central_Puebla_Nahuatl = 'ncx'; + case Natchez = 'ncz'; + case Ndasa = 'nda'; + case Kenswei_Nsei = 'ndb'; + case Ndau = 'ndc'; + case Nde_Nsele_Nta = 'ndd'; + case North_Ndebele = 'nde'; + case Nadruvian = 'ndf'; + case Ndengereko = 'ndg'; + case Ndali = 'ndh'; + case Samba_Leko = 'ndi'; + case Ndamba = 'ndj'; + case Ndaka = 'ndk'; + case Ndolo = 'ndl'; + case Ndam = 'ndm'; + case Ngundi = 'ndn'; + case Ndonga = 'ndo'; + case Ndo = 'ndp'; + case Ndombe = 'ndq'; + case Ndoola = 'ndr'; + case Low_German = 'nds'; + case Ndunga = 'ndt'; + case Dugun = 'ndu'; + case Ndut = 'ndv'; + case Ndobo = 'ndw'; + case Nduga = 'ndx'; + case Lutos = 'ndy'; + case Ndogo = 'ndz'; + case Eastern_Ngad_a = 'nea'; + case Toura_Cote_d_Ivoire = 'neb'; + case Nedebang = 'nec'; + case Nde_Gbite = 'ned'; + case Nelemwa_Nixumwak = 'nee'; + case Nefamese = 'nef'; + case Negidal = 'neg'; + case Nyenkha = 'neh'; + case Neo_Hittite = 'nei'; + case Neko = 'nej'; + case Neku = 'nek'; + case Nemi = 'nem'; + case Nengone = 'nen'; + case Na_Meo = 'neo'; + case Nepali_macrolanguage = 'nep'; + case North_Central_Mixe = 'neq'; + case Yahadian = 'ner'; + case Bhoti_Kinnauri = 'nes'; + case Nete = 'net'; + case Neo = 'neu'; + case Nyaheun = 'nev'; + case Newari = 'new'; + case Neme = 'nex'; + case Neyo = 'ney'; + case Nez_Perce = 'nez'; + case Dhao = 'nfa'; + case Ahwai = 'nfd'; + case Ayiwo = 'nfl'; + case Nafaanra = 'nfr'; + case Mfumte = 'nfu'; + case Ngbaka = 'nga'; + case Northern_Ngbandi = 'ngb'; + case Ngombe_Democratic_Republic_of_Congo = 'ngc'; + case Ngando_Central_African_Republic = 'ngd'; + case Ngemba = 'nge'; + case Ngbaka_Manza = 'ngg'; + case N_ng = 'ngh'; + case Ngizim = 'ngi'; + case Ngie = 'ngj'; + case Dalabon = 'ngk'; + case Lomwe = 'ngl'; + case Ngatik_Men_s_Creole = 'ngm'; + case Ngwo = 'ngn'; + case Ngulu = 'ngp'; + case Ngurimi = 'ngq'; + case Engdewu = 'ngr'; + case Gvoko = 'ngs'; + case Kriang = 'ngt'; + case Guerrero_Nahuatl = 'ngu'; + case Nagumi = 'ngv'; + case Ngwaba = 'ngw'; + case Nggwahyi = 'ngx'; + case Tibea = 'ngy'; + case Ngungwel = 'ngz'; + case Nhanda = 'nha'; + case Beng = 'nhb'; + case Tabasco_Nahuatl = 'nhc'; + case Chiripa = 'nhd'; + case Eastern_Huasteca_Nahuatl = 'nhe'; + case Nhuwala = 'nhf'; + case Tetelcingo_Nahuatl = 'nhg'; + case Nahari = 'nhh'; + case Zacatlan_Ahuacatlan_Tepetzintla_Nahuatl = 'nhi'; + case Isthmus_Cosoleacaque_Nahuatl = 'nhk'; + case Morelos_Nahuatl = 'nhm'; + case Central_Nahuatl = 'nhn'; + case Takuu = 'nho'; + case Isthmus_Pajapan_Nahuatl = 'nhp'; + case Huaxcaleca_Nahuatl = 'nhq'; + case Naro = 'nhr'; + case Ometepec_Nahuatl = 'nht'; + case Noone = 'nhu'; + case Temascaltepec_Nahuatl = 'nhv'; + case Western_Huasteca_Nahuatl = 'nhw'; + case Isthmus_Mecayapan_Nahuatl = 'nhx'; + case Northern_Oaxaca_Nahuatl = 'nhy'; + case Santa_Maria_La_Alta_Nahuatl = 'nhz'; + case Nias = 'nia'; + case Nakame = 'nib'; + case Ngandi = 'nid'; + case Niellim = 'nie'; + case Nek = 'nif'; + case Ngalakgan = 'nig'; + case Nyiha_Tanzania = 'nih'; + case Nii = 'nii'; + case Ngaju = 'nij'; + case Southern_Nicobarese = 'nik'; + case Nila = 'nil'; + case Nilamba = 'nim'; + case Ninzo = 'nin'; + case Nganasan = 'nio'; + case Nandi = 'niq'; + case Nimboran = 'nir'; + case Nimi = 'nis'; + case Southeastern_Kolami = 'nit'; + case Niuean = 'niu'; + case Gilyak = 'niv'; + case Nimo = 'niw'; + case Hema = 'nix'; + case Ngiti = 'niy'; + case Ningil = 'niz'; + case Nzanyi = 'nja'; + case Nocte_Naga = 'njb'; + case Ndonde_Hamba = 'njd'; + case Lotha_Naga = 'njh'; + case Gudanji = 'nji'; + case Njen = 'njj'; + case Njalgulgule = 'njl'; + case Angami_Naga = 'njm'; + case Liangmai_Naga = 'njn'; + case Ao_Naga = 'njo'; + case Njerep = 'njr'; + case Nisa = 'njs'; + case Ndyuka_Trio_Pidgin = 'njt'; + case Ngadjunmaya = 'nju'; + case Kunyi = 'njx'; + case Njyem = 'njy'; + case Nyishi = 'njz'; + case Nkoya = 'nka'; + case Khoibu_Naga = 'nkb'; + case Nkongho = 'nkc'; + case Koireng = 'nkd'; + case Duke = 'nke'; + case Inpui_Naga = 'nkf'; + case Nekgini = 'nkg'; + case Khezha_Naga = 'nkh'; + case Thangal_Naga = 'nki'; + case Nakai = 'nkj'; + case Nokuku = 'nkk'; + case Namat = 'nkm'; + case Nkangala = 'nkn'; + case Nkonya = 'nko'; + case Niuatoputapu = 'nkp'; + case Nkami = 'nkq'; + case Nukuoro = 'nkr'; + case North_Asmat = 'nks'; + case Nyika_Tanzania = 'nkt'; + case Bouna_Kulango = 'nku'; + case Nyika_Malawi_and_Zambia = 'nkv'; + case Nkutu = 'nkw'; + case Nkoroo = 'nkx'; + case Nkari = 'nkz'; + case Ngombale = 'nla'; + case Nalca = 'nlc'; + case Dutch = 'nld'; + case East_Nyala = 'nle'; + case Gela = 'nlg'; + case Grangali = 'nli'; + case Nyali = 'nlj'; + case Ninia_Yali = 'nlk'; + case Nihali = 'nll'; + case Mankiyali = 'nlm'; + case Ngul = 'nlo'; + case Lao_Naga = 'nlq'; + case Nchumbulu = 'nlu'; + case Orizaba_Nahuatl = 'nlv'; + case Walangama = 'nlw'; + case Nahali = 'nlx'; + case Nyamal = 'nly'; + case Nalogo = 'nlz'; + case Maram_Naga = 'nma'; + case Big_Nambas = 'nmb'; + case Ngam = 'nmc'; + case Ndumu = 'nmd'; + case Mzieme_Naga = 'nme'; + case Tangkhul_Naga_India = 'nmf'; + case Kwasio = 'nmg'; + case Monsang_Naga = 'nmh'; + case Nyam = 'nmi'; + case Ngombe_Central_African_Republic = 'nmj'; + case Namakura = 'nmk'; + case Ndemli = 'nml'; + case Manangba = 'nmm'; + case Xoo = 'nmn'; + case Moyon_Naga = 'nmo'; + case Nimanbur = 'nmp'; + case Nambya = 'nmq'; + case Nimbari = 'nmr'; + case Letemboi = 'nms'; + case Namonuito = 'nmt'; + case Northeast_Maidu = 'nmu'; + case Ngamini = 'nmv'; + case Nimoa = 'nmw'; + case Nama_Papua_New_Guinea = 'nmx'; + case Namuyi = 'nmy'; + case Nawdm = 'nmz'; + case Nyangumarta = 'nna'; + case Nande = 'nnb'; + case Nancere = 'nnc'; + case West_Ambae = 'nnd'; + case Ngandyera = 'nne'; + case Ngaing = 'nnf'; + case Maring_Naga = 'nng'; + case Ngiemboon = 'nnh'; + case North_Nuaulu = 'nni'; + case Nyangatom = 'nnj'; + case Nankina = 'nnk'; + case Northern_Rengma_Naga = 'nnl'; + case Namia = 'nnm'; + case Ngete = 'nnn'; + case Norwegian_Nynorsk = 'nno'; + case Wancho_Naga = 'nnp'; + case Ngindo = 'nnq'; + case Narungga = 'nnr'; + case Nanticoke = 'nnt'; + case Dwang = 'nnu'; + case Nugunu_Australia = 'nnv'; + case Southern_Nuni = 'nnw'; + case Nyangga = 'nny'; + case Nda_nda = 'nnz'; + case Woun_Meu = 'noa'; + case Norwegian_Bokmal = 'nob'; + case Nuk = 'noc'; + case Northern_Thai = 'nod'; + case Nimadi = 'noe'; + case Nomane = 'nof'; + case Nogai = 'nog'; + case Nomu = 'noh'; + case Noiri = 'noi'; + case Nonuya = 'noj'; + case Nooksack = 'nok'; + case Nomlaki = 'nol'; + case Old_Norse = 'non'; + case Numanggang = 'nop'; + case Ngongo = 'noq'; + case Norwegian = 'nor'; + case Eastern_Nisu = 'nos'; + case Nomatsiguenga = 'not'; + case Ewage_Notu = 'nou'; + case Novial = 'nov'; + case Nyambo = 'now'; + case Noy = 'noy'; + case Nayi = 'noz'; + case Nar_Phu = 'npa'; + case Nupbikha = 'npb'; + case Ponyo_Gongwang_Naga = 'npg'; + case Phom_Naga = 'nph'; + case Nepali_individual_language = 'npi'; + case Southeastern_Puebla_Nahuatl = 'npl'; + case Mondropolon = 'npn'; + case Pochuri_Naga = 'npo'; + case Nipsan = 'nps'; + case Puimei_Naga = 'npu'; + case Noipx = 'npx'; + case Napu = 'npy'; + case Southern_Nago = 'nqg'; + case Kura_Ede_Nago = 'nqk'; + case Ngendelengo = 'nql'; + case Ndom = 'nqm'; + case Nen = 'nqn'; + case N_Ko = 'nqo'; + case Kyan_Karyaw_Naga = 'nqq'; + case Nteng = 'nqt'; + case Akyaung_Ari_Naga = 'nqy'; + case Ngom = 'nra'; + case Nara = 'nrb'; + case Noric = 'nrc'; + case Southern_Rengma_Naga = 'nre'; + case Jerriais = 'nrf'; + case Narango = 'nrg'; + case Chokri_Naga = 'nri'; + case Ngarla = 'nrk'; + case Ngarluma = 'nrl'; + case Narom = 'nrm'; + case Norn = 'nrn'; + case North_Picene = 'nrp'; + case Norra = 'nrr'; + case Northern_Kalapuya = 'nrt'; + case Narua = 'nru'; + case Ngurmbur = 'nrx'; + case Lala = 'nrz'; + case Sangtam_Naga = 'nsa'; + case Lower_Nossob = 'nsb'; + case Nshi = 'nsc'; + case Southern_Nisu = 'nsd'; + case Nsenga = 'nse'; + case Northwestern_Nisu = 'nsf'; + case Ngasa = 'nsg'; + case Ngoshie = 'nsh'; + case Nigerian_Sign_Language = 'nsi'; + case Naskapi = 'nsk'; + case Norwegian_Sign_Language = 'nsl'; + case Sumi_Naga = 'nsm'; + case Nehan = 'nsn'; + case Pedi = 'nso'; + case Nepalese_Sign_Language = 'nsp'; + case Northern_Sierra_Miwok = 'nsq'; + case Maritime_Sign_Language = 'nsr'; + case Nali = 'nss'; + case Tase_Naga = 'nst'; + case Sierra_Negra_Nahuatl = 'nsu'; + case Southwestern_Nisu = 'nsv'; + case Navut = 'nsw'; + case Nsongo = 'nsx'; + case Nasal = 'nsy'; + case Nisenan = 'nsz'; + case Northern_Tidung = 'ntd'; + case Nathembo = 'nte'; + case Ngantangarra = 'ntg'; + case Natioro = 'nti'; + case Ngaanyatjarra = 'ntj'; + case Ikoma_Nata_Isenye = 'ntk'; + case Nateni = 'ntm'; + case Ntomba = 'nto'; + case Northern_Tepehuan = 'ntp'; + case Delo = 'ntr'; + case Natugu = 'ntu'; + case Nottoway = 'ntw'; + case Tangkhul_Naga_Myanmar = 'ntx'; + case Mantsi = 'nty'; + case Natanzi = 'ntz'; + case Yuanga = 'nua'; + case Nukuini = 'nuc'; + case Ngala = 'nud'; + case Ngundu = 'nue'; + case Nusu = 'nuf'; + case Nungali = 'nug'; + case Ndunda = 'nuh'; + case Ngumbi = 'nui'; + case Nyole = 'nuj'; + case Nuu_chah_nulth = 'nuk'; + case Nusa_Laut = 'nul'; + case Niuafo_ou = 'num'; + case Anong = 'nun'; + case Nguon = 'nuo'; + case Nupe_Nupe_Tako = 'nup'; + case Nukumanu = 'nuq'; + case Nukuria = 'nur'; + case Nuer = 'nus'; + case Nung_Viet_Nam = 'nut'; + case Ngbundu = 'nuu'; + case Northern_Nuni = 'nuv'; + case Nguluwan = 'nuw'; + case Mehek = 'nux'; + case Nunggubuyu = 'nuy'; + case Tlamacazapa_Nahuatl = 'nuz'; + case Nasarian = 'nvh'; + case Namiae = 'nvm'; + case Nyokon = 'nvo'; + case Nawathinehena = 'nwa'; + case Nyabwa = 'nwb'; + case Classical_Newari = 'nwc'; + case Ngwe = 'nwe'; + case Ngayawung = 'nwg'; + case Southwest_Tanna = 'nwi'; + case Nyamusa_Molo = 'nwm'; + case Nauo = 'nwo'; + case Nawaru = 'nwr'; + case Ndwewe = 'nww'; + case Middle_Newar = 'nwx'; + case Nottoway_Meherrin = 'nwy'; + case Nauete = 'nxa'; + case Ngando_Democratic_Republic_of_Congo = 'nxd'; + case Nage = 'nxe'; + case Ngad_a = 'nxg'; + case Nindi = 'nxi'; + case Koki_Naga = 'nxk'; + case South_Nuaulu = 'nxl'; + case Numidian = 'nxm'; + case Ngawun = 'nxn'; + case Ndambomo = 'nxo'; + case Naxi = 'nxq'; + case Ninggerum = 'nxr'; + case Nafri = 'nxx'; + case Nyanja = 'nya'; + case Nyangbo = 'nyb'; + case Nyanga_li = 'nyc'; + case Nyore = 'nyd'; + case Nyengo = 'nye'; + case Giryama = 'nyf'; + case Nyindu = 'nyg'; + case Nyikina = 'nyh'; + case Ama_Sudan = 'nyi'; + case Nyanga = 'nyj'; + case Nyaneka = 'nyk'; + case Nyeu = 'nyl'; + case Nyamwezi = 'nym'; + case Nyankole = 'nyn'; + case Nyoro = 'nyo'; + case Nyang_i = 'nyp'; + case Nayini = 'nyq'; + case Nyiha_Malawi = 'nyr'; + case Nyungar = 'nys'; + case Nyawaygi = 'nyt'; + case Nyungwe = 'nyu'; + case Nyulnyul = 'nyv'; + case Nyaw = 'nyw'; + case Nganyaywana = 'nyx'; + case Nyakyusa_Ngonde = 'nyy'; + case Tigon_Mbembe = 'nza'; + case Njebi = 'nzb'; + case Nzadi = 'nzd'; + case Nzima = 'nzi'; + case Nzakara = 'nzk'; + case Zeme_Naga = 'nzm'; + case Dir_Nyamzak_Mbarimi = 'nzr'; + case New_Zealand_Sign_Language = 'nzs'; + case Teke_Nzikou = 'nzu'; + case Nzakambay = 'nzy'; + case Nanga_Dama_Dogon = 'nzz'; + case Orok = 'oaa'; + case Oroch = 'oac'; + case Old_Aramaic_up_to_700_BCE = 'oar'; + case Old_Avar = 'oav'; + case Obispeno = 'obi'; + case Southern_Bontok = 'obk'; + case Oblo = 'obl'; + case Moabite = 'obm'; + case Obo_Manobo = 'obo'; + case Old_Burmese = 'obr'; + case Old_Breton = 'obt'; + case Obulom = 'obu'; + case Ocaina = 'oca'; + case Old_Chinese = 'och'; + case Occitan_post_1500 = 'oci'; + case Old_Cham = 'ocm'; + case Old_Cornish = 'oco'; + case Atzingo_Matlatzinca = 'ocu'; + case Odut = 'oda'; + case Od = 'odk'; + case Old_Dutch = 'odt'; + case Odual = 'odu'; + case Ofo = 'ofo'; + case Old_Frisian = 'ofs'; + case Efutop = 'ofu'; + case Ogbia = 'ogb'; + case Ogbah = 'ogc'; + case Old_Georgian = 'oge'; + case Ogbogolo = 'ogg'; + case Khana = 'ogo'; + case Ogbronuagum = 'ogu'; + case Old_Hittite = 'oht'; + case Old_Hungarian = 'ohu'; + case Oirata = 'oia'; + case Okolie = 'oie'; + case Inebu_One = 'oin'; + case Northwestern_Ojibwa = 'ojb'; + case Central_Ojibwa = 'ojc'; + case Eastern_Ojibwa = 'ojg'; + case Ojibwa = 'oji'; + case Old_Japanese = 'ojp'; + case Severn_Ojibwa = 'ojs'; + case Ontong_Java = 'ojv'; + case Western_Ojibwa = 'ojw'; + case Okanagan = 'oka'; + case Okobo = 'okb'; + case Kobo = 'okc'; + case Okodia = 'okd'; + case Okpe_Southwestern_Edo = 'oke'; + case Koko_Babangk = 'okg'; + case Koresh_e_Rostam = 'okh'; + case Okiek = 'oki'; + case Oko_Juwoi = 'okj'; + case Kwamtim_One = 'okk'; + case Old_Kentish_Sign_Language = 'okl'; + case Middle_Korean_10th_16th_cent = 'okm'; + case Oki_No_Erabu = 'okn'; + case Old_Korean_3rd_9th_cent = 'oko'; + case Kirike = 'okr'; + case Oko_Eni_Osayen = 'oks'; + case Oku = 'oku'; + case Orokaiva = 'okv'; + case Okpe_Northwestern_Edo = 'okx'; + case Old_Khmer = 'okz'; + case Walungge = 'ola'; + case Mochi = 'old'; + case Olekha = 'ole'; + case Olkol = 'olk'; + case Oloma = 'olm'; + case Livvi = 'olo'; + case Olrat = 'olr'; + case Old_Lithuanian = 'olt'; + case Kuvale = 'olu'; + case Omaha_Ponca = 'oma'; + case East_Ambae = 'omb'; + case Mochica = 'omc'; + case Omagua = 'omg'; + case Omi = 'omi'; + case Omok = 'omk'; + case Ombo = 'oml'; + case Minoan = 'omn'; + case Utarmbung = 'omo'; + case Old_Manipuri = 'omp'; + case Old_Marathi = 'omr'; + case Omotik = 'omt'; + case Omurano = 'omu'; + case South_Tairora = 'omw'; + case Old_Mon = 'omx'; + case Old_Malay = 'omy'; + case Ona = 'ona'; + case Lingao = 'onb'; + case Oneida = 'one'; + case Olo = 'ong'; + case Onin = 'oni'; + case Onjob = 'onj'; + case Kabore_One = 'onk'; + case Onobasulu = 'onn'; + case Onondaga = 'ono'; + case Sartang = 'onp'; + case Northern_One = 'onr'; + case Ono = 'ons'; + case Ontenu = 'ont'; + case Unua = 'onu'; + case Old_Nubian = 'onw'; + case Onin_Based_Pidgin = 'onx'; + case Tohono_O_odham = 'ood'; + case Ong = 'oog'; + case Onge = 'oon'; + case Oorlams = 'oor'; + case Old_Ossetic = 'oos'; + case Okpamheri = 'opa'; + case Kopkaka = 'opk'; + case Oksapmin = 'opm'; + case Opao = 'opo'; + case Opata = 'opt'; + case Ofaye = 'opy'; + case Oroha = 'ora'; + case Orma = 'orc'; + case Orejon = 'ore'; + case Oring = 'org'; + case Oroqen = 'orh'; + case Oriya_macrolanguage = 'ori'; + case Oromo = 'orm'; + case Orang_Kanaq = 'orn'; + case Orokolo = 'oro'; + case Oruma = 'orr'; + case Orang_Seletar = 'ors'; + case Adivasi_Oriya = 'ort'; + case Ormuri = 'oru'; + case Old_Russian = 'orv'; + case Oro_Win = 'orw'; + case Oro = 'orx'; + case Odia = 'ory'; + case Ormu = 'orz'; + case Osage = 'osa'; + case Oscan = 'osc'; + case Osing = 'osi'; + case Old_Sundanese = 'osn'; + case Ososo = 'oso'; + case Old_Spanish = 'osp'; + case Ossetian = 'oss'; + case Osatu = 'ost'; + case Southern_One = 'osu'; + case Old_Saxon = 'osx'; + case Ottoman_Turkish_1500_1928 = 'ota'; + case Old_Tibetan = 'otb'; + case Ot_Danum = 'otd'; + case Mezquital_Otomi = 'ote'; + case Oti = 'oti'; + case Old_Turkish = 'otk'; + case Tilapa_Otomi = 'otl'; + case Eastern_Highland_Otomi = 'otm'; + case Tenango_Otomi = 'otn'; + case Queretaro_Otomi = 'otq'; + case Otoro = 'otr'; + case Estado_de_Mexico_Otomi = 'ots'; + case Temoaya_Otomi = 'ott'; + case Otuke = 'otu'; + case Ottawa = 'otw'; + case Texcatepec_Otomi = 'otx'; + case Old_Tamil = 'oty'; + case Ixtenco_Otomi = 'otz'; + case Tagargrent = 'oua'; + case Glio_Oubi = 'oub'; + case Oune = 'oue'; + case Old_Uighur = 'oui'; + case Ouma = 'oum'; + case Elfdalian = 'ovd'; + case Owiniga = 'owi'; + case Old_Welsh = 'owl'; + case Oy = 'oyb'; + case Oyda = 'oyd'; + case Wayampi = 'oym'; + case Oya_oya = 'oyy'; + case Koonzime = 'ozm'; + case Parecis = 'pab'; + case Pacoh = 'pac'; + case Paumari = 'pad'; + case Pagibete = 'pae'; + case Paranawat = 'paf'; + case Pangasinan = 'pag'; + case Tenharim = 'pah'; + case Pe = 'pai'; + case Parakana = 'pak'; + case Pahlavi = 'pal'; + case Pampanga = 'pam'; + case Panjabi = 'pan'; + case Northern_Paiute = 'pao'; + case Papiamento = 'pap'; + case Parya = 'paq'; + case Panamint = 'par'; + case Papasena = 'pas'; + case Palauan = 'pau'; + case Pakaasnovos = 'pav'; + case Pawnee = 'paw'; + case Pankarare = 'pax'; + case Pech = 'pay'; + case Pankararu = 'paz'; + case Paez = 'pbb'; + case Patamona = 'pbc'; + case Mezontla_Popoloca = 'pbe'; + case Coyotepec_Popoloca = 'pbf'; + case Paraujano = 'pbg'; + case E_napa_Woromaipu = 'pbh'; + case Parkwa = 'pbi'; + case Mak_Nigeria = 'pbl'; + case Puebla_Mazatec = 'pbm'; + case Kpasam = 'pbn'; + case Papel = 'pbo'; + case Badyara = 'pbp'; + case Pangwa = 'pbr'; + case Central_Pame = 'pbs'; + case Southern_Pashto = 'pbt'; + case Northern_Pashto = 'pbu'; + case Pnar = 'pbv'; + case Pyu_Papua_New_Guinea = 'pby'; + case Santa_Ines_Ahuatempan_Popoloca = 'pca'; + case Pear = 'pcb'; + case Bouyei = 'pcc'; + case Picard = 'pcd'; + case Ruching_Palaung = 'pce'; + case Paliyan = 'pcf'; + case Paniya = 'pcg'; + case Pardhan = 'pch'; + case Duruwa = 'pci'; + case Parenga = 'pcj'; + case Paite_Chin = 'pck'; + case Pardhi = 'pcl'; + case Nigerian_Pidgin = 'pcm'; + case Piti = 'pcn'; + case Pacahuara = 'pcp'; + case Pyapun = 'pcw'; + case Anam = 'pda'; + case Pennsylvania_German = 'pdc'; + case Pa_Di = 'pdi'; + case Podena = 'pdn'; + case Padoe = 'pdo'; + case Plautdietsch = 'pdt'; + case Kayan = 'pdu'; + case Peranakan_Indonesian = 'pea'; + case Eastern_Pomo = 'peb'; + case Mala_Papua_New_Guinea = 'ped'; + case Taje = 'pee'; + case Northeastern_Pomo = 'pef'; + case Pengo = 'peg'; + case Bonan = 'peh'; + case Chichimeca_Jonaz = 'pei'; + case Northern_Pomo = 'pej'; + case Penchal = 'pek'; + case Pekal = 'pel'; + case Phende = 'pem'; + case Old_Persian_ca_600_400_B_C = 'peo'; + case Kunja = 'pep'; + case Southern_Pomo = 'peq'; + case Iranian_Persian = 'pes'; + case Pemono = 'pev'; + case Petats = 'pex'; + case Petjo = 'pey'; + case Eastern_Penan = 'pez'; + case Paafang = 'pfa'; + case Pere = 'pfe'; + case Pfaelzisch = 'pfl'; + case Sudanese_Creole_Arabic = 'pga'; + case Gandhari = 'pgd'; + case Pangwali = 'pgg'; + case Pagi = 'pgi'; + case Rerep = 'pgk'; + case Primitive_Irish = 'pgl'; + case Paelignian = 'pgn'; + case Pangseng = 'pgs'; + case Pagu = 'pgu'; + case Papua_New_Guinean_Sign_Language = 'pgz'; + case Pa_Hng = 'pha'; + case Phudagi = 'phd'; + case Phuong = 'phg'; + case Phukha = 'phh'; + case Pahari = 'phj'; + case Phake = 'phk'; + case Phalura = 'phl'; + case Phimbi = 'phm'; + case Phoenician = 'phn'; + case Phunoi = 'pho'; + case Phana = 'phq'; + case Pahari_Potwari = 'phr'; + case Phu_Thai = 'pht'; + case Phuan = 'phu'; + case Pahlavani = 'phv'; + case Phangduwali = 'phw'; + case Pima_Bajo = 'pia'; + case Yine = 'pib'; + case Pinji = 'pic'; + case Piaroa = 'pid'; + case Piro = 'pie'; + case Pingelapese = 'pif'; + case Pisabo = 'pig'; + case Pitcairn_Norfolk = 'pih'; + case Pijao = 'pij'; + case Yom = 'pil'; + case Powhatan = 'pim'; + case Piame = 'pin'; + case Piapoco = 'pio'; + case Pero = 'pip'; + case Piratapuyo = 'pir'; + case Pijin = 'pis'; + case Pitta_Pitta = 'pit'; + case Pintupi_Luritja = 'piu'; + case Pileni = 'piv'; + case Pimbwe = 'piw'; + case Piu = 'pix'; + case Piya_Kwonci = 'piy'; + case Pije = 'piz'; + case Pitjantjatjara = 'pjt'; + case Ardhamagadhi_Prakrit = 'pka'; + case Pokomo = 'pkb'; + case Paekche = 'pkc'; + case Pak_Tong = 'pkg'; + case Pankhu = 'pkh'; + case Pakanha = 'pkn'; + case Pokoot = 'pko'; + case Pukapuka = 'pkp'; + case Attapady_Kurumba = 'pkr'; + case Pakistan_Sign_Language = 'pks'; + case Maleng = 'pkt'; + case Paku = 'pku'; + case Miani = 'pla'; + case Polonombauk = 'plb'; + case Central_Palawano = 'plc'; + case Polari = 'pld'; + case Palu_e = 'ple'; + case Pilaga = 'plg'; + case Paulohi = 'plh'; + case Pali = 'pli'; + case Kohistani_Shina = 'plk'; + case Shwe_Palaung = 'pll'; + case Palenquero = 'pln'; + case Oluta_Popoluca = 'plo'; + case Palaic = 'plq'; + case Palaka_Senoufo = 'plr'; + case San_Marcos_Tlacoyalco_Popoloca = 'pls'; + case Plateau_Malagasy = 'plt'; + case Palikur = 'plu'; + case Southwest_Palawano = 'plv'; + case Brooke_s_Point_Palawano = 'plw'; + case Bolyu = 'ply'; + case Paluan = 'plz'; + case Paama = 'pma'; + case Pambia = 'pmb'; + case Pallanganmiddang = 'pmd'; + case Pwaamei = 'pme'; + case Pamona = 'pmf'; + case Maharastri_Prakrit = 'pmh'; + case Northern_Pumi = 'pmi'; + case Southern_Pumi = 'pmj'; + case Lingua_Franca = 'pml'; + case Pomo = 'pmm'; + case Pam = 'pmn'; + case Pom = 'pmo'; + case Northern_Pame = 'pmq'; + case Paynamar = 'pmr'; + case Piemontese = 'pms'; + case Tuamotuan = 'pmt'; + case Plains_Miwok = 'pmw'; + case Poumei_Naga = 'pmx'; + case Papuan_Malay = 'pmy'; + case Southern_Pame = 'pmz'; + case Punan_Bah_Biau = 'pna'; + case Western_Panjabi = 'pnb'; + case Pannei = 'pnc'; + case Mpinda = 'pnd'; + case Western_Penan = 'pne'; + case Pangu = 'png'; + case Penrhyn = 'pnh'; + case Aoheng = 'pni'; + case Pinjarup = 'pnj'; + case Paunaka = 'pnk'; + case Paleni = 'pnl'; + case Punan_Batu_1 = 'pnm'; + case Pinai_Hagahai = 'pnn'; + case Panobo = 'pno'; + case Pancana = 'pnp'; + case Pana_Burkina_Faso = 'pnq'; + case Panim = 'pnr'; + case Ponosakan = 'pns'; + case Pontic = 'pnt'; + case Jiongnai_Bunu = 'pnu'; + case Pinigura = 'pnv'; + case Banyjima = 'pnw'; + case Phong_Kniang = 'pnx'; + case Pinyin = 'pny'; + case Pana_Central_African_Republic = 'pnz'; + case Poqomam = 'poc'; + case San_Juan_Atzingo_Popoloca = 'poe'; + case Poke = 'pof'; + case Potiguara = 'pog'; + case Poqomchi = 'poh'; + case Highland_Popoluca = 'poi'; + case Pokanga = 'pok'; + case Polish = 'pol'; + case Southeastern_Pomo = 'pom'; + case Pohnpeian = 'pon'; + case Central_Pomo = 'poo'; + case Pwapwa = 'pop'; + case Texistepec_Popoluca = 'poq'; + case Portuguese = 'por'; + case Sayula_Popoluca = 'pos'; + case Potawatomi = 'pot'; + case Upper_Guinea_Crioulo = 'pov'; + case San_Felipe_Otlaltepec_Popoloca = 'pow'; + case Polabian = 'pox'; + case Pogolo = 'poy'; + case Papi = 'ppe'; + case Paipai = 'ppi'; + case Uma = 'ppk'; + case Pipil = 'ppl'; + case Papuma = 'ppm'; + case Papapana = 'ppn'; + case Folopa = 'ppo'; + case Pelende = 'ppp'; + case Pei = 'ppq'; + case San_Luis_Temalacayuca_Popoloca = 'pps'; + case Pare = 'ppt'; + case Papora = 'ppu'; + case Pa_a = 'pqa'; + case Malecite_Passamaquoddy = 'pqm'; + case Parachi = 'prc'; + case Parsi_Dari = 'prd'; + case Principense = 'pre'; + case Paranan = 'prf'; + case Prussian = 'prg'; + case Porohanon = 'prh'; + case Paici = 'pri'; + case Parauk = 'prk'; + case Peruvian_Sign_Language = 'prl'; + case Kibiri = 'prm'; + case Prasuni = 'prn'; + case Old_Provencal_to_1500 = 'pro'; + case Asheninka_Perene = 'prq'; + case Puri = 'prr'; + case Dari = 'prs'; + case Phai = 'prt'; + case Puragi = 'pru'; + case Parawen = 'prw'; + case Purik = 'prx'; + case Providencia_Sign_Language = 'prz'; + case Asue_Awyu = 'psa'; + case Iranian_Sign_Language = 'psc'; + case Plains_Indian_Sign_Language = 'psd'; + case Central_Malay = 'pse'; + case Penang_Sign_Language = 'psg'; + case Southwest_Pashai = 'psh'; + case Southeast_Pashai = 'psi'; + case Puerto_Rican_Sign_Language = 'psl'; + case Pauserna = 'psm'; + case Panasuan = 'psn'; + case Polish_Sign_Language = 'pso'; + case Philippine_Sign_Language = 'psp'; + case Pasi = 'psq'; + case Portuguese_Sign_Language = 'psr'; + case Kaulong = 'pss'; + case Central_Pashto = 'pst'; + case Sauraseni_Prakrit = 'psu'; + case Port_Sandwich = 'psw'; + case Piscataway = 'psy'; + case Pai_Tavytera = 'pta'; + case Pataxo_Ha_Ha_Hae = 'pth'; + case Pindiini = 'pti'; + case Patani = 'ptn'; + case Zo_e = 'pto'; + case Patep = 'ptp'; + case Pattapu = 'ptq'; + case Piamatsina = 'ptr'; + case Enrekang = 'ptt'; + case Bambam = 'ptu'; + case Port_Vato = 'ptv'; + case Pentlatch = 'ptw'; + case Pathiya = 'pty'; + case Western_Highland_Purepecha = 'pua'; + case Purum = 'pub'; + case Punan_Merap = 'puc'; + case Punan_Aput = 'pud'; + case Puelche = 'pue'; + case Punan_Merah = 'puf'; + case Phuie = 'pug'; + case Puinave = 'pui'; + case Punan_Tubu = 'puj'; + case Puma = 'pum'; + case Puoc = 'puo'; + case Pulabu = 'pup'; + case Puquina = 'puq'; + case Purubora = 'pur'; + case Pushto = 'pus'; + case Putoh = 'put'; + case Punu = 'puu'; + case Puluwatese = 'puw'; + case Puare = 'pux'; + case Purisimeno = 'puy'; + case Pawaia = 'pwa'; + case Panawa = 'pwb'; + case Gapapaiwa = 'pwg'; + case Patwin = 'pwi'; + case Molbog = 'pwm'; + case Paiwan = 'pwn'; + case Pwo_Western_Karen = 'pwo'; + case Powari = 'pwr'; + case Pwo_Northern_Karen = 'pww'; + case Quetzaltepec_Mixe = 'pxm'; + case Pye_Krumen = 'pye'; + case Fyam = 'pym'; + case Poyanawa = 'pyn'; + case Paraguayan_Sign_Language = 'pys'; + case Puyuma = 'pyu'; + case Pyu_Myanmar = 'pyx'; + case Pyen = 'pyy'; + case Pesse = 'pze'; + case Pazeh = 'pzh'; + case Jejara_Naga = 'pzn'; + case Quapaw = 'qua'; + case Huallaga_Huanuco_Quechua = 'qub'; + case K_iche = 'quc'; + case Calderon_Highland_Quichua = 'qud'; + case Quechua = 'que'; + case Lambayeque_Quechua = 'quf'; + case Chimborazo_Highland_Quichua = 'qug'; + case South_Bolivian_Quechua = 'quh'; + case Quileute = 'qui'; + case Chachapoyas_Quechua = 'quk'; + case North_Bolivian_Quechua = 'qul'; + case Sipacapense = 'qum'; + case Quinault = 'qun'; + case Southern_Pastaza_Quechua = 'qup'; + case Quinqui = 'quq'; + case Yanahuanca_Pasco_Quechua = 'qur'; + case Santiago_del_Estero_Quichua = 'qus'; + case Sacapulteco = 'quv'; + case Tena_Lowland_Quichua = 'quw'; + case Yauyos_Quechua = 'qux'; + case Ayacucho_Quechua = 'quy'; + case Cusco_Quechua = 'quz'; + case Ambo_Pasco_Quechua = 'qva'; + case Cajamarca_Quechua = 'qvc'; + case Eastern_Apurimac_Quechua = 'qve'; + case Huamalies_Dos_de_Mayo_Huanuco_Quechua = 'qvh'; + case Imbabura_Highland_Quichua = 'qvi'; + case Loja_Highland_Quichua = 'qvj'; + case Cajatambo_North_Lima_Quechua = 'qvl'; + case Margos_Yarowilca_Lauricocha_Quechua = 'qvm'; + case North_Junin_Quechua = 'qvn'; + case Napo_Lowland_Quechua = 'qvo'; + case Pacaraos_Quechua = 'qvp'; + case San_Martin_Quechua = 'qvs'; + case Huaylla_Wanca_Quechua = 'qvw'; + case Queyu = 'qvy'; + case Northern_Pastaza_Quichua = 'qvz'; + case Corongo_Ancash_Quechua = 'qwa'; + case Classical_Quechua = 'qwc'; + case Huaylas_Ancash_Quechua = 'qwh'; + case Kuman_Russia = 'qwm'; + case Sihuas_Ancash_Quechua = 'qws'; + case Kwalhioqua_Tlatskanai = 'qwt'; + case Chiquian_Ancash_Quechua = 'qxa'; + case Chincha_Quechua = 'qxc'; + case Panao_Huanuco_Quechua = 'qxh'; + case Salasaca_Highland_Quichua = 'qxl'; + case Northern_Conchucos_Ancash_Quechua = 'qxn'; + case Southern_Conchucos_Ancash_Quechua = 'qxo'; + case Puno_Quechua = 'qxp'; + case Qashqa_i = 'qxq'; + case Canar_Highland_Quichua = 'qxr'; + case Southern_Qiang = 'qxs'; + case Santa_Ana_de_Tusi_Pasco_Quechua = 'qxt'; + case Arequipa_La_Union_Quechua = 'qxu'; + case Jauja_Wanca_Quechua = 'qxw'; + case Quenya = 'qya'; + case Quiripi = 'qyp'; + case Dungmali = 'raa'; + case Camling = 'rab'; + case Rasawa = 'rac'; + case Rade = 'rad'; + case Western_Meohang = 'raf'; + case Logooli = 'rag'; + case Rabha = 'rah'; + case Ramoaaina = 'rai'; + case Rajasthani = 'raj'; + case Tulu_Bohuai = 'rak'; + case Ralte = 'ral'; + case Canela = 'ram'; + case Riantana = 'ran'; + case Rao = 'rao'; + case Rapanui = 'rap'; + case Saam = 'raq'; + case Rarotongan = 'rar'; + case Tegali = 'ras'; + case Razajerdi = 'rat'; + case Raute = 'rau'; + case Sampang = 'rav'; + case Rawang = 'raw'; + case Rang = 'rax'; + case Rapa = 'ray'; + case Rahambuu = 'raz'; + case Rumai_Palaung = 'rbb'; + case Northern_Bontok = 'rbk'; + case Miraya_Bikol = 'rbl'; + case Barababaraba = 'rbp'; + case Reunion_Creole_French = 'rcf'; + case Rudbari = 'rdb'; + case Rerau = 'rea'; + case Rembong = 'reb'; + case Rejang_Kayan = 'ree'; + case Kara_Tanzania = 'reg'; + case Reli = 'rei'; + case Rejang = 'rej'; + case Rendille = 'rel'; + case Remo = 'rem'; + case Rengao = 'ren'; + case Rer_Bare = 'rer'; + case Reshe = 'res'; + case Retta = 'ret'; + case Reyesano = 'rey'; + case Roria = 'rga'; + case Romano_Greek = 'rge'; + case Rangkas = 'rgk'; + case Romagnol = 'rgn'; + case Resigaro = 'rgr'; + case Southern_Roglai = 'rgs'; + case Ringgou = 'rgu'; + case Rohingya = 'rhg'; + case Yahang = 'rhp'; + case Riang_India = 'ria'; + case Bribri_Sign_Language = 'rib'; + case Tarifit = 'rif'; + case Riang_Lang = 'ril'; + case Nyaturu = 'rim'; + case Nungu = 'rin'; + case Ribun = 'rir'; + case Ritharrngu = 'rit'; + case Riung = 'riu'; + case Rajong = 'rjg'; + case Raji = 'rji'; + case Rajbanshi = 'rjs'; + case Kraol = 'rka'; + case Rikbaktsa = 'rkb'; + case Rakahanga_Manihiki = 'rkh'; + case Rakhine = 'rki'; + case Marka = 'rkm'; + case Rangpuri = 'rkt'; + case Arakwal = 'rkw'; + case Rama = 'rma'; + case Rembarrnga = 'rmb'; + case Carpathian_Romani = 'rmc'; + case Traveller_Danish = 'rmd'; + case Angloromani = 'rme'; + case Kalo_Finnish_Romani = 'rmf'; + case Traveller_Norwegian = 'rmg'; + case Murkim = 'rmh'; + case Lomavren = 'rmi'; + case Romkun = 'rmk'; + case Baltic_Romani = 'rml'; + case Roma = 'rmm'; + case Balkan_Romani = 'rmn'; + case Sinte_Romani = 'rmo'; + case Rempi = 'rmp'; + case Calo = 'rmq'; + case Romanian_Sign_Language = 'rms'; + case Domari = 'rmt'; + case Tavringer_Romani = 'rmu'; + case Romanova = 'rmv'; + case Welsh_Romani = 'rmw'; + case Romam = 'rmx'; + case Vlax_Romani = 'rmy'; + case Marma = 'rmz'; + case Brunca_Sign_Language = 'rnb'; + case Ruund = 'rnd'; + case Ronga = 'rng'; + case Ranglong = 'rnl'; + case Roon = 'rnn'; + case Rongpo = 'rnp'; + case Nari_Nari = 'rnr'; + case Rungwa = 'rnw'; + case Tae = 'rob'; + case Cacgia_Roglai = 'roc'; + case Rogo = 'rod'; + case Ronji = 'roe'; + case Rombo = 'rof'; + case Northern_Roglai = 'rog'; + case Romansh = 'roh'; + case Romblomanon = 'rol'; + case Romany = 'rom'; + case Romanian = 'ron'; + case Rotokas = 'roo'; + case Kriol = 'rop'; + case Rongga = 'ror'; + case Runga = 'rou'; + case Dela_Oenale = 'row'; + case Repanbitip = 'rpn'; + case Rapting = 'rpt'; + case Ririo = 'rri'; + case Moriori = 'rrm'; + case Waima = 'rro'; + case Arritinngithigh = 'rrt'; + case Romano_Serbian = 'rsb'; + case Ruthenian = 'rsk'; + case Russian_Sign_Language = 'rsl'; + case Miriwoong_Sign_Language = 'rsm'; + case Rwandan_Sign_Language = 'rsn'; + case Rishiwa = 'rsw'; + case Rungtu_Chin = 'rtc'; + case Ratahan = 'rth'; + case Rotuman = 'rtm'; + case Yurats = 'rts'; + case Rathawi = 'rtw'; + case Gungu = 'rub'; + case Ruuli = 'ruc'; + case Rusyn = 'rue'; + case Luguru = 'ruf'; + case Roviana = 'rug'; + case Ruga = 'ruh'; + case Rufiji = 'rui'; + case Che = 'ruk'; + case Rundi = 'run'; + case Istro_Romanian = 'ruo'; + case Macedo_Romanian = 'rup'; + case Megleno_Romanian = 'ruq'; + case Russian = 'rus'; + case Rutul = 'rut'; + case Lanas_Lobu = 'ruu'; + case Mala_Nigeria = 'ruy'; + case Ruma = 'ruz'; + case Rawo = 'rwa'; + case Rwa = 'rwk'; + case Ruwila = 'rwl'; + case Amba_Uganda = 'rwm'; + case Rawa = 'rwo'; + case Marwari_India = 'rwr'; + case Ngardi = 'rxd'; + case Karuwali = 'rxw'; + case Northern_Amami_Oshima = 'ryn'; + case Yaeyama = 'rys'; + case Central_Okinawan = 'ryu'; + case Razihi = 'rzh'; + case Saba = 'saa'; + case Buglere = 'sab'; + case Meskwaki = 'sac'; + case Sandawe = 'sad'; + case Sabane = 'sae'; + case Safaliba = 'saf'; + case Sango = 'sag'; + case Yakut = 'sah'; + case Sahu = 'saj'; + case Sake = 'sak'; + case Samaritan_Aramaic = 'sam'; + case Sanskrit = 'san'; + case Sause = 'sao'; + case Samburu = 'saq'; + case Saraveca = 'sar'; + case Sasak = 'sas'; + case Santali = 'sat'; + case Saleman = 'sau'; + case Saafi_Saafi = 'sav'; + case Sawi = 'saw'; + case Sa = 'sax'; + case Saya = 'say'; + case Saurashtra = 'saz'; + case Ngambay = 'sba'; + case Simbo = 'sbb'; + case Kele_Papua_New_Guinea = 'sbc'; + case Southern_Samo = 'sbd'; + case Saliba = 'sbe'; + case Chabu = 'sbf'; + case Seget = 'sbg'; + case Sori_Harengan = 'sbh'; + case Seti = 'sbi'; + case Surbakhal = 'sbj'; + case Safwa = 'sbk'; + case Botolan_Sambal = 'sbl'; + case Sagala = 'sbm'; + case Sindhi_Bhil = 'sbn'; + case Sabum = 'sbo'; + case Sangu_Tanzania = 'sbp'; + case Sileibi = 'sbq'; + case Sembakung_Murut = 'sbr'; + case Subiya = 'sbs'; + case Kimki = 'sbt'; + case Stod_Bhoti = 'sbu'; + case Sabine = 'sbv'; + case Simba = 'sbw'; + case Seberuang = 'sbx'; + case Soli = 'sby'; + case Sara_Kaba = 'sbz'; + case Chut = 'scb'; + case Dongxiang = 'sce'; + case San_Miguel_Creole_French = 'scf'; + case Sanggau = 'scg'; + case Sakachep = 'sch'; + case Sri_Lankan_Creole_Malay = 'sci'; + case Sadri = 'sck'; + case Shina = 'scl'; + case Sicilian = 'scn'; + case Scots = 'sco'; + case Hyolmo = 'scp'; + case Sa_och = 'scq'; + case North_Slavey = 'scs'; + case Southern_Katang = 'sct'; + case Shumcho = 'scu'; + case Sheni = 'scv'; + case Sha = 'scw'; + case Sicel = 'scx'; + case Toraja_Sa_dan = 'sda'; + case Shabak = 'sdb'; + case Sassarese_Sardinian = 'sdc'; + case Surubu = 'sde'; + case Sarli = 'sdf'; + case Savi = 'sdg'; + case Southern_Kurdish = 'sdh'; + case Suundi = 'sdj'; + case Sos_Kundi = 'sdk'; + case Saudi_Arabian_Sign_Language = 'sdl'; + case Gallurese_Sardinian = 'sdn'; + case Bukar_Sadung_Bidayuh = 'sdo'; + case Sherdukpen = 'sdp'; + case Semandang = 'sdq'; + case Oraon_Sadri = 'sdr'; + case Sened = 'sds'; + case Shuadit = 'sdt'; + case Sarudu = 'sdu'; + case Sibu_Melanau = 'sdx'; + case Sallands = 'sdz'; + case Semai = 'sea'; + case Shempire_Senoufo = 'seb'; + case Sechelt = 'sec'; + case Sedang = 'sed'; + case Seneca = 'see'; + case Cebaara_Senoufo = 'sef'; + case Segeju = 'seg'; + case Sena = 'seh'; + case Seri = 'sei'; + case Sene = 'sej'; + case Sekani = 'sek'; + case Selkup = 'sel'; + case Nanerige_Senoufo = 'sen'; + case Suarmin = 'seo'; + case Sicite_Senoufo = 'sep'; + case Senara_Senoufo = 'seq'; + case Serrano = 'ser'; + case Koyraboro_Senni_Songhai = 'ses'; + case Sentani = 'set'; + case Serui_Laut = 'seu'; + case Nyarafolo_Senoufo = 'sev'; + case Sewa_Bay = 'sew'; + case Secoya = 'sey'; + case Senthang_Chin = 'sez'; + case Langue_des_signes_de_Belgique_Francophone = 'sfb'; + case Eastern_Subanen = 'sfe'; + case Small_Flowery_Miao = 'sfm'; + case South_African_Sign_Language = 'sfs'; + case Sehwi = 'sfw'; + case Old_Irish_to_900 = 'sga'; + case Mag_antsi_Ayta = 'sgb'; + case Kipsigis = 'sgc'; + case Surigaonon = 'sgd'; + case Segai = 'sge'; + case Swiss_German_Sign_Language = 'sgg'; + case Shughni = 'sgh'; + case Suga = 'sgi'; + case Surgujia = 'sgj'; + case Sangkong = 'sgk'; + case Singa = 'sgm'; + case Singpho = 'sgp'; + case Sangisari = 'sgr'; + case Samogitian = 'sgs'; + case Brokpake = 'sgt'; + case Salas = 'sgu'; + case Sebat_Bet_Gurage = 'sgw'; + case Sierra_Leone_Sign_Language = 'sgx'; + case Sanglechi = 'sgy'; + case Sursurunga = 'sgz'; + case Shall_Zwall = 'sha'; + case Ninam = 'shb'; + case Sonde = 'shc'; + case Kundal_Shahi = 'shd'; + case Sheko = 'she'; + case Shua = 'shg'; + case Shoshoni = 'shh'; + case Tachelhit = 'shi'; + case Shatt = 'shj'; + case Shilluk = 'shk'; + case Shendu = 'shl'; + case Shahrudi = 'shm'; + case Shan = 'shn'; + case Shanga = 'sho'; + case Shipibo_Conibo = 'shp'; + case Sala = 'shq'; + case Shi = 'shr'; + case Shuswap = 'shs'; + case Shasta = 'sht'; + case Chadian_Arabic = 'shu'; + case Shehri = 'shv'; + case Shwai = 'shw'; + case She = 'shx'; + case Tachawit = 'shy'; + case Syenara_Senoufo = 'shz'; + case Akkala_Sami = 'sia'; + case Sebop = 'sib'; + case Sidamo = 'sid'; + case Simaa = 'sie'; + case Siamou = 'sif'; + case Paasaal = 'sig'; + case Zire = 'sih'; + case Shom_Peng = 'sii'; + case Numbami = 'sij'; + case Sikiana = 'sik'; + case Tumulung_Sisaala = 'sil'; + case Mende_Papua_New_Guinea = 'sim'; + case Sinhala = 'sin'; + case Sikkimese = 'sip'; + case Sonia = 'siq'; + case Siri = 'sir'; + case Siuslaw = 'sis'; + case Sinagen = 'siu'; + case Sumariup = 'siv'; + case Siwai = 'siw'; + case Sumau = 'six'; + case Sivandi = 'siy'; + case Siwi = 'siz'; + case Epena = 'sja'; + case Sajau_Basap = 'sjb'; + case Kildin_Sami = 'sjd'; + case Pite_Sami = 'sje'; + case Assangori = 'sjg'; + case Kemi_Sami = 'sjk'; + case Sajalong = 'sjl'; + case Mapun = 'sjm'; + case Sindarin = 'sjn'; + case Xibe = 'sjo'; + case Surjapuri = 'sjp'; + case Siar_Lak = 'sjr'; + case Senhaja_De_Srair = 'sjs'; + case Ter_Sami = 'sjt'; + case Ume_Sami = 'sju'; + case Shawnee = 'sjw'; + case Skagit = 'ska'; + case Saek = 'skb'; + case Ma_Manda = 'skc'; + case Southern_Sierra_Miwok = 'skd'; + case Seke_Vanuatu = 'ske'; + case Sakirabia = 'skf'; + case Sakalava_Malagasy = 'skg'; + case Sikule = 'skh'; + case Sika = 'ski'; + case Seke_Nepal = 'skj'; + case Kutong = 'skm'; + case Kolibugan_Subanon = 'skn'; + case Seko_Tengah = 'sko'; + case Sekapan = 'skp'; + case Sininkere = 'skq'; + case Saraiki = 'skr'; + case Maia = 'sks'; + case Sakata = 'skt'; + case Sakao = 'sku'; + case Skou = 'skv'; + case Skepi_Creole_Dutch = 'skw'; + case Seko_Padang = 'skx'; + case Sikaiana = 'sky'; + case Sekar = 'skz'; + case Saliba_2 = 'slc'; + case Sissala = 'sld'; + case Sholaga = 'sle'; + case Swiss_Italian_Sign_Language = 'slf'; + case Selungai_Murut = 'slg'; + case Southern_Puget_Sound_Salish = 'slh'; + case Lower_Silesian = 'sli'; + case Saluma = 'slj'; + case Slovak = 'slk'; + case Salt_Yui = 'sll'; + case Pangutaran_Sama = 'slm'; + case Salinan = 'sln'; + case Lamaholot = 'slp'; + case Salar = 'slr'; + case Singapore_Sign_Language = 'sls'; + case Sila = 'slt'; + case Selaru = 'slu'; + case Slovenian = 'slv'; + case Sialum = 'slw'; + case Salampasu = 'slx'; + case Selayar = 'sly'; + case Ma_ya = 'slz'; + case Southern_Sami = 'sma'; + case Simbari = 'smb'; + case Som = 'smc'; + case Northern_Sami = 'sme'; + case Auwe = 'smf'; + case Simbali = 'smg'; + case Samei = 'smh'; + case Lule_Sami = 'smj'; + case Bolinao = 'smk'; + case Central_Sama = 'sml'; + case Musasa = 'smm'; + case Inari_Sami = 'smn'; + case Samoan = 'smo'; + case Samaritan = 'smp'; + case Samo = 'smq'; + case Simeulue = 'smr'; + case Skolt_Sami = 'sms'; + case Simte = 'smt'; + case Somray = 'smu'; + case Samvedi = 'smv'; + case Sumbawa = 'smw'; + case Samba = 'smx'; + case Semnani = 'smy'; + case Simeku = 'smz'; + case Shona = 'sna'; + case Sinaugoro = 'snc'; + case Sindhi = 'snd'; + case Bau_Bidayuh = 'sne'; + case Noon = 'snf'; + case Sanga_Democratic_Republic_of_Congo = 'sng'; + case Sensi = 'sni'; + case Riverain_Sango = 'snj'; + case Soninke = 'snk'; + case Sangil = 'snl'; + case Southern_Ma_di = 'snm'; + case Siona = 'snn'; + case Snohomish = 'sno'; + case Siane = 'snp'; + case Sangu_Gabon = 'snq'; + case Sihan = 'snr'; + case South_West_Bay = 'sns'; + case Senggi = 'snu'; + case Sa_ban = 'snv'; + case Selee = 'snw'; + case Sam = 'snx'; + case Saniyo_Hiyewe = 'sny'; + case Kou = 'snz'; + case Thai_Song = 'soa'; + case Sobei = 'sob'; + case So_Democratic_Republic_of_Congo = 'soc'; + case Songoora = 'sod'; + case Songomeno = 'soe'; + case Sogdian = 'sog'; + case Aka = 'soh'; + case Sonha = 'soi'; + case Soi = 'soj'; + case Sokoro = 'sok'; + case Solos = 'sol'; + case Somali = 'som'; + case Songo = 'soo'; + case Songe = 'sop'; + case Kanasi = 'soq'; + case Somrai = 'sor'; + case Seeku = 'sos'; + case Southern_Sotho = 'sot'; + case Southern_Thai = 'sou'; + case Sonsorol = 'sov'; + case Sowanda = 'sow'; + case Swo = 'sox'; + case Miyobe = 'soy'; + case Temi = 'soz'; + case Spanish = 'spa'; + case Sepa_Indonesia = 'spb'; + case Sape = 'spc'; + case Saep = 'spd'; + case Sepa_Papua_New_Guinea = 'spe'; + case Sian = 'spg'; + case Saponi = 'spi'; + case Sengo = 'spk'; + case Selepet = 'spl'; + case Akukem = 'spm'; + case Sanapana = 'spn'; + case Spokane = 'spo'; + case Supyire_Senoufo = 'spp'; + case Loreto_Ucayali_Spanish = 'spq'; + case Saparua = 'spr'; + case Saposa = 'sps'; + case Spiti_Bhoti = 'spt'; + case Sapuan = 'spu'; + case Sambalpuri = 'spv'; + case South_Picene = 'spx'; + case Sabaot = 'spy'; + case Shama_Sambuga = 'sqa'; + case Shau = 'sqh'; + case Albanian = 'sqi'; + case Albanian_Sign_Language = 'sqk'; + case Suma = 'sqm'; + case Susquehannock = 'sqn'; + case Sorkhei = 'sqo'; + case Sou = 'sqq'; + case Siculo_Arabic = 'sqr'; + case Sri_Lankan_Sign_Language = 'sqs'; + case Soqotri = 'sqt'; + case Squamish = 'squ'; + case Kufr_Qassem_Sign_Language_KQSL = 'sqx'; + case Saruga = 'sra'; + case Sora = 'srb'; + case Logudorese_Sardinian = 'src'; + case Sardinian = 'srd'; + case Sara = 'sre'; + case Nafi = 'srf'; + case Sulod = 'srg'; + case Sarikoli = 'srh'; + case Siriano = 'sri'; + case Serudung_Murut = 'srk'; + case Isirawa = 'srl'; + case Saramaccan = 'srm'; + case Sranan_Tongo = 'srn'; + case Campidanese_Sardinian = 'sro'; + case Serbian = 'srp'; + case Siriono = 'srq'; + case Serer = 'srr'; + case Sarsi = 'srs'; + case Sauri = 'srt'; + case Surui = 'sru'; + case Southern_Sorsoganon = 'srv'; + case Serua = 'srw'; + case Sirmauri = 'srx'; + case Sera = 'sry'; + case Shahmirzadi = 'srz'; + case Southern_Sama = 'ssb'; + case Suba_Simbiti = 'ssc'; + case Siroi = 'ssd'; + case Balangingi = 'sse'; + case Thao = 'ssf'; + case Seimat = 'ssg'; + case Shihhi_Arabic = 'ssh'; + case Sansi = 'ssi'; + case Sausi = 'ssj'; + case Sunam = 'ssk'; + case Western_Sisaala = 'ssl'; + case Semnam = 'ssm'; + case Waata = 'ssn'; + case Sissano = 'sso'; + case Spanish_Sign_Language = 'ssp'; + case So_a = 'ssq'; + case Swiss_French_Sign_Language = 'ssr'; + case So = 'sss'; + case Sinasina = 'sst'; + case Susuami = 'ssu'; + case Shark_Bay = 'ssv'; + case Swati = 'ssw'; + case Samberigi = 'ssx'; + case Saho = 'ssy'; + case Sengseng = 'ssz'; + case Settla = 'sta'; + case Northern_Subanen = 'stb'; + case Sentinel = 'std'; + case Liana_Seti = 'ste'; + case Seta = 'stf'; + case Trieng = 'stg'; + case Shelta = 'sth'; + case Bulo_Stieng = 'sti'; + case Matya_Samo = 'stj'; + case Arammba = 'stk'; + case Stellingwerfs = 'stl'; + case Setaman = 'stm'; + case Owa = 'stn'; + case Stoney = 'sto'; + case Southeastern_Tepehuan = 'stp'; + case Saterfriesisch = 'stq'; + case Straits_Salish = 'str'; + case Shumashti = 'sts'; + case Budeh_Stieng = 'stt'; + case Samtao = 'stu'; + case Silt_e = 'stv'; + case Satawalese = 'stw'; + case Siberian_Tatar = 'sty'; + case Sulka = 'sua'; + case Suku = 'sub'; + case Western_Subanon = 'suc'; + case Suena = 'sue'; + case Suganga = 'sug'; + case Suki = 'sui'; + case Shubi = 'suj'; + case Sukuma = 'suk'; + case Sundanese = 'sun'; + case Bouni = 'suo'; + case Tirmaga_Chai_Suri = 'suq'; + case Mwaghavul = 'sur'; + case Susu = 'sus'; + case Subtiaba = 'sut'; + case Puroik = 'suv'; + case Sumbwa = 'suw'; + case Sumerian = 'sux'; + case Suya = 'suy'; + case Sunwar = 'suz'; + case Svan = 'sva'; + case Ulau_Suain = 'svb'; + case Vincentian_Creole_English = 'svc'; + case Serili = 'sve'; + case Slovakian_Sign_Language = 'svk'; + case Slavomolisano = 'svm'; + case Savosavo = 'svs'; + case Skalvian = 'svx'; + case Swahili_macrolanguage = 'swa'; + case Maore_Comorian = 'swb'; + case Congo_Swahili = 'swc'; + case Swedish = 'swe'; + case Sere = 'swf'; + case Swabian = 'swg'; + case Swahili_individual_language = 'swh'; + case Sui = 'swi'; + case Sira = 'swj'; + case Malawi_Sena = 'swk'; + case Swedish_Sign_Language = 'swl'; + case Samosa = 'swm'; + case Sawknah = 'swn'; + case Shanenawa = 'swo'; + case Suau = 'swp'; + case Sharwa = 'swq'; + case Saweru = 'swr'; + case Seluwasan = 'sws'; + case Sawila = 'swt'; + case Suwawa = 'swu'; + case Shekhawati = 'swv'; + case Sowa = 'sww'; + case Suruaha = 'swx'; + case Sarua = 'swy'; + case Suba = 'sxb'; + case Sicanian = 'sxc'; + case Sighu = 'sxe'; + case Shuhi = 'sxg'; + case Southern_Kalapuya = 'sxk'; + case Selian = 'sxl'; + case Samre = 'sxm'; + case Sangir = 'sxn'; + case Sorothaptic = 'sxo'; + case Saaroa = 'sxr'; + case Sasaru = 'sxs'; + case Upper_Saxon = 'sxu'; + case Saxwe_Gbe = 'sxw'; + case Siang = 'sya'; + case Central_Subanen = 'syb'; + case Classical_Syriac = 'syc'; + case Seki = 'syi'; + case Sukur = 'syk'; + case Sylheti = 'syl'; + case Maya_Samo = 'sym'; + case Senaya = 'syn'; + case Suoy = 'syo'; + case Syriac = 'syr'; + case Sinyar = 'sys'; + case Kagate = 'syw'; + case Samay = 'syx'; + case Al_Sayyid_Bedouin_Sign_Language = 'syy'; + case Semelai = 'sza'; + case Ngalum = 'szb'; + case Semaq_Beri = 'szc'; + case Seze = 'sze'; + case Sengele = 'szg'; + case Silesian = 'szl'; + case Sula = 'szn'; + case Suabo = 'szp'; + case Solomon_Islands_Sign_Language = 'szs'; + case Isu_Fako_Division = 'szv'; + case Sawai = 'szw'; + case Sakizaya = 'szy'; + case Lower_Tanana = 'taa'; + case Tabassaran = 'tab'; + case Lowland_Tarahumara = 'tac'; + case Tause = 'tad'; + case Tariana = 'tae'; + case Tapirape = 'taf'; + case Tagoi = 'tag'; + case Tahitian = 'tah'; + case Eastern_Tamang = 'taj'; + case Tala = 'tak'; + case Tal = 'tal'; + case Tamil = 'tam'; + case Tangale = 'tan'; + case Yami = 'tao'; + case Taabwa = 'tap'; + case Tamasheq = 'taq'; + case Central_Tarahumara = 'tar'; + case Tay_Boi = 'tas'; + case Tatar = 'tat'; + case Upper_Tanana = 'tau'; + case Tatuyo = 'tav'; + case Tai = 'taw'; + case Tamki = 'tax'; + case Atayal = 'tay'; + case Tocho = 'taz'; + case Aikana = 'tba'; + case Takia = 'tbc'; + case Kaki_Ae = 'tbd'; + case Tanimbili = 'tbe'; + case Mandara = 'tbf'; + case North_Tairora = 'tbg'; + case Dharawal = 'tbh'; + case Gaam = 'tbi'; + case Tiang = 'tbj'; + case Calamian_Tagbanwa = 'tbk'; + case Tboli = 'tbl'; + case Tagbu = 'tbm'; + case Barro_Negro_Tunebo = 'tbn'; + case Tawala = 'tbo'; + case Taworta = 'tbp'; + case Tumtum = 'tbr'; + case Tanguat = 'tbs'; + case Tembo_Kitembo = 'tbt'; + case Tubar = 'tbu'; + case Tobo = 'tbv'; + case Tagbanwa = 'tbw'; + case Kapin = 'tbx'; + case Tabaru = 'tby'; + case Ditammari = 'tbz'; + case Ticuna = 'tca'; + case Tanacross = 'tcb'; + case Datooga = 'tcc'; + case Tafi = 'tcd'; + case Southern_Tutchone = 'tce'; + case Malinaltepec_Me_phaa = 'tcf'; + case Tamagario = 'tcg'; + case Turks_And_Caicos_Creole_English = 'tch'; + case Wara = 'tci'; + case Tchitchege = 'tck'; + case Taman_Myanmar = 'tcl'; + case Tanahmerah = 'tcm'; + case Tichurong = 'tcn'; + case Taungyo = 'tco'; + case Tawr_Chin = 'tcp'; + case Kaiy = 'tcq'; + case Torres_Strait_Creole = 'tcs'; + case T_en = 'tct'; + case Southeastern_Tarahumara = 'tcu'; + case Tecpatlan_Totonac = 'tcw'; + case Toda = 'tcx'; + case Tulu = 'tcy'; + case Thado_Chin = 'tcz'; + case Tagdal = 'tda'; + case Panchpargania = 'tdb'; + case Embera_Tado = 'tdc'; + case Tai_Nua = 'tdd'; + case Tiranige_Diga_Dogon = 'tde'; + case Talieng = 'tdf'; + case Western_Tamang = 'tdg'; + case Thulung = 'tdh'; + case Tomadino = 'tdi'; + case Tajio = 'tdj'; + case Tambas = 'tdk'; + case Sur = 'tdl'; + case Taruma = 'tdm'; + case Tondano = 'tdn'; + case Teme = 'tdo'; + case Tita = 'tdq'; + case Todrah = 'tdr'; + case Doutai = 'tds'; + case Tetun_Dili = 'tdt'; + case Toro = 'tdv'; + case Tandroy_Mahafaly_Malagasy = 'tdx'; + case Tadyawan = 'tdy'; + case Temiar = 'tea'; + case Tetete = 'teb'; + case Terik = 'tec'; + case Tepo_Krumen = 'ted'; + case Huehuetla_Tepehua = 'tee'; + case Teressa = 'tef'; + case Teke_Tege = 'teg'; + case Tehuelche = 'teh'; + case Torricelli = 'tei'; + case Ibali_Teke = 'tek'; + case Telugu = 'tel'; + case Timne = 'tem'; + case Tama_Colombia = 'ten'; + case Teso = 'teo'; + case Tepecano = 'tep'; + case Temein = 'teq'; + case Tereno = 'ter'; + case Tengger = 'tes'; + case Tetum = 'tet'; + case Soo = 'teu'; + case Teor = 'tev'; + case Tewa_USA = 'tew'; + case Tennet = 'tex'; + case Tulishi = 'tey'; + case Tetserret = 'tez'; + case Tofin_Gbe = 'tfi'; + case Tanaina = 'tfn'; + case Tefaro = 'tfo'; + case Teribe = 'tfr'; + case Ternate = 'tft'; + case Sagalla = 'tga'; + case Tobilung = 'tgb'; + case Tigak = 'tgc'; + case Ciwogai = 'tgd'; + case Eastern_Gorkha_Tamang = 'tge'; + case Chalikha = 'tgf'; + case Tobagonian_Creole_English = 'tgh'; + case Lawunuia = 'tgi'; + case Tagin = 'tgj'; + case Tajik = 'tgk'; + case Tagalog = 'tgl'; + case Tandaganon = 'tgn'; + case Sudest = 'tgo'; + case Tangoa = 'tgp'; + case Tring = 'tgq'; + case Tareng = 'tgr'; + case Nume = 'tgs'; + case Central_Tagbanwa = 'tgt'; + case Tanggu = 'tgu'; + case Tingui_Boto = 'tgv'; + case Tagwana_Senoufo = 'tgw'; + case Tagish = 'tgx'; + case Togoyo = 'tgy'; + case Tagalaka = 'tgz'; + case Thai = 'tha'; + case Kuuk_Thaayorre = 'thd'; + case Chitwania_Tharu = 'the'; + case Thangmi = 'thf'; + case Northern_Tarahumara = 'thh'; + case Tai_Long = 'thi'; + case Tharaka = 'thk'; + case Dangaura_Tharu = 'thl'; + case Aheu = 'thm'; + case Thachanadan = 'thn'; + case Thompson = 'thp'; + case Kochila_Tharu = 'thq'; + case Rana_Tharu = 'thr'; + case Thakali = 'ths'; + case Tahltan = 'tht'; + case Thuri = 'thu'; + case Tahaggart_Tamahaq = 'thv'; + case Tha = 'thy'; + case Tayart_Tamajeq = 'thz'; + case Tidikelt_Tamazight = 'tia'; + case Tira = 'tic'; + case Tifal = 'tif'; + case Tigre = 'tig'; + case Timugon_Murut = 'tih'; + case Tiene = 'tii'; + case Tilung = 'tij'; + case Tikar = 'tik'; + case Tillamook = 'til'; + case Timbe = 'tim'; + case Tindi = 'tin'; + case Teop = 'tio'; + case Trimuris = 'tip'; + case Tiefo = 'tiq'; + case Tigrinya = 'tir'; + case Masadiit_Itneg = 'tis'; + case Tinigua = 'tit'; + case Adasen = 'tiu'; + case Tiv = 'tiv'; + case Tiwi = 'tiw'; + case Southern_Tiwa = 'tix'; + case Tiruray = 'tiy'; + case Tai_Hongjin = 'tiz'; + case Tajuasohn = 'tja'; + case Tunjung = 'tjg'; + case Northern_Tujia = 'tji'; + case Tjungundji = 'tjj'; + case Tai_Laing = 'tjl'; + case Timucua = 'tjm'; + case Tonjon = 'tjn'; + case Temacine_Tamazight = 'tjo'; + case Tjupany = 'tjp'; + case Southern_Tujia = 'tjs'; + case Tjurruru = 'tju'; + case Djabwurrung = 'tjw'; + case Truka = 'tka'; + case Buksa = 'tkb'; + case Tukudede = 'tkd'; + case Takwane = 'tke'; + case Tukumanfed = 'tkf'; + case Tesaka_Malagasy = 'tkg'; + case Tokelau = 'tkl'; + case Takelma = 'tkm'; + case Toku_No_Shima = 'tkn'; + case Tikopia = 'tkp'; + case Tee = 'tkq'; + case Tsakhur = 'tkr'; + case Takestani = 'tks'; + case Kathoriya_Tharu = 'tkt'; + case Upper_Necaxa_Totonac = 'tku'; + case Mur_Pano = 'tkv'; + case Teanu = 'tkw'; + case Tangko = 'tkx'; + case Takua = 'tkz'; + case Southwestern_Tepehuan = 'tla'; + case Tobelo = 'tlb'; + case Yecuatla_Totonac = 'tlc'; + case Talaud = 'tld'; + case Telefol = 'tlf'; + case Tofanma = 'tlg'; + case Klingon = 'tlh'; + case Tlingit = 'tli'; + case Talinga_Bwisi = 'tlj'; + case Taloki = 'tlk'; + case Tetela = 'tll'; + case Tolomako = 'tlm'; + case Talondo = 'tln'; + case Talodi = 'tlo'; + case Filomena_Mata_Coahuitlan_Totonac = 'tlp'; + case Tai_Loi = 'tlq'; + case Talise = 'tlr'; + case Tambotalo = 'tls'; + case Sou_Nama = 'tlt'; + case Tulehu = 'tlu'; + case Taliabu = 'tlv'; + case Khehek = 'tlx'; + case Talysh = 'tly'; + case Tama_Chad = 'tma'; + case Katbol = 'tmb'; + case Tumak = 'tmc'; + case Haruai = 'tmd'; + case Tremembe = 'tme'; + case Toba_Maskoy = 'tmf'; + case Ternateno = 'tmg'; + case Tamashek = 'tmh'; + case Tutuba = 'tmi'; + case Samarokena = 'tmj'; + case Tamnim_Citak = 'tml'; + case Tai_Thanh = 'tmm'; + case Taman_Indonesia = 'tmn'; + case Temoq = 'tmo'; + case Tumleo = 'tmq'; + case Jewish_Babylonian_Aramaic_ca_200_1200_CE = 'tmr'; + case Tima = 'tms'; + case Tasmate = 'tmt'; + case Iau = 'tmu'; + case Tembo_Motembo = 'tmv'; + case Temuan = 'tmw'; + case Tami = 'tmy'; + case Tamanaku = 'tmz'; + case Tacana = 'tna'; + case Western_Tunebo = 'tnb'; + case Tanimuca_Retuara = 'tnc'; + case Angosturas_Tunebo = 'tnd'; + case Tobanga = 'tng'; + case Maiani = 'tnh'; + case Tandia = 'tni'; + case Kwamera = 'tnk'; + case Lenakel = 'tnl'; + case Tabla = 'tnm'; + case North_Tanna = 'tnn'; + case Toromono = 'tno'; + case Whitesands = 'tnp'; + case Taino = 'tnq'; + case Menik = 'tnr'; + case Tenis = 'tns'; + case Tontemboan = 'tnt'; + case Tay_Khang = 'tnu'; + case Tangchangya = 'tnv'; + case Tonsawang = 'tnw'; + case Tanema = 'tnx'; + case Tongwe = 'tny'; + case Ten_edn = 'tnz'; + case Toba = 'tob'; + case Coyutla_Totonac = 'toc'; + case Toma = 'tod'; + case Gizrra = 'tof'; + case Tonga_Nyasa = 'tog'; + case Gitonga = 'toh'; + case Tonga_Zambia = 'toi'; + case Tojolabal = 'toj'; + case Toki_Pona = 'tok'; + case Tolowa = 'tol'; + case Tombulu = 'tom'; + case Tonga_Tonga_Islands = 'ton'; + case Xicotepec_De_Juarez_Totonac = 'too'; + case Papantla_Totonac = 'top'; + case Toposa = 'toq'; + case Togbo_Vara_Banda = 'tor'; + case Highland_Totonac = 'tos'; + case Tho = 'tou'; + case Upper_Taromi = 'tov'; + case Jemez = 'tow'; + case Tobian = 'tox'; + case Topoiyo = 'toy'; + case To = 'toz'; + case Taupota = 'tpa'; + case Azoyu_Me_phaa = 'tpc'; + case Tippera = 'tpe'; + case Tarpia = 'tpf'; + case Kula = 'tpg'; + case Tok_Pisin = 'tpi'; + case Tapiete = 'tpj'; + case Tupinikin = 'tpk'; + case Tlacoapa_Me_phaa = 'tpl'; + case Tampulma = 'tpm'; + case Tupinamba = 'tpn'; + case Tai_Pao = 'tpo'; + case Pisaflores_Tepehua = 'tpp'; + case Tukpa = 'tpq'; + case Tupari = 'tpr'; + case Tlachichilco_Tepehua = 'tpt'; + case Tampuan = 'tpu'; + case Tanapag = 'tpv'; + case Acatepec_Me_phaa = 'tpx'; + case Trumai = 'tpy'; + case Tinputz = 'tpz'; + case Tembe = 'tqb'; + case Lehali = 'tql'; + case Turumsa = 'tqm'; + case Tenino = 'tqn'; + case Toaripi = 'tqo'; + case Tomoip = 'tqp'; + case Tunni = 'tqq'; + case Torona = 'tqr'; + case Western_Totonac = 'tqt'; + case Touo = 'tqu'; + case Tonkawa = 'tqw'; + case Tirahi = 'tra'; + case Terebu = 'trb'; + case Copala_Triqui = 'trc'; + case Turi = 'trd'; + case East_Tarangan = 'tre'; + case Trinidadian_Creole_English = 'trf'; + case Lishan_Didan = 'trg'; + case Turaka = 'trh'; + case Trio = 'tri'; + case Toram = 'trj'; + case Traveller_Scottish = 'trl'; + case Tregami = 'trm'; + case Trinitario = 'trn'; + case Tarao_Naga = 'tro'; + case Kok_Borok = 'trp'; + case San_Martin_Itunyoso_Triqui = 'trq'; + case Taushiro = 'trr'; + case Chicahuaxtla_Triqui = 'trs'; + case Tunggare = 'trt'; + case Turoyo = 'tru'; + case Sediq = 'trv'; + case Torwali = 'trw'; + case Tringgus_Sembaan_Bidayuh = 'trx'; + case Turung = 'try'; + case Tora = 'trz'; + case Tsaangi = 'tsa'; + case Tsamai = 'tsb'; + case Tswa = 'tsc'; + case Tsakonian = 'tsd'; + case Tunisian_Sign_Language = 'tse'; + case Tausug = 'tsg'; + case Tsuvan = 'tsh'; + case Tsimshian = 'tsi'; + case Tshangla = 'tsj'; + case Tseku = 'tsk'; + case Ts_un_Lao = 'tsl'; + case Turkish_Sign_Language = 'tsm'; + case Tswana = 'tsn'; + case Tsonga = 'tso'; + case Northern_Toussian = 'tsp'; + case Thai_Sign_Language = 'tsq'; + case Akei = 'tsr'; + case Taiwan_Sign_Language = 'tss'; + case Tondi_Songway_Kiini = 'tst'; + case Tsou = 'tsu'; + case Tsogo = 'tsv'; + case Tsishingini = 'tsw'; + case Mubami = 'tsx'; + case Tebul_Sign_Language = 'tsy'; + case Purepecha = 'tsz'; + case Tutelo = 'tta'; + case Gaa = 'ttb'; + case Tektiteko = 'ttc'; + case Tauade = 'ttd'; + case Bwanabwana = 'tte'; + case Tuotomb = 'ttf'; + case Tutong = 'ttg'; + case Upper_Ta_oih = 'tth'; + case Tobati = 'tti'; + case Tooro = 'ttj'; + case Totoro = 'ttk'; + case Totela = 'ttl'; + case Northern_Tutchone = 'ttm'; + case Towei = 'ttn'; + case Lower_Ta_oih = 'tto'; + case Tombelala = 'ttp'; + case Tawallammat_Tamajaq = 'ttq'; + case Tera = 'ttr'; + case Northeastern_Thai = 'tts'; + case Muslim_Tat = 'ttt'; + case Torau = 'ttu'; + case Titan = 'ttv'; + case Long_Wat = 'ttw'; + case Sikaritai = 'tty'; + case Tsum = 'ttz'; + case Wiarumus = 'tua'; + case Tubatulabal = 'tub'; + case Mutu = 'tuc'; + case Tuxa = 'tud'; + case Tuyuca = 'tue'; + case Central_Tunebo = 'tuf'; + case Tunia = 'tug'; + case Taulil = 'tuh'; + case Tupuri = 'tui'; + case Tugutil = 'tuj'; + case Turkmen = 'tuk'; + case Tula = 'tul'; + case Tumbuka = 'tum'; + case Tunica = 'tun'; + case Tucano = 'tuo'; + case Tedaga = 'tuq'; + case Turkish = 'tur'; + case Tuscarora = 'tus'; + case Tututni = 'tuu'; + case Turkana = 'tuv'; + case Tuxinawa = 'tux'; + case Tugen = 'tuy'; + case Turka = 'tuz'; + case Vaghua = 'tva'; + case Tsuvadi = 'tvd'; + case Te_un = 'tve'; + case Tulai = 'tvi'; + case Southeast_Ambrym = 'tvk'; + case Tuvalu = 'tvl'; + case Tela_Masbuar = 'tvm'; + case Tavoyan = 'tvn'; + case Tidore = 'tvo'; + case Taveta = 'tvs'; + case Tutsa_Naga = 'tvt'; + case Tunen = 'tvu'; + case Sedoa = 'tvw'; + case Taivoan = 'tvx'; + case Timor_Pidgin = 'tvy'; + case Twana = 'twa'; + case Western_Tawbuid = 'twb'; + case Teshenawa = 'twc'; + case Twents = 'twd'; + case Tewa_Indonesia = 'twe'; + case Northern_Tiwa = 'twf'; + case Tereweng = 'twg'; + case Tai_Don = 'twh'; + case Twi = 'twi'; + case Tawara = 'twl'; + case Tawang_Monpa = 'twm'; + case Twendi = 'twn'; + case Tswapong = 'two'; + case Ere = 'twp'; + case Tasawaq = 'twq'; + case Southwestern_Tarahumara = 'twr'; + case Turiwara = 'twt'; + case Termanu = 'twu'; + case Tuwari = 'tww'; + case Tewe = 'twx'; + case Tawoyan = 'twy'; + case Tombonuo = 'txa'; + case Tokharian_B = 'txb'; + case Tsetsaut = 'txc'; + case Totoli = 'txe'; + case Tangut = 'txg'; + case Thracian = 'txh'; + case Ikpeng = 'txi'; + case Tarjumo = 'txj'; + case Tomini = 'txm'; + case West_Tarangan = 'txn'; + case Toto = 'txo'; + case Tii = 'txq'; + case Tartessian = 'txr'; + case Tonsea = 'txs'; + case Citak = 'txt'; + case Kayapo = 'txu'; + case Tatana = 'txx'; + case Tanosy_Malagasy = 'txy'; + case Tauya = 'tya'; + case Kyanga = 'tye'; + case O_du = 'tyh'; + case Teke_Tsaayi = 'tyi'; + case Tai_Do = 'tyj'; + case Thu_Lao = 'tyl'; + case Kombai = 'tyn'; + case Thaypan = 'typ'; + case Tai_Daeng = 'tyr'; + case Tay_Sa_Pa = 'tys'; + case Tay_Tac = 'tyt'; + case Kua = 'tyu'; + case Tuvinian = 'tyv'; + case Teke_Tyee = 'tyx'; + case Tiyaa = 'tyy'; + case Tay = 'tyz'; + case Tanzanian_Sign_Language = 'tza'; + case Tzeltal = 'tzh'; + case Tz_utujil = 'tzj'; + case Talossan = 'tzl'; + case Central_Atlas_Tamazight = 'tzm'; + case Tugun = 'tzn'; + case Tzotzil = 'tzo'; + case Tabriak = 'tzx'; + case Uamue = 'uam'; + case Kuan = 'uan'; + case Tairuma = 'uar'; + case Ubang = 'uba'; + case Ubi = 'ubi'; + case Buhi_non_Bikol = 'ubl'; + case Ubir = 'ubr'; + case Umbu_Ungu = 'ubu'; + case Ubykh = 'uby'; + case Uda = 'uda'; + case Udihe = 'ude'; + case Muduga = 'udg'; + case Udi = 'udi'; + case Ujir = 'udj'; + case Wuzlam = 'udl'; + case Udmurt = 'udm'; + case Uduk = 'udu'; + case Kioko = 'ues'; + case Ufim = 'ufi'; + case Ugaritic = 'uga'; + case Kuku_Ugbanh = 'ugb'; + case Ughele = 'uge'; + case Kubachi = 'ugh'; + case Ugandan_Sign_Language = 'ugn'; + case Ugong = 'ugo'; + case Uruguayan_Sign_Language = 'ugy'; + case Uhami = 'uha'; + case Damal = 'uhn'; + case Uighur = 'uig'; + case Uisai = 'uis'; + case Iyive = 'uiv'; + case Tanjijili = 'uji'; + case Kaburi = 'uka'; + case Ukuriguma = 'ukg'; + case Ukhwejo = 'ukh'; + case Kui_India = 'uki'; + case Muak_Sa_aak = 'ukk'; + case Ukrainian_Sign_Language = 'ukl'; + case Ukpe_Bayobiri = 'ukp'; + case Ukwa = 'ukq'; + case Ukrainian = 'ukr'; + case Urubu_Kaapor_Sign_Language = 'uks'; + case Ukue = 'uku'; + case Kuku = 'ukv'; + case Ukwuani_Aboh_Ndoni = 'ukw'; + case Kuuk_Yak = 'uky'; + case Fungwa = 'ula'; + case Ulukwumi = 'ulb'; + case Ulch = 'ulc'; + case Lule = 'ule'; + case Usku = 'ulf'; + case Ulithian = 'uli'; + case Meriam_Mir = 'ulk'; + case Ullatan = 'ull'; + case Ulumanda = 'ulm'; + case Unserdeutsch = 'uln'; + case Uma_Lung = 'ulu'; + case Ulwa = 'ulw'; + case Buli = 'uly'; + case Umatilla = 'uma'; + case Umbundu = 'umb'; + case Marrucinian = 'umc'; + case Umbindhamu = 'umd'; + case Morrobalama = 'umg'; + case Ukit = 'umi'; + case Umon = 'umm'; + case Makyan_Naga = 'umn'; + case Umotina = 'umo'; + case Umpila = 'ump'; + case Umbugarla = 'umr'; + case Pendau = 'ums'; + case Munsee = 'umu'; + case North_Watut = 'una'; + case Undetermined = 'und'; + case Uneme = 'une'; + case Ngarinyin = 'ung'; + case Uni = 'uni'; + case Enawene_Nawe = 'unk'; + case Unami = 'unm'; + case Kurnai = 'unn'; + case Mundari = 'unr'; + case Unubahe = 'unu'; + case Munda = 'unx'; + case Unde_Kaili = 'unz'; + case Kulon = 'uon'; + case Umeda = 'upi'; + case Uripiv_Wala_Rano_Atchin = 'upv'; + case Urarina = 'ura'; + case Urubu_Kaapor = 'urb'; + case Urningangg = 'urc'; + case Urdu = 'urd'; + case Uru = 'ure'; + case Uradhi = 'urf'; + case Urigina = 'urg'; + case Urhobo = 'urh'; + case Urim = 'uri'; + case Urak_Lawoi = 'urk'; + case Urali = 'url'; + case Urapmin = 'urm'; + case Uruangnirin = 'urn'; + case Ura_Papua_New_Guinea = 'uro'; + case Uru_Pa_In = 'urp'; + case Lehalurup = 'urr'; + case Urat = 'urt'; + case Urumi = 'uru'; + case Uruava = 'urv'; + case Sop = 'urw'; + case Urimo = 'urx'; + case Orya = 'ury'; + case Uru_Eu_Wau_Wau = 'urz'; + case Usarufa = 'usa'; + case Ushojo = 'ush'; + case Usui = 'usi'; + case Usaghade = 'usk'; + case Uspanteco = 'usp'; + case us_Saare = 'uss'; + case Uya = 'usu'; + case Otank = 'uta'; + case Ute_Southern_Paiute = 'ute'; + case ut_Hun = 'uth'; + case Amba_Solomon_Islands = 'utp'; + case Etulo = 'utr'; + case Utu = 'utu'; + case Urum = 'uum'; + case Ura_Vanuatu = 'uur'; + case U = 'uuu'; + case West_Uvean = 'uve'; + case Uri = 'uvh'; + case Lote = 'uvl'; + case Kuku_Uwanh = 'uwa'; + case Doko_Uyanga = 'uya'; + case Uzbek = 'uzb'; + case Northern_Uzbek = 'uzn'; + case Southern_Uzbek = 'uzs'; + case Vaagri_Booli = 'vaa'; + case Vale = 'vae'; + case Vafsi = 'vaf'; + case Vagla = 'vag'; + case Varhadi_Nagpuri = 'vah'; + case Vai = 'vai'; + case Sekele = 'vaj'; + case Vehes = 'val'; + case Vanimo = 'vam'; + case Valman = 'van'; + case Vao = 'vao'; + case Vaiphei = 'vap'; + case Huarijio = 'var'; + case Vasavi = 'vas'; + case Vanuma = 'vau'; + case Varli = 'vav'; + case Wayu = 'vay'; + case Southeast_Babar = 'vbb'; + case Southwestern_Bontok = 'vbk'; + case Venetian = 'vec'; + case Veddah = 'ved'; + case Veluws = 'vel'; + case Vemgo_Mabas = 'vem'; + case Venda = 'ven'; + case Ventureno = 'veo'; + case Veps = 'vep'; + case Mom_Jango = 'ver'; + case Vaghri = 'vgr'; + case Vlaamse_Gebarentaal = 'vgt'; + case Virgin_Islands_Creole_English = 'vic'; + case Vidunda = 'vid'; + case Vietnamese = 'vie'; + case Vili = 'vif'; + case Viemo = 'vig'; + case Vilela = 'vil'; + case Vinza = 'vin'; + case Vishavan = 'vis'; + case Viti = 'vit'; + case Iduna = 'viv'; + case Bajjika = 'vjk'; + case Kariyarra = 'vka'; + case Kujarge = 'vkj'; + case Kaur = 'vkk'; + case Kulisusu = 'vkl'; + case Kamakan = 'vkm'; + case Koro_Nulu = 'vkn'; + case Kodeoha = 'vko'; + case Korlai_Creole_Portuguese = 'vkp'; + case Tenggarong_Kutai_Malay = 'vkt'; + case Kurrama = 'vku'; + case Koro_Zuba = 'vkz'; + case Valpei = 'vlp'; + case Vlaams = 'vls'; + case Martuyhunira = 'vma'; + case Barbaram = 'vmb'; + case Juxtlahuaca_Mixtec = 'vmc'; + case Mudu_Koraga = 'vmd'; + case East_Masela = 'vme'; + case Mainfrankisch = 'vmf'; + case Lungalunga = 'vmg'; + case Maraghei = 'vmh'; + case Miwa = 'vmi'; + case Ixtayutla_Mixtec = 'vmj'; + case Makhuwa_Shirima = 'vmk'; + case Malgana = 'vml'; + case Mitlatongo_Mixtec = 'vmm'; + case Soyaltepec_Mazatec = 'vmp'; + case Soyaltepec_Mixtec = 'vmq'; + case Marenje = 'vmr'; + case Moksela = 'vms'; + case Muluridyi = 'vmu'; + case Valley_Maidu = 'vmv'; + case Makhuwa = 'vmw'; + case Tamazola_Mixtec = 'vmx'; + case Ayautla_Mazatec = 'vmy'; + case Mazatlan_Mazatec = 'vmz'; + case Vano = 'vnk'; + case Vinmavis = 'vnm'; + case Vunapu = 'vnp'; + case Volapuk = 'vol'; + case Voro = 'vor'; + case Votic = 'vot'; + case Vera_a = 'vra'; + case Voro_2 = 'vro'; + case Varisi = 'vrs'; + case Burmbar = 'vrt'; + case Moldova_Sign_Language = 'vsi'; + case Venezuelan_Sign_Language = 'vsl'; + case Vedic_Sanskrit = 'vsn'; + case Valencian_Sign_Language = 'vsv'; + case Vitou = 'vto'; + case Vumbu = 'vum'; + case Vunjo = 'vun'; + case Vute = 'vut'; + case Awa_China = 'vwa'; + case Walla_Walla = 'waa'; + case Wab = 'wab'; + case Wasco_Wishram = 'wac'; + case Wamesa = 'wad'; + case Walser = 'wae'; + case Wakona = 'waf'; + case Wa_ema = 'wag'; + case Watubela = 'wah'; + case Wares = 'wai'; + case Waffa = 'waj'; + case Wolaytta = 'wal'; + case Wampanoag = 'wam'; + case Wan = 'wan'; + case Wappo = 'wao'; + case Wapishana = 'wap'; + case Wagiman = 'waq'; + case Waray_Philippines = 'war'; + case Washo = 'was'; + case Kaninuwa = 'wat'; + case Waura = 'wau'; + case Waka = 'wav'; + case Waiwai = 'waw'; + case Watam = 'wax'; + case Wayana = 'way'; + case Wampur = 'waz'; + case Warao = 'wba'; + case Wabo = 'wbb'; + case Waritai = 'wbe'; + case Wara_2 = 'wbf'; + case Wanda = 'wbh'; + case Vwanji = 'wbi'; + case Alagwa = 'wbj'; + case Waigali = 'wbk'; + case Wakhi = 'wbl'; + case Wa = 'wbm'; + case Warlpiri = 'wbp'; + case Waddar = 'wbq'; + case Wagdi = 'wbr'; + case West_Bengal_Sign_Language = 'wbs'; + case Warnman = 'wbt'; + case Wajarri = 'wbv'; + case Woi = 'wbw'; + case Yanomami = 'wca'; + case Waci_Gbe = 'wci'; + case Wandji = 'wdd'; + case Wadaginam = 'wdg'; + case Wadjiginy = 'wdj'; + case Wadikali = 'wdk'; + case Wendat = 'wdt'; + case Wadjigu = 'wdu'; + case Wadjabangayi = 'wdy'; + case Wewaw = 'wea'; + case We_Western = 'wec'; + case Wedau = 'wed'; + case Wergaia = 'weg'; + case Weh = 'weh'; + case Kiunum = 'wei'; + case Weme_Gbe = 'wem'; + case Wemale = 'weo'; + case Westphalien = 'wep'; + case Weri = 'wer'; + case Cameroon_Pidgin = 'wes'; + case Perai = 'wet'; + case Rawngtu_Chin = 'weu'; + case Wejewa = 'wew'; + case Yafi = 'wfg'; + case Wagaya = 'wga'; + case Wagawaga = 'wgb'; + case Wangkangurru = 'wgg'; + case Wahgi = 'wgi'; + case Waigeo = 'wgo'; + case Wirangu = 'wgu'; + case Warrgamay = 'wgy'; + case Sou_Upaa = 'wha'; + case North_Wahgi = 'whg'; + case Wahau_Kenyah = 'whk'; + case Wahau_Kayan = 'whu'; + case Southern_Toussian = 'wib'; + case Wichita = 'wic'; + case Wik_Epa = 'wie'; + case Wik_Keyangan = 'wif'; + case Wik_Ngathan = 'wig'; + case Wik_Me_anha = 'wih'; + case Minidien = 'wii'; + case Wik_Iiyanh = 'wij'; + case Wikalkan = 'wik'; + case Wilawila = 'wil'; + case Wik_Mungkan = 'wim'; + case Ho_Chunk = 'win'; + case Wirafed = 'wir'; + case Wiru = 'wiu'; + case Vitu = 'wiv'; + case Wiyot = 'wiy'; + case Waja = 'wja'; + case Warji = 'wji'; + case Kw_adza = 'wka'; + case Kumbaran = 'wkb'; + case Wakde = 'wkd'; + case Kalanadi = 'wkl'; + case Keerray_Woorroong = 'wkr'; + case Kunduvadi = 'wku'; + case Wakawaka = 'wkw'; + case Wangkayutyuru = 'wky'; + case Walio = 'wla'; + case Mwali_Comorian = 'wlc'; + case Wolane = 'wle'; + case Kunbarlang = 'wlg'; + case Welaun = 'wlh'; + case Waioli = 'wli'; + case Wailaki = 'wlk'; + case Wali_Sudan = 'wll'; + case Middle_Welsh = 'wlm'; + case Walloon = 'wln'; + case Wolio = 'wlo'; + case Wailapa = 'wlr'; + case Wallisian = 'wls'; + case Wuliwuli = 'wlu'; + case Wichi_Lhamtes_Vejoz = 'wlv'; + case Walak = 'wlw'; + case Wali_Ghana = 'wlx'; + case Waling = 'wly'; + case Mawa_Nigeria = 'wma'; + case Wambaya = 'wmb'; + case Wamas = 'wmc'; + case Mamainde = 'wmd'; + case Wambule = 'wme'; + case Western_Minyag = 'wmg'; + case Waima_a = 'wmh'; + case Wamin = 'wmi'; + case Maiwa_Indonesia = 'wmm'; + case Waamwang = 'wmn'; + case Wom_Papua_New_Guinea = 'wmo'; + case Wambon = 'wms'; + case Walmajarri = 'wmt'; + case Mwani = 'wmw'; + case Womo = 'wmx'; + case Mokati = 'wnb'; + case Wantoat = 'wnc'; + case Wandarang = 'wnd'; + case Waneci = 'wne'; + case Wanggom = 'wng'; + case Ndzwani_Comorian = 'wni'; + case Wanukaka = 'wnk'; + case Wanggamala = 'wnm'; + case Wunumara = 'wnn'; + case Wano = 'wno'; + case Wanap = 'wnp'; + case Usan = 'wnu'; + case Wintu = 'wnw'; + case Wanyi = 'wny'; + case Kuwema = 'woa'; + case We_Northern = 'wob'; + case Wogeo = 'woc'; + case Wolani = 'wod'; + case Woleaian = 'woe'; + case Gambian_Wolof = 'wof'; + case Wogamusin = 'wog'; + case Kamang = 'woi'; + case Longto = 'wok'; + case Wolof = 'wol'; + case Wom_Nigeria = 'wom'; + case Wongo = 'won'; + case Manombai = 'woo'; + case Woria = 'wor'; + case Hanga_Hundi = 'wos'; + case Wawonii = 'wow'; + case Weyto = 'woy'; + case Maco = 'wpc'; + case Waluwarra = 'wrb'; + case Warungu = 'wrg'; + case Wiradjuri = 'wrh'; + case Wariyangga = 'wri'; + case Garrwa = 'wrk'; + case Warlmanpa = 'wrl'; + case Warumungu = 'wrm'; + case Warnang = 'wrn'; + case Worrorra = 'wro'; + case Waropen = 'wrp'; + case Wardaman = 'wrr'; + case Waris = 'wrs'; + case Waru = 'wru'; + case Waruna = 'wrv'; + case Gugu_Warra = 'wrw'; + case Wae_Rana = 'wrx'; + case Merwari = 'wry'; + case Waray_Australia = 'wrz'; + case Warembori = 'wsa'; + case Adilabad_Gondi = 'wsg'; + case Wusi = 'wsi'; + case Waskia = 'wsk'; + case Owenia = 'wsr'; + case Wasa = 'wss'; + case Wasu = 'wsu'; + case Wotapuri_Katarqalai = 'wsv'; + case Matambwe = 'wtb'; + case Watiwa = 'wtf'; + case Wathawurrung = 'wth'; + case Berta = 'wti'; + case Watakataui = 'wtk'; + case Mewati = 'wtm'; + case Wotu = 'wtw'; + case Wikngenchera = 'wua'; + case Wunambal = 'wub'; + case Wudu = 'wud'; + case Wutunhua = 'wuh'; + case Silimo = 'wul'; + case Wumbvu = 'wum'; + case Bungu = 'wun'; + case Wurrugu = 'wur'; + case Wutung = 'wut'; + case Wu_Chinese = 'wuu'; + case Wuvulu_Aua = 'wuv'; + case Wulna = 'wux'; + case Wauyai = 'wuy'; + case Waama = 'wwa'; + case Wakabunga = 'wwb'; + case Wetamut = 'wwo'; + case Warrwa = 'wwr'; + case Wawa = 'www'; + case Waxianghua = 'wxa'; + case Wardandi = 'wxw'; + case Wangaaybuwan_Ngiyambaa = 'wyb'; + case Woiwurrung = 'wyi'; + case Wymysorys = 'wym'; + case Wyandot = 'wyn'; + case Wayoro = 'wyr'; + case Western_Fijian = 'wyy'; + case Andalusian_Arabic = 'xaa'; + case Sambe = 'xab'; + case Kachari = 'xac'; + case Adai = 'xad'; + case Aequian = 'xae'; + case Aghwan = 'xag'; + case Kaimbe = 'xai'; + case Ararandewara = 'xaj'; + case Maku = 'xak'; + case Kalmyk = 'xal'; + case Xam = 'xam'; + case Xamtanga = 'xan'; + case Khao = 'xao'; + case Apalachee = 'xap'; + case Aquitanian = 'xaq'; + case Karami = 'xar'; + case Kamas = 'xas'; + case Katawixi = 'xat'; + case Kauwera = 'xau'; + case Xavante = 'xav'; + case Kawaiisu = 'xaw'; + case Kayan_Mahakam = 'xay'; + case Lower_Burdekin = 'xbb'; + case Bactrian = 'xbc'; + case Bindal = 'xbd'; + case Bigambal = 'xbe'; + case Bunganditj = 'xbg'; + case Kombio = 'xbi'; + case Birrpayi = 'xbj'; + case Middle_Breton = 'xbm'; + case Kenaboi = 'xbn'; + case Bolgarian = 'xbo'; + case Bibbulman = 'xbp'; + case Kambera = 'xbr'; + case Kambiwa = 'xbw'; + case Batjala = 'xby'; + case Cumbric = 'xcb'; + case Camunic = 'xcc'; + case Celtiberian = 'xce'; + case Cisalpine_Gaulish = 'xcg'; + case Chemakum = 'xch'; + case Classical_Armenian = 'xcl'; + case Comecrudo = 'xcm'; + case Cotoname = 'xcn'; + case Chorasmian = 'xco'; + case Carian = 'xcr'; + case Classical_Tibetan = 'xct'; + case Curonian = 'xcu'; + case Chuvantsy = 'xcv'; + case Coahuilteco = 'xcw'; + case Cayuse = 'xcy'; + case Darkinyung = 'xda'; + case Dacian = 'xdc'; + case Dharuk = 'xdk'; + case Edomite = 'xdm'; + case Kwandu = 'xdo'; + case Kaitag = 'xdq'; + case Malayic_Dayak = 'xdy'; + case Eblan = 'xeb'; + case Hdi = 'xed'; + case Xegwi = 'xeg'; + case Kelo = 'xel'; + case Kembayan = 'xem'; + case Epi_Olmec = 'xep'; + case Xerente = 'xer'; + case Kesawai = 'xes'; + case Xeta = 'xet'; + case Keoru_Ahia = 'xeu'; + case Faliscan = 'xfa'; + case Galatian = 'xga'; + case Gbin = 'xgb'; + case Gudang = 'xgd'; + case Gabrielino_Fernandeno = 'xgf'; + case Goreng = 'xgg'; + case Garingbal = 'xgi'; + case Galindan = 'xgl'; + case Dharumbal = 'xgm'; + case Garza = 'xgr'; + case Unggumi = 'xgu'; + case Guwa = 'xgw'; + case Harami = 'xha'; + case Hunnic = 'xhc'; + case Hadrami = 'xhd'; + case Khetrani = 'xhe'; + case Middle_Khmer_1400_to_1850_CE = 'xhm'; + case Xhosa = 'xho'; + case Hernican = 'xhr'; + case Hattic = 'xht'; + case Hurrian = 'xhu'; + case Khua = 'xhv'; + case Iberian = 'xib'; + case Xiri = 'xii'; + case Illyrian = 'xil'; + case Xinca = 'xin'; + case Xiriana = 'xir'; + case Kisan = 'xis'; + case Indus_Valley_Language = 'xiv'; + case Xipaya = 'xiy'; + case Minjungbal = 'xjb'; + case Jaitmatang = 'xjt'; + case Kalkoti = 'xka'; + case Northern_Nago = 'xkb'; + case Kho_ini = 'xkc'; + case Mendalam_Kayan = 'xkd'; + case Kereho = 'xke'; + case Khengkha = 'xkf'; + case Kagoro = 'xkg'; + case Kenyan_Sign_Language = 'xki'; + case Kajali = 'xkj'; + case Kachok = 'xkk'; + case Mainstream_Kenyah = 'xkl'; + case Kayan_River_Kayan = 'xkn'; + case Kiorr = 'xko'; + case Kabatei = 'xkp'; + case Koroni = 'xkq'; + case Xakriaba = 'xkr'; + case Kumbewaha = 'xks'; + case Kantosi = 'xkt'; + case Kaamba = 'xku'; + case Kgalagadi = 'xkv'; + case Kembra = 'xkw'; + case Karore = 'xkx'; + case Uma_Lasan = 'xky'; + case Kurtokha = 'xkz'; + case Kamula = 'xla'; + case Loup_B = 'xlb'; + case Lycian = 'xlc'; + case Lydian = 'xld'; + case Lemnian = 'xle'; + case Ligurian_Ancient = 'xlg'; + case Liburnian = 'xli'; + case Alanic = 'xln'; + case Loup_A = 'xlo'; + case Lepontic = 'xlp'; + case Lusitanian = 'xls'; + case Cuneiform_Luwian = 'xlu'; + case Elymian = 'xly'; + case Mushungulu = 'xma'; + case Mbonga = 'xmb'; + case Makhuwa_Marrevone = 'xmc'; + case Mbudum = 'xmd'; + case Median = 'xme'; + case Mingrelian = 'xmf'; + case Mengaka = 'xmg'; + case Kugu_Muminh = 'xmh'; + case Majera = 'xmj'; + case Ancient_Macedonian = 'xmk'; + case Malaysian_Sign_Language = 'xml'; + case Manado_Malay = 'xmm'; + case Manichaean_Middle_Persian = 'xmn'; + case Morerebi = 'xmo'; + case Kuku_Mu_inh = 'xmp'; + case Kuku_Mangk = 'xmq'; + case Meroitic = 'xmr'; + case Moroccan_Sign_Language = 'xms'; + case Matbat = 'xmt'; + case Kamu = 'xmu'; + case Antankarana_Malagasy = 'xmv'; + case Tsimihety_Malagasy = 'xmw'; + case Salawati = 'xmx'; + case Mayaguduna = 'xmy'; + case Mori_Bawah = 'xmz'; + case Ancient_North_Arabian = 'xna'; + case Kanakanabu = 'xnb'; + case Middle_Mongolian = 'xng'; + case Kuanhua = 'xnh'; + case Ngarigu = 'xni'; + case Ngoni_Tanzania = 'xnj'; + case Nganakarti = 'xnk'; + case Ngumbarl = 'xnm'; + case Northern_Kankanay = 'xnn'; + case Anglo_Norman = 'xno'; + case Ngoni_Mozambique = 'xnq'; + case Kangri = 'xnr'; + case Kanashi = 'xns'; + case Narragansett = 'xnt'; + case Nukunul = 'xnu'; + case Nyiyaparli = 'xny'; + case Kenzi = 'xnz'; + case O_chi_chi = 'xoc'; + case Kokoda = 'xod'; + case Soga = 'xog'; + case Kominimung = 'xoi'; + case Xokleng = 'xok'; + case Komo_Sudan = 'xom'; + case Konkomba = 'xon'; + case Xukuru = 'xoo'; + case Kopar = 'xop'; + case Korubo = 'xor'; + case Kowaki = 'xow'; + case Pirriya = 'xpa'; + case Northeastern_Tasmanian = 'xpb'; + case Pecheneg = 'xpc'; + case Oyster_Bay_Tasmanian = 'xpd'; + case Liberia_Kpelle = 'xpe'; + case Southeast_Tasmanian = 'xpf'; + case Phrygian = 'xpg'; + case North_Midlands_Tasmanian = 'xph'; + case Pictish = 'xpi'; + case Mpalitjanh = 'xpj'; + case Kulina_Pano = 'xpk'; + case Port_Sorell_Tasmanian = 'xpl'; + case Pumpokol = 'xpm'; + case Kapinawa = 'xpn'; + case Pochutec = 'xpo'; + case Puyo_Paekche = 'xpp'; + case Mohegan_Pequot = 'xpq'; + case Parthian = 'xpr'; + case Pisidian = 'xps'; + case Punthamara = 'xpt'; + case Punic = 'xpu'; + case Northern_Tasmanian = 'xpv'; + case Northwestern_Tasmanian = 'xpw'; + case Southwestern_Tasmanian = 'xpx'; + case Puyo = 'xpy'; + case Bruny_Island_Tasmanian = 'xpz'; + case Karakhanid = 'xqa'; + case Qatabanian = 'xqt'; + case Kraho = 'xra'; + case Eastern_Karaboro = 'xrb'; + case Gundungurra = 'xrd'; + case Kreye = 'xre'; + case Minang = 'xrg'; + case Krikati_Timbira = 'xri'; + case Armazic = 'xrm'; + case Arin = 'xrn'; + case Raetic = 'xrr'; + case Aranama_Tamique = 'xrt'; + case Marriammu = 'xru'; + case Karawa = 'xrw'; + case Sabaean = 'xsa'; + case Sambal = 'xsb'; + case Scythian = 'xsc'; + case Sidetic = 'xsd'; + case Sempan = 'xse'; + case Shamang = 'xsh'; + case Sio = 'xsi'; + case Subi = 'xsj'; + case South_Slavey = 'xsl'; + case Kasem = 'xsm'; + case Sanga_Nigeria = 'xsn'; + case Solano = 'xso'; + case Silopi = 'xsp'; + case Makhuwa_Saka = 'xsq'; + case Sherpa = 'xsr'; + case Sanuma = 'xsu'; + case Sudovian = 'xsv'; + case Saisiyat = 'xsy'; + case Alcozauca_Mixtec = 'xta'; + case Chazumba_Mixtec = 'xtb'; + case Katcha_Kadugli_Miri = 'xtc'; + case Diuxi_Tilantongo_Mixtec = 'xtd'; + case Ketengban = 'xte'; + case Transalpine_Gaulish = 'xtg'; + case Yitha_Yitha = 'xth'; + case Sinicahua_Mixtec = 'xti'; + case San_Juan_Teita_Mixtec = 'xtj'; + case Tijaltepec_Mixtec = 'xtl'; + case Magdalena_Penasco_Mixtec = 'xtm'; + case Northern_Tlaxiaco_Mixtec = 'xtn'; + case Tokharian_A = 'xto'; + case San_Miguel_Piedras_Mixtec = 'xtp'; + case Tumshuqese = 'xtq'; + case Early_Tripuri = 'xtr'; + case Sindihui_Mixtec = 'xts'; + case Tacahua_Mixtec = 'xtt'; + case Cuyamecalco_Mixtec = 'xtu'; + case Thawa = 'xtv'; + case Tawande = 'xtw'; + case Yoloxochitl_Mixtec = 'xty'; + case Alu_Kurumba = 'xua'; + case Betta_Kurumba = 'xub'; + case Umiida = 'xud'; + case Kunigami = 'xug'; + case Jennu_Kurumba = 'xuj'; + case Ngunawal = 'xul'; + case Umbrian = 'xum'; + case Unggaranggu = 'xun'; + case Kuo = 'xuo'; + case Upper_Umpqua = 'xup'; + case Urartian = 'xur'; + case Kuthant = 'xut'; + case Kxoe = 'xuu'; + case Venetic = 'xve'; + case Kamviri = 'xvi'; + case Vandalic = 'xvn'; + case Volscian = 'xvo'; + case Vestinian = 'xvs'; + case Kwaza = 'xwa'; + case Woccon = 'xwc'; + case Wadi_Wadi = 'xwd'; + case Xwela_Gbe = 'xwe'; + case Kwegu = 'xwg'; + case Wajuk = 'xwj'; + case Wangkumara = 'xwk'; + case Western_Xwla_Gbe = 'xwl'; + case Written_Oirat = 'xwo'; + case Kwerba_Mamberamo = 'xwr'; + case Wotjobaluk = 'xwt'; + case Wemba_Wemba = 'xww'; + case Boro_Ghana = 'xxb'; + case Ke_o = 'xxk'; + case Minkin = 'xxm'; + case Koropo = 'xxr'; + case Tambora = 'xxt'; + case Yaygir = 'xya'; + case Yandjibara = 'xyb'; + case Mayi_Yapi = 'xyj'; + case Mayi_Kulan = 'xyk'; + case Yalakalore = 'xyl'; + case Mayi_Thakurti = 'xyt'; + case Yorta_Yorta = 'xyy'; + case Zhang_Zhung = 'xzh'; + case Zemgalian = 'xzm'; + case Ancient_Zapotec = 'xzp'; + case Yaminahua = 'yaa'; + case Yuhup = 'yab'; + case Pass_Valley_Yali = 'yac'; + case Yagua = 'yad'; + case Pume = 'yae'; + case Yaka_Democratic_Republic_of_Congo = 'yaf'; + case Yamana = 'yag'; + case Yazgulyam = 'yah'; + case Yagnobi = 'yai'; + case Banda_Yangere = 'yaj'; + case Yakama = 'yak'; + case Yalunka = 'yal'; + case Yamba = 'yam'; + case Mayangna = 'yan'; + case Yao = 'yao'; + case Yapese = 'yap'; + case Yaqui = 'yaq'; + case Yabarana = 'yar'; + case Nugunu_Cameroon = 'yas'; + case Yambeta = 'yat'; + case Yuwana = 'yau'; + case Yangben = 'yav'; + case Yawalapiti = 'yaw'; + case Yauma = 'yax'; + case Agwagwune = 'yay'; + case Lokaa = 'yaz'; + case Yala = 'yba'; + case Yemba = 'ybb'; + case West_Yugur = 'ybe'; + case Yakha = 'ybh'; + case Yamphu = 'ybi'; + case Hasha = 'ybj'; + case Bokha = 'ybk'; + case Yukuben = 'ybl'; + case Yaben = 'ybm'; + case Yabaana = 'ybn'; + case Yabong = 'ybo'; + case Yawiyo = 'ybx'; + case Yaweyuha = 'yby'; + case Chesu = 'ych'; + case Lolopo = 'ycl'; + case Yucuna = 'ycn'; + case Chepya = 'ycp'; + case Yilan_Creole = 'ycr'; + case Yanda = 'yda'; + case Eastern_Yiddish = 'ydd'; + case Yangum_Dey = 'yde'; + case Yidgha = 'ydg'; + case Yoidik = 'ydk'; + case Ravula = 'yea'; + case Yeniche = 'yec'; + case Yimas = 'yee'; + case Yeni = 'yei'; + case Yevanic = 'yej'; + case Yela = 'yel'; + case Tarok = 'yer'; + case Nyankpa = 'yes'; + case Yetfa = 'yet'; + case Yerukula = 'yeu'; + case Yapunda = 'yev'; + case Yeyi = 'yey'; + case Malyangapa = 'yga'; + case Yiningayi = 'ygi'; + case Yangum_Gel = 'ygl'; + case Yagomi = 'ygm'; + case Gepo = 'ygp'; + case Yagaria = 'ygr'; + case Yol_u_Sign_Language = 'ygs'; + case Yugul = 'ygu'; + case Yagwoia = 'ygw'; + case Baha_Buyang = 'yha'; + case Judeo_Iraqi_Arabic = 'yhd'; + case Hlepho_Phowa = 'yhl'; + case Yan_nhangu_Sign_Language = 'yhs'; + case Yinggarda = 'yia'; + case Yiddish = 'yid'; + case Ache_2 = 'yif'; + case Wusa_Nasu = 'yig'; + case Western_Yiddish = 'yih'; + case Yidiny = 'yii'; + case Yindjibarndi = 'yij'; + case Dongshanba_Lalo = 'yik'; + case Yindjilandji = 'yil'; + case Yimchungru_Naga = 'yim'; + case Riang_Lai = 'yin'; + case Pholo = 'yip'; + case Miqie = 'yiq'; + case North_Awyu = 'yir'; + case Yis = 'yis'; + case Eastern_Lalu = 'yit'; + case Awu = 'yiu'; + case Northern_Nisu = 'yiv'; + case Axi_Yi = 'yix'; + case Azhe = 'yiz'; + case Yakan = 'yka'; + case Northern_Yukaghir = 'ykg'; + case Khamnigan_Mongol = 'ykh'; + case Yoke = 'yki'; + case Yakaikeke = 'ykk'; + case Khlula = 'ykl'; + case Kap = 'ykm'; + case Kua_nsi = 'ykn'; + case Yasa = 'yko'; + case Yekora = 'ykr'; + case Kathu = 'ykt'; + case Kuamasi = 'yku'; + case Yakoma = 'yky'; + case Yaul = 'yla'; + case Yaleba = 'ylb'; + case Yele = 'yle'; + case Yelogu = 'ylg'; + case Angguruk_Yali = 'yli'; + case Yil = 'yll'; + case Limi = 'ylm'; + case Langnian_Buyang = 'yln'; + case Naluo_Yi = 'ylo'; + case Yalarnnga = 'ylr'; + case Aribwaung = 'ylu'; + case Nyalayu = 'yly'; + case Yambes = 'ymb'; + case Southern_Muji = 'ymc'; + case Muda = 'ymd'; + case Yameo = 'yme'; + case Yamongeri = 'ymg'; + case Mili = 'ymh'; + case Moji = 'ymi'; + case Makwe = 'ymk'; + case Iamalele = 'yml'; + case Maay = 'ymm'; + case Yamna = 'ymn'; + case Yangum_Mon = 'ymo'; + case Yamap = 'ymp'; + case Qila_Muji = 'ymq'; + case Malasar = 'ymr'; + case Mysian = 'yms'; + case Northern_Muji = 'ymx'; + case Muzi = 'ymz'; + case Aluo = 'yna'; + case Yandruwandha = 'ynd'; + case Lang_e = 'yne'; + case Yango = 'yng'; + case Naukan_Yupik = 'ynk'; + case Yangulam = 'ynl'; + case Yana = 'ynn'; + case Yong = 'yno'; + case Yendang = 'ynq'; + case Yansi = 'yns'; + case Yahuna = 'ynu'; + case Yoba = 'yob'; + case Yogad = 'yog'; + case Yonaguni = 'yoi'; + case Yokuts = 'yok'; + case Yola = 'yol'; + case Yombe = 'yom'; + case Yongkom = 'yon'; + case Yoruba = 'yor'; + case Yotti = 'yot'; + case Yoron = 'yox'; + case Yoy = 'yoy'; + case Phala = 'ypa'; + case Labo_Phowa = 'ypb'; + case Phola = 'ypg'; + case Phupha = 'yph'; + case Phuma = 'ypm'; + case Ani_Phowa = 'ypn'; + case Alo_Phola = 'ypo'; + case Phupa = 'ypp'; + case Phuza = 'ypz'; + case Yerakai = 'yra'; + case Yareba = 'yrb'; + case Yaoure = 'yre'; + case Nenets = 'yrk'; + case Nhengatu = 'yrl'; + case Yirrk_Mel = 'yrm'; + case Yerong = 'yrn'; + case Yaroame = 'yro'; + case Yarsun = 'yrs'; + case Yarawata = 'yrw'; + case Yarluyandi = 'yry'; + case Yassic = 'ysc'; + case Samatao = 'ysd'; + case Sonaga = 'ysg'; + case Yugoslavian_Sign_Language = 'ysl'; + case Myanmar_Sign_Language = 'ysm'; + case Sani = 'ysn'; + case Nisi_China = 'yso'; + case Southern_Lolopo = 'ysp'; + case Sirenik_Yupik = 'ysr'; + case Yessan_Mayo = 'yss'; + case Sanie = 'ysy'; + case Talu = 'yta'; + case Tanglang = 'ytl'; + case Thopho = 'ytp'; + case Yout_Wam = 'ytw'; + case Yatay = 'yty'; + case Yucateco = 'yua'; + case Yugambal = 'yub'; + case Yuchi = 'yuc'; + case Judeo_Tripolitanian_Arabic = 'yud'; + case Yue_Chinese = 'yue'; + case Havasupai_Walapai_Yavapai = 'yuf'; + case Yug = 'yug'; + case Yuruti = 'yui'; + case Karkar_Yuri = 'yuj'; + case Yuki = 'yuk'; + case Yulu = 'yul'; + case Quechan = 'yum'; + case Bena_Nigeria = 'yun'; + case Yukpa = 'yup'; + case Yuqui = 'yuq'; + case Yurok = 'yur'; + case Yopno = 'yut'; + case Yau_Morobe_Province = 'yuw'; + case Southern_Yukaghir = 'yux'; + case East_Yugur = 'yuy'; + case Yuracare = 'yuz'; + case Yawa = 'yva'; + case Yavitero = 'yvt'; + case Kalou = 'ywa'; + case Yinhawangka = 'ywg'; + case Western_Lalu = 'ywl'; + case Yawanawa = 'ywn'; + case Wuding_Luquan_Yi = 'ywq'; + case Yawuru = 'ywr'; + case Xishanba_Lalo = 'ywt'; + case Wumeng_Nasu = 'ywu'; + case Yawarawarga = 'yww'; + case Mayawali = 'yxa'; + case Yagara = 'yxg'; + case Yardliyawarra = 'yxl'; + case Yinwum = 'yxm'; + case Yuyu = 'yxu'; + case Yabula_Yabula = 'yxy'; + case Yir_Yoront = 'yyr'; + case Yau_Sandaun_Province = 'yyu'; + case Ayizi = 'yyz'; + case E_ma_Buyang = 'yzg'; + case Zokhuo = 'yzk'; + case Sierra_de_Juarez_Zapotec = 'zaa'; + case Western_Tlacolula_Valley_Zapotec = 'zab'; + case Ocotlan_Zapotec = 'zac'; + case Cajonos_Zapotec = 'zad'; + case Yareni_Zapotec = 'zae'; + case Ayoquesco_Zapotec = 'zaf'; + case Zaghawa = 'zag'; + case Zangwal = 'zah'; + case Isthmus_Zapotec = 'zai'; + case Zaramo = 'zaj'; + case Zanaki = 'zak'; + case Zauzou = 'zal'; + case Miahuatlan_Zapotec = 'zam'; + case Ozolotepec_Zapotec = 'zao'; + case Zapotec = 'zap'; + case Aloapam_Zapotec = 'zaq'; + case Rincon_Zapotec = 'zar'; + case Santo_Domingo_Albarradas_Zapotec = 'zas'; + case Tabaa_Zapotec = 'zat'; + case Zangskari = 'zau'; + case Yatzachi_Zapotec = 'zav'; + case Mitla_Zapotec = 'zaw'; + case Xadani_Zapotec = 'zax'; + case Zayse_Zergulla = 'zay'; + case Zari = 'zaz'; + case Balaibalan = 'zba'; + case Central_Berawan = 'zbc'; + case East_Berawan = 'zbe'; + case Blissymbols = 'zbl'; + case Batui = 'zbt'; + case Bu_Bauchi_State = 'zbu'; + case West_Berawan = 'zbw'; + case Coatecas_Altas_Zapotec = 'zca'; + case Las_Delicias_Zapotec = 'zcd'; + case Central_Hongshuihe_Zhuang = 'zch'; + case Ngazidja_Comorian = 'zdj'; + case Zeeuws = 'zea'; + case Zenag = 'zeg'; + case Eastern_Hongshuihe_Zhuang = 'zeh'; + case Zeem = 'zem'; + case Zenaga = 'zen'; + case Kinga = 'zga'; + case Guibei_Zhuang = 'zgb'; + case Standard_Moroccan_Tamazight = 'zgh'; + case Minz_Zhuang = 'zgm'; + case Guibian_Zhuang = 'zgn'; + case Magori = 'zgr'; + case Zhuang = 'zha'; + case Zhaba = 'zhb'; + case Dai_Zhuang = 'zhd'; + case Zhire = 'zhi'; + case Nong_Zhuang = 'zhn'; + case Chinese = 'zho'; + case Zhoa = 'zhw'; + case Zia = 'zia'; + case Zimbabwe_Sign_Language = 'zib'; + case Zimakani = 'zik'; + case Zialo = 'zil'; + case Mesme = 'zim'; + case Zinza = 'zin'; + case Zigula = 'ziw'; + case Zizilivakan = 'ziz'; + case Kaimbulawa = 'zka'; + case Kadu = 'zkd'; + case Koguryo = 'zkg'; + case Khorezmian = 'zkh'; + case Karankawa = 'zkk'; + case Kanan = 'zkn'; + case Kott = 'zko'; + case Sao_Paulo_Kaingang = 'zkp'; + case Zakhring = 'zkr'; + case Kitan = 'zkt'; + case Kaurna = 'zku'; + case Krevinian = 'zkv'; + case Khazar = 'zkz'; + case Zula = 'zla'; + case Liujiang_Zhuang = 'zlj'; + case Malay_individual_language = 'zlm'; + case Lianshan_Zhuang = 'zln'; + case Liuqian_Zhuang = 'zlq'; + case Zul = 'zlu'; + case Manda_Australia = 'zma'; + case Zimba = 'zmb'; + case Margany = 'zmc'; + case Maridan = 'zmd'; + case Mangerr = 'zme'; + case Mfinu = 'zmf'; + case Marti_Ke = 'zmg'; + case Makolkol = 'zmh'; + case Negeri_Sembilan_Malay = 'zmi'; + case Maridjabin = 'zmj'; + case Mandandanyi = 'zmk'; + case Matngala = 'zml'; + case Marimanindji = 'zmm'; + case Mbangwe = 'zmn'; + case Molo = 'zmo'; + case Mpuono = 'zmp'; + case Mituku = 'zmq'; + case Maranunggu = 'zmr'; + case Mbesa = 'zms'; + case Maringarr = 'zmt'; + case Muruwari = 'zmu'; + case Mbariman_Gudhinma = 'zmv'; + case Mbo_Democratic_Republic_of_Congo = 'zmw'; + case Bomitaba = 'zmx'; + case Mariyedi = 'zmy'; + case Mbandja = 'zmz'; + case Zan_Gula = 'zna'; + case Zande_individual_language = 'zne'; + case Mang = 'zng'; + case Manangkari = 'znk'; + case Mangas = 'zns'; + case Copainala_Zoque = 'zoc'; + case Chimalapa_Zoque = 'zoh'; + case Zou = 'zom'; + case Asuncion_Mixtepec_Zapotec = 'zoo'; + case Tabasco_Zoque = 'zoq'; + case Rayon_Zoque = 'zor'; + case Francisco_Leon_Zoque = 'zos'; + case Lachiguiri_Zapotec = 'zpa'; + case Yautepec_Zapotec = 'zpb'; + case Choapan_Zapotec = 'zpc'; + case Southeastern_Ixtlan_Zapotec = 'zpd'; + case Petapa_Zapotec = 'zpe'; + case San_Pedro_Quiatoni_Zapotec = 'zpf'; + case Guevea_De_Humboldt_Zapotec = 'zpg'; + case Totomachapan_Zapotec = 'zph'; + case Santa_Maria_Quiegolani_Zapotec = 'zpi'; + case Quiavicuzas_Zapotec = 'zpj'; + case Tlacolulita_Zapotec = 'zpk'; + case Lachixio_Zapotec = 'zpl'; + case Mixtepec_Zapotec = 'zpm'; + case Santa_Ines_Yatzechi_Zapotec = 'zpn'; + case Amatlan_Zapotec = 'zpo'; + case El_Alto_Zapotec = 'zpp'; + case Zoogocho_Zapotec = 'zpq'; + case Santiago_Xanica_Zapotec = 'zpr'; + case Coatlan_Zapotec = 'zps'; + case San_Vicente_Coatlan_Zapotec = 'zpt'; + case Yalalag_Zapotec = 'zpu'; + case Chichicapan_Zapotec = 'zpv'; + case Zaniza_Zapotec = 'zpw'; + case San_Baltazar_Loxicha_Zapotec = 'zpx'; + case Mazaltepec_Zapotec = 'zpy'; + case Texmelucan_Zapotec = 'zpz'; + case Qiubei_Zhuang = 'zqe'; + case Kara_Korea = 'zra'; + case Mirgan = 'zrg'; + case Zerenkel = 'zrn'; + case Zaparo = 'zro'; + case Zarphatic = 'zrp'; + case Mairasi = 'zrs'; + case Sarasira = 'zsa'; + case Kaskean = 'zsk'; + case Zambian_Sign_Language = 'zsl'; + case Standard_Malay = 'zsm'; + case Southern_Rincon_Zapotec = 'zsr'; + case Sukurum = 'zsu'; + case Elotepec_Zapotec = 'zte'; + case Xanaguia_Zapotec = 'ztg'; + case Lapaguia_Guivini_Zapotec = 'ztl'; + case San_Agustin_Mixtepec_Zapotec = 'ztm'; + case Santa_Catarina_Albarradas_Zapotec = 'ztn'; + case Loxicha_Zapotec = 'ztp'; + case Quioquitani_Quieri_Zapotec = 'ztq'; + case Tilquiapan_Zapotec = 'zts'; + case Tejalapan_Zapotec = 'ztt'; + case Guila_Zapotec = 'ztu'; + case Zaachila_Zapotec = 'ztx'; + case Yatee_Zapotec = 'zty'; + case Tokano = 'zuh'; + case Zulu = 'zul'; + case Kumzari = 'zum'; + case Zuni = 'zun'; + case Zumaya = 'zuy'; + case Zay = 'zwa'; + case No_linguistic_content = 'zxx'; + case Yongbei_Zhuang = 'zyb'; + case Yang_Zhuang = 'zyg'; + case Youjiang_Zhuang = 'zyj'; + case Yongnan_Zhuang = 'zyn'; + case Zyphe_Chin = 'zyp'; + case Zaza = 'zza'; + case Zuojiang_Zhuang = 'zzj'; + +} + +class LanguageName {} + +class BackedEnum { + static public function fromName(string $s, string $t):mixed { + return null; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-10979.php b/tests/PHPStan/Analyser/data/bug-10979.php new file mode 100644 index 00000000000..562d7b4eeb8 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-10979.php @@ -0,0 +1,802 @@ + 'Guzzle', + self::PHPUnit => 'PHPUnit', + self::Monolog => 'Monolog', + self::PChart => 'pChart', + self::PHPStan => 'PHPStan', + self::PHPMailer => 'PHPMailer', + self::RespectValidation => 'RespectValidation', + self::Stripe => 'Stripe', + self::Ratchet => 'Ratchet', + self::Sentinel => 'Sentinel', + // Python + self::Matplotlib => 'Matplotlib', + self::Seaborn => 'Seaborn', + self::Selenium => 'Selenium', + self::OpenCV => 'OpenCV', + self::Keras => 'Keras', + self::PyTorch => 'PyTorch', + self::NumPy => 'NumPy', + self::Pandas => 'Pandas', + self::Plotly => 'Plotly', + // C++ + self::Cmake => 'CMake', + // Node.js + self::Playwright => 'Playwright', + + /** + * サーバーサイド(フレームワーク) + */ + // Laravel + self::LaravelScout => 'Laravel Scout', + self::LaravelCashier => 'Laravel Cashier', + self::LaravelJetstream => 'Laravel Jetstream', + self::LaravelSanctum => 'Laravel Sanctum', + // Java + self::SLF4J => 'SLF4J', + self::Mockito => 'Mockito', + self::OpenCSV => 'OpenCSV', + // Rails + self::Devise => 'Devise', + self::Capybara => 'Capybara', + + /** + * フロントエンド + */ + // JavaScript・TypeScript + self::JQuery => 'jQuery', + self::D3js => 'D3.js', + self::Lodash => 'Lodash', + self::Underscorejs => 'Underscore.js', + self::Animejs => 'Anime.js', + self::AnimateOnScroll => 'Animate On Scroll', + self::Videojs => 'Video.js', + self::Chartjs => 'Chart.js', + self::Cleavejs => 'Cleave.js', + self::FullPagejs => 'FullPage.js', + self::Leaflet => 'Leaflet', + self::Threejs => 'Three.js', + self::Screenfulljs => 'Screenfull.js', + self::Axios => 'Axios', + self::SocketIO => 'Socket.io', + self::TanStackQuery => 'TanStack Query', + self::Htmx => 'htmx', + self::GSAP => 'GSAP', + self::Swiper => 'Swiper', + self::EmblaCarousel => 'Embla Carousel', + self::Husky => 'husky', + self::MilionJs => 'Milion.js', + self::Biome => 'Biome', + self::Prettier => 'Prettier', + self::ESLint => 'ESLint', + self::SolidJS => 'SolidJS', + self::NextAuth => 'NextAuth', + self::InertiaJS => 'Inertia.js', + self::DrizzleORM => 'Drizzle ORM', // TS専用 + self::Zod => 'Zod', // TS専用 + self::TypeORM => 'TypeORM', // TS専用 + // Vue + self::VueChartjs => 'Vue Chart.js', + self::VeeValidate => 'VeeValidate', + self::VueDraggable => 'Vue Draggable', + self::Vuelidate => 'Vuelidate', + self::VueMultiselect => 'Vue Multiselect', + self::Vuex => 'Vuex', + self::Vuetify => 'Vuetify', + self::ElementUI => 'Element UI', + self::VueMaterial => 'Vue Material', + self::BootstrapVue => 'Bootstrap Vue', + self::Pinia => 'Pinia', + // React + self::Redux => 'Redux', + self::Tldraw => 'tldraw', + self::ShadcnUi => 'shadcn/ui', + self::MUI => 'MUI', + self::ChakraUI => 'Chakra UI', + self::Recoil => 'Recoil', + self::Jotai => 'Jotai', + self::Zustand => 'Zustand', + self::SWR => 'SWR', + self::ReactHookForm => 'React Hook Form', + self::RadixUI => 'Radix UI', + // Tailwind CSS + self::DaisyUI => 'DaisyUI', + + /** + * インフラ + */ + + /** + * モバイルアプリ + */ + + /** + * データベース + */ + self::DBeaver => 'DBeaver', + self::SequelPro => 'Sequel Pro', + self::SequelAce => 'Sequel Ace', + self::TablePlus => 'TablePlus', + self::Navicat => 'Navicat', + self::MySQLWorkbench => 'MySQL Workbench', + self::PHPMyAdmin => 'phpMyAdmin', + }; + } + + /** + * 関連する分野のIDを配列で返す + * ※複数の分野に関連する場合は複数のIDを返す + * + * @return array + */ + public function getFieldIds(): array + { + return match ($this) { + /** + * 複数に関連するライブラリ + */ + self::InertiaJS => [ + FieldMasterEnum::FrontEnd->value, + FieldMasterEnum::ServerSide->value, + ], + + /** + * サーバーサイド + */ + self::Guzzle, + self::PHPUnit, + self::Monolog, + self::PChart, + self::PHPStan, + self::PHPMailer, + self::RespectValidation, + self::Stripe, + self::Ratchet, + self::Sentinel, + self::Matplotlib, + self::Seaborn, + self::Selenium, + self::OpenCV, + self::Keras, + self::PyTorch, + self::NumPy, + self::Pandas, + self::Plotly, + self::Cmake, + self::LaravelScout, + self::LaravelCashier, + self::LaravelJetstream, + self::LaravelSanctum, + self::SLF4J, + self::Mockito, + self::OpenCSV, + self::Devise, + self::Capybara + => [ + FieldMasterEnum::ServerSide->value, + ], + + /** + * フロントエンド + */ + self::JQuery, + self::D3js, + self::Lodash, + self::Underscorejs, + self::Animejs, + self::AnimateOnScroll, + self::Videojs, + self::Chartjs, + self::Cleavejs, + self::FullPagejs, + self::Leaflet, + self::Threejs, + self::Screenfulljs, + self::Axios, + self::TypeORM, + self::VueChartjs, + self::VeeValidate, + self::VueDraggable, + self::Vuelidate, + self::VueMultiselect, + self::Vuex, + self::Vuetify, + self::ElementUI, + self::VueMaterial, + self::BootstrapVue, + self::SocketIO, + self::TanStackQuery, + self::Htmx, + self::Zod, + self::Redux, + self::Tldraw, + self::ShadcnUi, + self::MUI, + self::ChakraUI, + self::Recoil, + self::Jotai, + self::Zustand, + self::SWR, + self::ReactHookForm, + self::RadixUI, + self::GSAP, + self::Swiper, + self::EmblaCarousel, + self::Husky, + self::DrizzleORM, + self::MilionJs, + self::Biome, + self::Prettier, + self::ESLint, + self::DaisyUI, + self::Playwright, + self::Pinia, + self::SolidJS, + self::NextAuth + => [ + FieldMasterEnum::FrontEnd->value, + ], + + /** + * インフラ + */ + + /** + * モバイルアプリ + */ + + /** + * データベース + */ + self::DBeaver, + self::SequelPro, + self::SequelAce, + self::TablePlus, + self::Navicat, + self::MySQLWorkbench, + self::PHPMyAdmin + => [ + FieldMasterEnum::Database->value, + ], + }; + } + + /** + * 関連する言語・ツール、もしくはフレームワークのIDを配列で返す + * ※複数に関連する場合は複数のIDを返す + * + * @return array + */ + public function getMasterIds(): array + { + return match ($this) { + /** + * 複数に関連するライブラリ + */ + self::Stripe => [ + LanguageToolMasterEnum::PHP->value, + LanguageToolMasterEnum::Ruby->value, + LanguageToolMasterEnum::Java->value, + LanguageToolMasterEnum::Python->value, + LanguageToolMasterEnum::Go->value, + LanguageToolMasterEnum::NodeJS->value, + LanguageToolMasterEnum::JavaScript->value, + LanguageToolMasterEnum::TypeScript->value, + FrameworkMasterEnum::ReactNative->value, + ], + self::PyTorch => [ + LanguageToolMasterEnum::Python->value, + LanguageToolMasterEnum::CPlusPlus->value, + ], + self::OpenCV => [ + LanguageToolMasterEnum::Python->value, + LanguageToolMasterEnum::CPlusPlus->value, + LanguageToolMasterEnum::Java->value, + ], + self::InertiaJS => [ + FrameworkMasterEnum::Vue->value, + FrameworkMasterEnum::React->value, + FrameworkMasterEnum::Svelte->value, + FrameworkMasterEnum::Laravel->value, + FrameworkMasterEnum::RubyOnRails->value, + ], + + /** + * サーバーサイド(言語・ツール) + */ + // PHP + self::Guzzle, + self::PHPUnit, + self::Monolog, + self::PChart, + self::PHPStan, + self::PHPMailer, + self::RespectValidation, + self::Ratchet, + self::Sentinel => [ + LanguageToolMasterEnum::PHP->value, + ], + // C++ + self::Cmake => [ + LanguageToolMasterEnum::CPlusPlus->value, + ], + // Python + self::Matplotlib, + self::Seaborn, + self::Selenium, + self::Keras, + self::NumPy, + self::Pandas, + self::Plotly => [ + LanguageToolMasterEnum::Python->value, + ], + // Java + self::SLF4J, + self::Mockito, + self::OpenCSV => [ + LanguageToolMasterEnum::Java->value, + ], + // Node.js + self::Playwright => [ + LanguageToolMasterEnum::NodeJS->value, + ], + + /** + * サーバーサイド(フレームワーク) + */ + // Laravel + self::LaravelScout, + self::LaravelCashier, + self::LaravelJetstream, + self::LaravelSanctum => [ + FrameworkMasterEnum::Laravel->value, + ], + // Rails + self::Devise, + self::Capybara => [ + FrameworkMasterEnum::RubyOnRails->value, + ], + + /** + * フロントエンド + */ + // JavaScript・TypeScript + self::JQuery, + self::D3js, + self::Lodash, + self::Underscorejs, + self::Animejs, + self::AnimateOnScroll, + self::Videojs, + self::Chartjs, + self::Cleavejs, + self::FullPagejs, + self::Leaflet, + self::Threejs, + self::Screenfulljs, + self::Axios, + self::SocketIO, + self::TanStackQuery, + self::Htmx, + self::GSAP, + self::Swiper, + self::EmblaCarousel, + self::Husky, + self::Biome, + self::Prettier, + self::ESLint, + self::SolidJS, + self::NextAuth + => [ + LanguageToolMasterEnum::JavaScript->value, + LanguageToolMasterEnum::TypeScript->value, + ], + // TypeScript + self::Zod, + self::TypeORM, + self::DrizzleORM + => [ + LanguageToolMasterEnum::TypeScript->value, + ], + // Vue + self::VueChartjs, + self::VeeValidate, + self::VueDraggable, + self::Vuelidate, + self::VueMultiselect, + self::Vuex, + self::Vuetify, + self::ElementUI, + self::VueMaterial, + self::BootstrapVue, + self::Pinia + => [ + FrameworkMasterEnum::Vue->value, + ], + // React + self::Redux, + self::Tldraw, + self::ShadcnUi, + self::MUI, + self::ChakraUI, + self::Recoil, + self::Jotai, + self::Zustand, + self::SWR, + self::ReactHookForm, + self::RadixUI, + self::MilionJs + => [ + FrameworkMasterEnum::React->value, + ], + // Tailwind CSS + self::DaisyUI => [ + FrameworkMasterEnum::TailwindCSS->value, + ], + + /** + * インフラ + */ + + /** + * モバイルアプリ + */ + + /** + * データベース + */ + self::DBeaver => [ + LanguageToolMasterEnum::SQL->value, + LanguageToolMasterEnum::MySQL->value, + LanguageToolMasterEnum::PostgreSQL->value, + LanguageToolMasterEnum::SQLite->value, + LanguageToolMasterEnum::OracleDatabase->value, + LanguageToolMasterEnum::Db2->value, + LanguageToolMasterEnum::SQLServer->value, + LanguageToolMasterEnum::FirebirdSQL->value, + LanguageToolMasterEnum::MongoDB->value, + LanguageToolMasterEnum::ApacheCassandra->value, + LanguageToolMasterEnum::Redis->value, + LanguageToolMasterEnum::BigQuery->value, + LanguageToolMasterEnum::AmazonDynamoDB->value, + ], + self::SequelPro, + self::SequelAce => [ + LanguageToolMasterEnum::SQL->value, + LanguageToolMasterEnum::MySQL->value, + ], + self::TablePlus => [ + LanguageToolMasterEnum::SQL->value, + LanguageToolMasterEnum::MySQL->value, + LanguageToolMasterEnum::PostgreSQL->value, + LanguageToolMasterEnum::SQLite->value, + LanguageToolMasterEnum::OracleDatabase->value, + LanguageToolMasterEnum::Redis->value, + LanguageToolMasterEnum::ApacheCassandra->value, + LanguageToolMasterEnum::MongoDB->value, + LanguageToolMasterEnum::MariaDB->value, + LanguageToolMasterEnum::SQLServer->value, + LanguageToolMasterEnum::BigQuery->value, + LanguageToolMasterEnum::CockroachDB->value, + ], + self::Navicat => [ + LanguageToolMasterEnum::SQL->value, + LanguageToolMasterEnum::MySQL->value, + LanguageToolMasterEnum::PostgreSQL->value, + LanguageToolMasterEnum::SQLite->value, + LanguageToolMasterEnum::OracleDatabase->value, + LanguageToolMasterEnum::SQLServer->value, + LanguageToolMasterEnum::MariaDB->value, + ], + self::MySQLWorkbench => [ + LanguageToolMasterEnum::SQL->value, + LanguageToolMasterEnum::MySQL->value, + ], + self::PHPMyAdmin => [ + LanguageToolMasterEnum::SQL->value, + LanguageToolMasterEnum::MySQL->value, + LanguageToolMasterEnum::MariaDB->value, + ], + }; + } + + /** + * `language_tool` or `framework`いずれかのtypeを返す + * + * @return LibraryRelationTypeEnum + */ + public function getType(): LibraryRelationTypeEnum + { + return match ($this) { + /** + * 言語・ツール&フレームワークどちらにも関連するライブラリ + */ + + /** + * 言語・ツール + */ + self::Guzzle, + self::PHPUnit, + self::Monolog, + self::PChart, + self::PHPStan, + self::PHPMailer, + self::RespectValidation, + self::Stripe, + self::Ratchet, + self::Sentinel, + self::Matplotlib, + self::Seaborn, + self::Selenium, + self::OpenCV, + self::Keras, + self::PyTorch, + self::NumPy, + self::Pandas, + self::Plotly, + self::Cmake, + self::SLF4J, + self::Mockito, + self::OpenCSV, + self::JQuery, + self::D3js, + self::Lodash, + self::Underscorejs, + self::Animejs, + self::AnimateOnScroll, + self::Videojs, + self::Chartjs, + self::Cleavejs, + self::FullPagejs, + self::Leaflet, + self::Threejs, + self::Screenfulljs, + self::Axios, + self::SocketIO, + self::Htmx, + self::TanStackQuery, + self::Zod, + self::TypeORM, + self::DBeaver, + self::SequelPro, + self::SequelAce, + self::TablePlus, + self::Navicat, + self::MySQLWorkbench, + self::PHPMyAdmin, + self::GSAP, + self::Swiper, + self::EmblaCarousel, + self::Husky, + self::DrizzleORM, + self::MilionJs, + self::Biome, + self::Prettier, + self::ESLint, + self::DaisyUI, + self::Playwright, + self::SolidJS, + self::NextAuth + => LibraryRelationTypeEnum::LanguageTool, + + /** + * フレームワーク + */ + self::LaravelScout, + self::LaravelCashier, + self::LaravelJetstream, + self::LaravelSanctum, + self::VueChartjs, + self::VeeValidate, + self::VueDraggable, + self::Vuelidate, + self::VueMultiselect, + self::Vuex, + self::Vuetify, + self::ElementUI, + self::VueMaterial, + self::BootstrapVue, + self::Redux, + self::Tldraw, + self::Devise, + self::Capybara, + self::ShadcnUi, + self::MUI, + self::ChakraUI, + self::Recoil, + self::Jotai, + self::Zustand, + self::SWR, + self::ReactHookForm, + self::RadixUI, + self::Pinia, + self::InertiaJS + => LibraryRelationTypeEnum::Framework, + }; + } + + /** + * カテゴリIDがライブラリのIDかどうか判定 + * + * @param int $categoryId + * @return bool + */ + public static function isLibraryCategoryId(int $categoryId): bool + { + foreach (self::cases() as $case) { + if ($categoryId === $case->value) { + return true; + } + } + return false; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-11263.php b/tests/PHPStan/Analyser/data/bug-11263.php new file mode 100644 index 00000000000..938527eda61 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-11263.php @@ -0,0 +1,815 @@ += 8.1 + +declare(strict_types = 1); + +namespace Bug11263; + +enum FirstEnum: string +{ + + case XyzSaturdayStopDomestic = 'XYZ_DOMESTIC_300'; + case XyzSaturdayDeliveryAir = 'XYZ_AIR_300'; + case XyzAdditionalHandling = 'XYZ_100'; + case XyzCommercialDomesticAirDeliveryArea = 'XYZ_COMMERCIAL_AIR_376'; + case XyzCommercialDomesticAirExtendedDeliveryArea = 'XYZ_COMMERCIAL_AIR_EXTENDED_376'; + case XyzCommercialDomesticGroundDeliveryArea = 'XYZ_COMMERCIAL_GROUND_376'; + case XyzCommercialDomesticGroundExtendedDeliveryArea = 'XYZ_COMMERCIAL_GROUND_EXTENDED_376'; + case XyzResidentialDomesticAirDeliveryArea = 'XYZ_RESIDENTIAL_AIR_376'; + case XyzResidentialDomesticAirExtendedDeliveryArea = 'XYZ_RESIDENTIAL_AIR_EXTENDED_376'; + case XyzResidentialDomesticGroundDeliveryArea = 'XYZ_RESIDENTIAL_GROUND_376'; + case XyzResidentialDomesticGroundExtendedDeliveryArea = 'XYZ_RESIDENTIAL_GROUND_EXTENDED_376'; + case XyzDeliveryAreaSurchargeSurePost = 'XYZ_SURE_POST_376'; + case XyzDeliveryAreaSurchargeSurePostExtended = 'XYZ_SURE_POST_EXTENDED_376'; + case XyzDeliveryAreaSurchargeOther = 'XYZ_DELIVERY_AREA_OTHER_376'; + case XyzResidentialSurchargeAir = 'XYZ_RESIDENTIAL_SURCHARGE_AIR_270'; + case XyzResidentialSurchargeGround = 'XYZ_RESIDENTIAL_SURCHARGE_GROUND_270'; + case XyzSurchargeCodeFuel = 'XYZ_375'; + case XyzCod = 'XYZ_COD_110'; + case XyzDeliveryConfirmation = 'XYZ_DELIVERY_CONFIRMATION_120'; + case XyzShipDeliveryConfirmation = 'XYZ_SHIP_DELIVERY_CONFIRMATION_121'; + case XyzExtendedArea = 'XYZ_EXTENDED_AREA_190'; + case XyzHazMat = 'XYZ_HAZ_MAT_199'; + case XyzDryIce = 'XYZ_DRY_ICE_200'; + case XyzIscSeeds = 'XYZ_ISC_SEEDS_201'; + case XyzIscPerishables = 'XYZ_ISC_PERISHABLES_202'; + case XyzIscTobacco = 'XYZ_ISC_TOBACCO_203'; + case XyzIscPlants = 'XYZ_ISC_PLANTS_204'; + case XyzIscAlcoholicBeverages = 'XYZ_ISC_ALCOHOLIC_BEVERAGES_205'; + case XyzIscBiologicalSubstances = 'XYZ_ISC_BIOLOGICAL_SUBSTANCES_206'; + case XyzIscSpecialExceptions = 'XYZ_ISC_SPECIAL_EXCEPTIONS_207'; + case XyzHoldForPickup = 'XYZ_HOLD_FOR_PICKUP_220'; + case XyzOriginCertificate = 'XYZ_ORIGIN_CERTIFICATE_240'; + case XyzPrintReturnLabel = 'XYZ_PRINT_RETURN_LABEL_250'; + case XyzExportLicenseVerification = 'XYZ_EXPORT_LICENSE_VERIFICATION_258'; + case XyzPrintNMail = 'XYZ_PRINT_N_MAIL_260'; + case XyzReturnService1attempt = 'XYZ_RETURN_SERVICE_1ATTEMPT_280'; + case XyzReturnService3attempt = 'XYZ_RETURN_SERVICE_3ATTEMPT_290'; + case XyzSaturdayInternationalProcessingFee = 'XYZ_SATURDAY_INTERNATIONAL_PROCESSING_FEE_310'; + case XyzElectronicReturnLabel = 'XYZ_ELECTRONIC_RETURN_LABEL_350'; + case XyzPreparedSedForm = 'XYZ_PREPARED_SED_FORM_374'; + case XyzLargePackage = 'XYZ_LARGE_PACKAGE_377'; + case XyzShipperPaysDutyTax = 'XYZ_SHIPPER_PAYS_DUTY_TAX_378'; + case XyzShipperPaysDutyTaxUnpaid = 'XYZ_SHIPPER_PAYS_DUTY_TAX_UNPAID_379'; + case XyzExpressPlusSurcharge = 'XYZ_EXPRESS_PLUS_SURCHARGE_380'; + case XyzInsurance = 'XYZ_INSURANCE_400'; + case XyzShipAdditionalHandling = 'XYZ_SHIP_ADDITIONAL_HANDLING_401'; + case XyzShipperRelease = 'XYZ_SHIPPER_RELEASE_402'; + case XyzCheckToShipper = 'XYZ_CHECK_TO_SHIPPER_403'; + case XyzProactiveResponse = 'XYZ_PROACTIVE_RESPONSE_404'; + case XyzGermanPickup = 'XYZ_GERMAN_PICKUP_405'; + case XyzGermanRoadTax = 'XYZ_GERMAN_ROAD_TAX_406'; + case XyzExtendedAreaPickup = 'XYZ_EXTENDED_AREA_PICKUP_407'; + case XyzReturnOfDocument = 'XYZ_RETURN_OF_DOCUMENT_410'; + case XyzPeakSeason = 'XYZ_PEAK_SEASON_430'; + case XyzLargePackageSeasonalSurcharge = 'XYZ_LARGE_PACKAGE_SEASONAL_SURCHARGE_431'; + case XyzAdditionalHandlingSeasonalSurchargeDiscontinued = 'XYZ_ADDITIONAL_HANDLING_SEASONAL_SURCHARGE_432'; + case XyzShipLargePackage = 'XYZ_SHIP_LARGE_PACKAGE_440'; + case XyzCarbonNeutral = 'XYZ_CARBON_NEUTRAL_441'; + case XyzImportControl = 'XYZ_IMPORT_CONTROL_444'; + case XyzCommercialInvoiceRemoval = 'XYZ_COMMERCIAL_INVOICE_REMOVAL_445'; + case XyzImportControlElectronicLabel = 'XYZ_IMPORT_CONTROL_ELECTRONIC_LABEL_446'; + case XyzImportControlPrintLabel = 'XYZ_IMPORT_CONTROL_PRINT_LABEL_447'; + case XyzImportControlPrintAndMailLabel = 'XYZ_IMPORT_CONTROL_PRINT_AND_MAIL_LABEL_448'; + case XyzImportControlOnePickupAttemptLabel = 'XYZ_IMPORT_CONTROL_ONE_PICKUP_ATTEMPT_LABEL_449'; + case XyzImportControlThreePickUpAttemptLabel = 'XYZ_IMPORT_CONTROL_THREE_PICK_UP_ATTEMPT_LABEL_450'; + case XyzRefrigeration = 'XYZ_REFRIGERATION_452'; + case XyzExchangePrintReturnLabel = 'XYZ_EXCHANGE_PRINT_RETURN_LABEL_464'; + case XyzCommittedDeliveryWindow = 'XYZ_COMMITTED_DELIVERY_WINDOW_470'; + case XyzSecuritySurcharge = 'XYZ_SECURITY_SURCHARGE_480'; + case XyzNonMachinableCharge = 'XYZ_NON_MACHINABLE_CHARGE_490'; + case XyzCustomerTransactionFee = 'XYZ_CUSTOMER_TRANSACTION_FEE_492'; + case XyzSurePostNonStandardLength = 'XYZ_493'; + case XyzSurePostNonStandardExtraLength = 'XYZ_494'; + case XyzSurePostNonStandardCube = 'XYZ_NON_STANDARD_CUBE_CHARGE_495'; + case XyzShipmentCod = 'XYZ_SHIPMENT_COD_500'; + case XyzLiftGateForPickup = 'XYZ_LIFT_GATE_FOR_PICKUP_510'; + case XyzLiftGateForDelivery = 'XYZ_LIFT_GATE_FOR_DELIVERY_511'; + case XyzDropOffAtXyzFacility = 'XYZ_DROP_OFF_AT_XYZ_FACILITY_512'; + case XyzPremiumCare = 'XYZ_PREMIUM_CARE_515'; + case XyzOversizePallet = 'XYZ_OVERSIZE_PALLET_520'; + case XyzFreightDeliverySurcharge = 'XYZ_FREIGHT_DELIVERY_SURCHARGE_530'; + case XyzFreightPickxyzurcharge = 'XYZ_FREIGHT_PICKUP_SURCHARGE_531'; + case XyzDirectToRetail = 'XYZ_DIRECT_TO_RETAIL_540'; + case XyzDirectDeliveryOnly = 'XYZ_DIRECT_DELIVERY_ONLY_541'; + case XyzNoAccessPoint = 'XYZ_NO_ACCESS_POINT_541'; + case XyzDeliverToAddresseeOnly = 'XYZ_DELIVER_TO_ADDRESSEE_ONLY_542'; + case XyzDirectToRetailCod = 'XYZ_DIRECT_TO_RETAIL_COD_543'; + case XyzRetailAccessPoint = 'XYZ_RETAIL_ACCESS_POINT_544'; + case XyzElectronicPackageReleaseAuthentication = 'XYZ_ELECTRONIC_PACKAGE_RELEASE_AUTHENTICATION_546'; + case XyzPayAtStore = 'XYZ_PAY_AT_STORE_547'; + case XyzInsideDelivery = 'XYZ_INSIDE_DELIVERY_549'; + case XyzItemDisposal = 'XYZ_ITEM_DISPOSAL_550'; + case XyzAddressCorrections = 'XYZ_ADDRESS_CORRECTIONS'; + case XyzNotPreviouslyBilledFee = 'XYZ_NOT_PREVIOUSLY_BILLED_FEE'; + case XyzPickxyzurcharge = 'XYZ_PICKUP_SURCHARGE'; + case XyzChargeback = 'XYZ_CHARGEBACK'; + case XyzAdditionalHandlingPeakDemand = 'XYZ_ADDITIONAL_HANDLING_PEAK_DEMAND'; + case XyzOtherSurcharge = 'XYZ_OTHER_SURCHARGE'; + + case XyzRemoteAreaSurcharge = 'XYZ_REMOTE_AREA_SURCHARGE'; + case XyzRemoteAreaOtherSurcharge = 'XYZ_REMOTE_AREA_OTHER_SURCHARGE'; + + case CompanyEconomyResidentialSurchargeLightweight = 'COMPANY_ECONOMY_RESIDENTIAL_SURCHARGE_LIGHTWEIGHT'; + case CompanyEconomyDeliverySurchargeLightweight = 'COMPANY_ECONOMY_DELIVERY_SURCHARGE_LIGHTWEIGHT'; + case CompanyEconomyExtendedDeliverySurchargeLightweight = 'COMPANY_ECONOMY_EXTENDED_DELIVERY_SURCHARGE_LIGHTWEIGHT'; + case CompanyStandardResidentialSurchargeLightweight = 'COMPANY_STANDARD_RESIDENTIAL_SURCHARGE_LIGHTWEIGHT'; + case CompanyStandardDeliverySurchargeLightweight = 'COMPANY_STANDARD_DELIVERY_SURCHARGE_LIGHTWEIGHT'; + case CompanyStandardExtendedDeliverySurchargeLightweight = 'COMPANY_STANDARD_EXTENDED_DELIVERY_SURCHARGE_LIGHTWEIGHT'; + case CompanyEconomyResidentialSurchargePlus = 'COMPANY_ECONOMY_RESIDENTIAL_SURCHARGE_PLUS'; + case CompanyEconomyDeliverySurchargePlus = 'COMPANY_ECONOMY_DELIVERY_SURCHARGE_PLUS'; + case CompanyEconomyExtendedDeliverySurchargePlus = 'COMPANY_ECONOMY_EXTENDED_DELIVERY_SURCHARGE_PLUS'; + case CompanyEconomyPeakSurchargeLightweight = 'COMPANY_ECONOMY_PEAK_SURCHARGE_LIGHTWEIGHT'; + case CompanyEconomyPeakSurchargePlus = 'COMPANY_ECONOMY_PEAK_SURCHARGE_PLUS'; + case CompanyEconomyPeakSurchargeOver5Lbs = 'COMPANY_ECONOMY_PEAK_SURCHARGE_OVER_5_LBS'; + case CompanyStandardResidentialSurchargePlus = 'COMPANY_STANDARD_RESIDENTIAL_SURCHARGE_PLUS'; + case CompanyStandardDeliverySurchargePlus = 'COMPANY_STANDARD_DELIVERY_SURCHARGE_PLUS'; + case CompanyStandardExtendedDeliverySurchargePlus = 'COMPANY_STANDARD_EXTENDED_DELIVERY_SURCHARGE_PLUS'; + case CompanyStandardPeakSurchargeLightweight = 'COMPANY_STANDARD_PEAK_SURCHARGE_LIGHTWEIGHT'; + case CompanyStandardPeakSurchargePlus = 'COMPANY_STANDARD_PEAK_SURCHARGE_PLUS'; + case CompanyStandardPeakSurchargeOver5Lbs = 'COMPANY_STANDARD_PEAK_SURCHARGE_OVER_5_LBS'; + + case Company2DayResidentialSurcharge = 'COMPANY_2_DAY_RESIDENTIAL_SURCHARGE'; + case Company2DayDeliverySurcharge = 'COMPANY_2_DAY_DELIVERY_SURCHARGE'; + case Company2DayExtendedDeliverySurcharge = 'COMPANY_2_DAY_EXTENDED_DELIVERY_SURCHARGE'; + case Company2DayPeakSurcharge = 'COMPANY_2_DAY_PEAK_SURCHARGE'; + + case CompanyHazmatResidentialSurcharge = 'COMPANY_HAZMAT_RESIDENTIAL_SURCHARGE'; + case CompanyHazmatResidentialSurchargeLightweight = 'COMPANY_HAZMAT_RESIDENTIAL_SURCHARGE_LIGHTWEIGHT'; + case CompanyHazmatDeliverySurcharge = 'COMPANY_HAZMAT_DELIVERY_SURCHARGE'; + case CompanyHazmatDeliverySurchargeLightweight = 'COMPANY_HAZMAT_DELIVERY_SURCHARGE_LIGHTWEIGHT'; + case CompanyHazmatExtendedDeliverySurcharge = 'COMPANY_HAZMAT_EXTENDED_DELIVERY_SURCHARGE'; + case CompanyHazmatExtendedDeliverySurchargeLightweight = 'COMPANY_HAZMAT_EXTENDED_DELIVERY_SURCHARGE_LIGHTWEIGHT'; + case CompanyHazmatPeakSurchargeLightweight = 'COMPANY_HAZMAT_PEAK_SURCHARGE_LIGHTWEIGHT'; + case CompanyHazmatPeakSurcharge = 'COMPANY_HAZMAT_PEAK_SURCHARGE'; + case CompanyHazmatPeakSurchargePlus = 'COMPANY_HAZMAT_PEAK_SURCHARGE_PLUS'; + case CompanyHazmatPeakSurchargeOver5Lbs = 'COMPANY_HAZMAT_PEAK_SURCHARGE_OVER_5_LBS'; + + case CompanyFuelSurcharge = 'COMPANY_FUEL_SURCHARGE'; + + case Company2DayAdditionalHandlingSurchargeDimensions = 'COMPANY_2DAY_ADDITIONAL_HANDLING_SURCHARGE_DIMENSIONS'; + case Company2DayAdditionalHandlingSurchargeWeight = 'COMPANY_2DAY_ADDITIONAL_HANDLING_SURCHARGE_WEIGHT'; + case CompanyStandardAdditionalHandlingSurchargeDimensions = 'COMPANY_STANDARD_ADDITIONAL_HANDLING_SURCHARGE_DIMENSIONS'; + case CompanyStandardAdditionalHandlingSurchargeWeight = 'COMPANY_STANDARD_ADDITIONAL_HANDLING_SURCHARGE_WEIGHT'; + case CompanyEconomyAdditionalHandlingSurchargeDimensions = 'COMPANY_ECONOMY_ADDITIONAL_HANDLING_SURCHARGE_DIMENSIONS'; + case CompanyEconomyAdditionalHandlingSurchargeWeight = 'COMPANY_ECONOMY_ADDITIONAL_HANDLING_SURCHARGE_WEIGHT'; + case CompanyHazmatAdditionalHandlingSurchargeDimensions = 'COMPANY_HAZMAT_ADDITIONAL_HANDLING_SURCHARGE_DIMENSIONS'; + case CompanyHazmatAdditionalHandlingSurchargeWeight = 'COMPANY_HAZMAT_ADDITIONAL_HANDLING_SURCHARGE_WEIGHT'; + case Company2DayLargePackageSurcharge = 'COMPANY_2DAY_LARGE_PACKAGE_SURCHARGE'; + case CompanyStandardLargePackageSurcharge = 'COMPANY_STANDARD_LARGE_PACKAGE_SURCHARGE'; + case CompanyEconomyLargePackageSurcharge = 'COMPANY_ECONOMY_LARGE_PACKAGE_SURCHARGE'; + case CompanyHazmatLargePackageSurcharge = 'COMPANY_HAZMAT_LARGE_PACKAGE_SURCHARGE'; + case CompanyLargePackagePeakSurcharge = 'COMPANY_LARGE_PACKAGE_PEAK_SURCHARGE'; + + case CompanyUkSignatureSurcharge = 'COMPANY_UK_SIGNATURE_SURCHARGE'; + + case AciFuelSurcharge = 'ACI_FUEL_SURCHARGE'; + case AciUnmanifestedSurcharge = 'ACI_UNMANIFESTED_SURCHARGE'; + case AciPeakSurcharge = 'ACI_PEAK_SURCHARGE'; + case AciOversizeSurcharge = 'ACI_OVERSIZE_SURCHARGE'; + case AciUltraUrbanSurcharge = 'ACI_ULTRA_URBAN_SURCHARGE'; + case AciNonStandardSurcharge = 'ACI_NON_STANDARD_SURCHARGE'; + + case XyzmiFuelSurcharge = 'XYZMI_FUEL_SURCHARGE'; + case XyzmiNonStandardSurcharge = 'XYZMI_NON_STANDARD_SURCHARGE'; + + case FooEcommerceFuelSurcharge = 'FOO_ECOMMERCE_FUEL_SURCHARGE'; + case FooEcommercePeakSurcharge = 'FOO_ECOMMERCE_PEAK_SURCHARGE'; + case FooEcommerceOversizeSurcharge = 'FOO_ECOMMERCE_OVERSIZE_SURCHARGE'; + case FooEcommerceFutureUseSurcharge = 'FOO_ECOMMERCE_FUTURE_USE_SURCHARGE'; + case FooEcommerceDimLengthSurcharge = 'FOO_ECOMMERCE_DIM_LENGTH_SURCHARGE'; + + case HooFuelSurcharge = 'LASER_SHIP_FUEL_SURCHARGE'; + case HooResidentialSurcharge = 'LASER_SHIP_RESIDENTIAL_SURCHARGE'; + case HooDeliverySurcharge = 'LASER_SHIP_DELIVERY_SURCHARGE'; + case HooExtendedDeliverySurcharge = 'LASER_SHIP_EXTENDED_DELIVERY_SURCHARGE'; + + case MooSmartPostFuelSurcharge = 'MOO_SMART_POST_FUEL_SURCHARGE'; + case MooSmartPostDeliverySurcharge = 'MOO_SMART_POST_DELIVERY_SURCHARGE'; + case MooSmartPostExtendedDeliverySurcharge = 'MOO_SMART_POST_EXTENDED_DELIVERY_SURCHARGE'; + case MooSmartPostNonMachinableSurcharge = 'MOO_SMART_POST_NON_MACHINABLE_SURCHARGE'; + + case MooAdditionalHandlingDomesticDimensionSurcharge = 'MOO_ADDITIONAL_HANDLING_DOMESTIC_DIMENSION_SURCHARGE'; + case MooOversizeSurcharge = 'MOO_OVERSIZE_SURCHARGE'; + + case MooAdditionalHandling = 'MOO_ADDITIONAL_HANDLING'; + case MooAdditionalHandlingChargeDimensions = 'MOO_ADDITIONAL_HANDLING_CHARGE_DIMENSIONS'; + case MooAdditionalHandlingChargePackage = 'MOO_ADDITIONAL_HANDLING_CHARGE_PACKAGE'; + case MooAdditionalHandlingChargeWeight = 'MOO_ADDITIONAL_HANDLING_CHARGE_WEIGHT'; + case MooAdditionalWeightCharge = 'MOO_ADDITIONAL_WEIGHT_CHARGE'; + case MooAdvancementFee = 'MOO_ADVANCEMENT_FEE'; + case MooAhsDimensions = 'MOO_AHS_DIMENSIONS'; + case MooAhsWeight = 'MOO_AHS_WEIGHT'; + case MooAlaskaOrHawaiiOrPuertoRicoPkupOrDel = 'MOO_ALASKA/HAWAII/PUERTO_RICO_PKUP/DEL'; + case MooAppointment = 'MOO_APPOINTMENT'; + case MooBox24X24X18DblWalledProductQuantity2 = 'MOO_BOX_24_X_24_X_18_DBL_WALLED_PRODUCT_QUANTITY_2'; + case MooBox28X28X28DblWalledProductQuantity3 = 'MOO_BOX_28_X_28_X_28_DBL_WALLED_PRODUCT_QUANTITY_3'; + case MooBoxMultiDepth22X22X22ProductQuantity7 = 'MOO_BOX_MULTI_DEPTH_22_X_22_X_22_PRODUCT_QUANTITY_7'; + case MooBrokerDocumentTransferFee = 'MOO_BROKER_DOCUMENT_TRANSFER_FEE'; + case MooCallTag = 'MOO_CALL_TAG'; + case MooCustomsOvertimeFee = 'MOO_CUSTOMS_OVERTIME_FEE'; + case MooDasAlaskaComm = 'MOO_DAS_ALASKA_COMM'; + case MooDasAlaskaResi = 'MOO_DAS_ALASKA_RESI'; + case MooDasComm = 'MOO_DAS_COMM'; + case MooDasExtendedComm = 'MOO_DAS_EXTENDED_COMM'; + case MooDasExtendedResi = 'MOO_DAS_EXTENDED_RESI'; + case MooDasHawaiiComm = 'MOO_DAS_HAWAII_COMM'; + case MooDasHawaiiResi = 'MOO_DAS_HAWAII_RESI'; + case MooDasRemoteComm = 'MOO_DAS_REMOTE_COMM'; + case MooDasRemoteResi = 'MOO_DAS_REMOTE_RESI'; + case MooDasResi = 'MOO_DAS_RESI'; + case MooDateCertain = 'MOO_DATE_CERTAIN'; + case MooDeclaredValue = 'MOO_DECLARED_VALUE'; + case MooDeclaredValueCharge = 'MOO_DECLARED_VALUE_CHARGE'; + case MooDeliveryAndReturns = 'MOO_DELIVERY_AND_RETURNS'; + case MooDeliveryAreaSurcharge = 'MOO_DELIVERY_AREA_SURCHARGE'; + case MooDeliveryAreaSurchargeAlaska = 'MOO_DELIVERY_AREA_SURCHARGE_ALASKA'; + case MooDeliveryAreaSurchargeExtended = 'MOO_DELIVERY_AREA_SURCHARGE_EXTENDED'; + case MooDeliveryAreaSurchargeHawaii = 'MOO_DELIVERY_AREA_SURCHARGE_HAWAII'; + case MooElectronicEntryForFormalEntry = 'MOO_ELECTRONIC_ENTRY_FOR_FORMAL_ENTRY'; + case MooEvening = 'MOO_EVENING'; + case MooExtendedDeliveryArea = 'MOO_EXTENDED_DELIVERY_AREA'; + case MooFoodAndDrugAdministrationClearance = 'MOO_FOOD_AND_DRUG_ADMINISTRATION_CLEARANCE'; + case MooFragileLarge20X20X12ProductQuantity2 = 'MOO_FRAGILE_LARGE_20_X_20_X_12_PRODUCT_QUANTITY_2'; + case MooFragileLarge23X17X12ProductQuantity1 = 'MOO_FRAGILE_LARGE_23_X_17_X_12_PRODUCT_QUANTITY_1'; + case MooFreeTradeZone = 'MOO_FREE_TRADE_ZONE'; + case MooFuelSurcharge = 'MOO_FUEL_SURCHARGE'; + case MooHandlingFee = 'MOO_HANDLING_FEE'; + case MooHoldForPickup = 'MOO_HOLD_FOR_PICKUP'; + case MooImportPermitsAndLicensesFee = 'MOO_IMPORT_PERMITS_AND_LICENSES_FEE'; + case MooPeakAhsCharge = 'MOO_PEAK_AHS_CHARGE'; + case MooResidential = 'MOO_RESIDENTIAL'; + case MooOversizeCharge = 'MOO_OVERSIZE_CHARGE'; + case MooPeakOversizeSurcharge = 'MOO_PEAK_OVERSIZE_CHARGE'; + case MooAdditionalVat = 'MOO_ADDITIONAL_VAT'; + case MooGstOnDisbOrAncillaryServiceFees = 'MOO_GST_ON_DISB_OR_ANCILLARY_SERVICE_FEES'; + case MooHstOnAdvOrAncillaryServiceFees = 'MOO_HST_ON_ADV_OR_ANCILLARY_SERVICE_FEES'; + case MooHstOnDisbOrAncillaryServiceFees = 'MOO_HST_ON_DISB_OR_ANCILLARY_SERVICE_FEES'; + case MooIndiaCgst = 'MOO_INDIA_CGST'; + case MooIndiaSgst = 'MOO_INDIA_SGST'; + case MooMooAdditionalVat = 'MOO_MOO_ADDITIONAL_VAT'; + case MooMooAdditionalDuty = 'MOO_MOO_ADDITIONAL_DUTY'; + case MooEgyptVatOnFreight = 'MOO_EGYPT_VAT_ON_FREIGHT'; + case MooDutyAndTaxAmendmentFee = 'MOO_DUTY_AND_TAX_AMENDMENT_FEE'; + case MooCustomsDuty = 'MOO_CUSTOMS_DUTY'; + case MooCstAdditionalDuty = 'MOO_CST_ADDITIONAL_DUTY'; + case MooChinaVatDutyOrTax = 'MOO_CHINA_VAT_DUTY_OR_TAX'; + case MooArgentinaExportDuty = 'MOO_ARGENTINA_EXPORT_DUTY'; + case MooAustraliaGst = 'MOO_AUSTRALIA_GST'; + case MooBhFreightVat = 'MOO_BH_FREIGHT_VAT'; + case MooCanadaGst = 'MOO_CANADA_GST'; + case MooCanadaHst = 'MOO_CANADA_HST'; + case MooCanadaHstNb = 'MOO_CANADA_HST_NB'; + case MooCanadaHstOn = 'MOO_CANADA_HST_ON'; + case MooGstSingapore = 'MOO_GST_SINGAPORE'; + case MooBritishColumbiaPst = 'MOO_BRITISH_COLUMBIA_PST'; + case MooDisbursementFee = 'MOO_DISBURSEMENT_FEE'; + case MooVatOnDisbursementFee = 'MOO_VAT_ON_DISBURSEMENT_FEE'; + case MooResidentialRuralZone = 'MOO_RESIDENTIAL_RURAL_ZONE'; + case MooOriginalVat = 'MOO_ORIGINAL_VAT'; + case MooMexicoIvaFreight = 'MOO_MEXICO_IVA_FREIGHT'; + case MooOtherGovernmentAgencyFee = 'MOO_OTHER_GOVERNMENT_AGENCY_FEE'; + case MooCustodyFee = 'MOO_CUSTODY_FEE'; + case MooProcessingFee = 'MOO_PROCESSING_FEE'; + case MooStorageFee = 'MOO_STORAGE_FEE'; + case MooIndividualFormalEntry = 'MOO_INDIVIDUAL_FORMAL_ENTRY'; + case MooRebillDuty = 'MOO_REBILL_DUTY'; + case MooClearanceEntryFee = 'MOO_CLEARANCE_ENTRY_FEE'; + case MooCustomsClearanceFee = 'MOO_CUSTOMS_CLEARANCE_FEE'; + case MooRebillVAT = 'MOO_REBILL_VAT'; + case MooIdVatOnAncillaries = 'MOO_ID_VAT_ON_ANCILLARIES'; + + case MooPeakSurcharge = 'MOO_PEAK_CHARGE'; + case MooOutOfDeliveryAreaTier = 'MOO_OUT_OF_DELIVERY_AREA_TIER'; + case MooMerchandiseProcessingFee = 'MOO_MERCHANDISE_PROCESSING_FEE'; + case MooReturnOnCallSurcharge = 'MOO_RETURN_ON_CALL_SURCHARGE'; + case MooUnauthorizedOSSurcharge = 'MOO_UNAUTHORIZED_OS'; + case MooPeakUnauthCharge = 'MOO_PEAK_UNAUTH_CHARGE'; + case MooMissingAccountNumber = 'MOO_MISSING_ACCOUNT_NUMBER'; + case MooHazardousMaterial = 'MOO_HAZARDOUS_MATERIAL'; + case MooReturnPickupFee = 'MOO_RETURN_PICKUP_FEE'; + case MooPeakResiCharge = 'MOO_PEAK_RESI_CHARGE'; + case MooSalesTax = 'MOO_SALES_TAX'; + case MooOther = 'MOO_OTHER'; + + case ZooFuelSurcharge = 'CANADA_POST_FUEL_SURCHARGE'; + + case ZooGoodsAndServicesTaxSurcharge = 'CANADA_POST_GST_SURCHARGE'; + + case ZooHarmonizedSalesTaxSurcharge = 'CANADA_POST_HST_SURCHARGE'; + + case ZooProvincialSalesTaxSurcharge = 'CANADA_POST_PST_SURCHARGE'; + + case ZooPackageRedirectionSurcharge = 'CANADA_POST_REDIRECTION_SURCHARGE'; + + case ZooDeliveryConfirmationSurcharge = 'CANADA_POST_DELIVERY_CONFIRMATION'; + + case ZooSignatureOptionSurcharge = 'CANADA_POST_SIGNATURE_OPTION_SURCHARGE'; + + case ZooOnDemandPickxyzurcharge = 'CANADA_POST_ON_DEMAND_PICKUP'; + + case ZooOutOfSpecSurcharge = 'CANADA_POST_OUT_OF_SPEC_SURCHARGE'; + + case ZooAutoBillingSurcharge = 'CANADA_POST_AUTO_BILLING_SURCHARGE'; + + case ZooOversizeNotPackagedSurcharge = 'CANADA_POST_OVERSIZE_NOT_PACKAGED_SURCHARGE'; + + case EvriRelabellingSurcharge = 'EVRI_RELABELLING_SURCHARGE'; + + case EvriNetworkUndeliveredSurcharge = 'EVRI_NETWORK_UNDELIVERED_SURCHARGE'; + + case GooInvalidAddressCorrection = 'GOO_INVALID_ADDRESS_CORRECTION'; + case GooIncorrectAddressCorrection = 'GOO_INCORRECT_ADDRESS_CORRECTION'; + case GooGroupCZip = 'GOO_GROUP_CZIP'; + case GooDeliveryAreaSurcharge = 'GOO_DELIVERY_AREA_SURCHARGE'; + case GooExtendedDeliveryAreaSurcharge = 'GOO_EXTENDED_DELIVERY_AREA_SURCHARGE'; + case GooEnergySurcharge = 'GOO_ENERGY_SURCHARGE'; + case GooExtraPiece = 'GOO_EXTRA_PIECE'; + case GooResidentialCharge = 'GOO_RESIDENTIAL_CHARGE'; + case GooRelabelCharge = 'GOO_RELABEL_CHARGE'; + case GooWeekendPerPiece = 'GOO_WEEKEND_PER_PIECE'; + case GooExtraWeight = 'GOO_EXTRA_WEIGHT'; + case GooReturnBaseCharge = 'GOO_RETURN_BASE_CHARGE'; + case GooReturnExtraWeight = 'GOO_RETURN_EXTRA_WEIGHT'; + case GooPeakSurcharge = 'GOO_PEAK_SURCHARGE'; + case GooAdditionalHandling = 'GOO_ADDITIONAL_HANDLING'; + case GooVolumeRebate = 'GOO_VOLUME_REBATE'; + case GooOverMaxLimit = 'GOO_OVER_MAX_LIMIT'; + case GooRemoteDeliveryAreaSurcharge = 'GOO_REMOTE_DELIVERY_AREA_SURCHARGE'; + case GooOffHour = 'GOO_OFF_HOUR'; + case GooVolumeRebateBase = 'GOO_VOLUME_REBATE_BASE'; + case GooResidentialSignature = 'GOO_RESIDENTIAL_SIGNATURE'; + case GooAHDemandSurcharge = 'GOO_AHDEMAND_SURCHARGE'; + case GooOversizeDemandSurcharge = 'GOO_OVERSIZE_DEMAND_SURCHARGE'; + case GooAuditFee = 'GOO_AUDIT_FEE'; + case GooVolumeRebate2 = 'GOO_VOLUME_REBATE_2'; + case GooVolumeRebate3 = 'GOO_VOLUME_REBATE_3'; + case GooUnmappedSurcharge = 'GOO_UNMAPPED_SURCHARGE'; + + case LooDeliveryAreaSurcharge = 'PITNEY_BOWES_DELIVERY_AREA_SURCHARGE'; + case LooFuelSurcharge = 'PITNEY_BOWES_FUEL_SURCHARGE'; + + case FooExpressSaturdayDelivery = 'FOO_EXPRESS_SATURDAY_DELIVERY'; + case FooExpressElevatedRisk = 'FOO_EXPRESS_ELEVATED_RISK'; + case FooExpressEmergencySituation = 'FOO_EXPRESS_EMERGENCY_SITUATION'; + case FooExpressDutiesTaxesPaid = 'FOO_EXPRESS_DUTIES_TAXES_PAID'; + case FooExpressDutyTaxPaid = 'FOO_EXPRESS_DUTY_TAX_PAID'; + case FooExpressFuelSurcharge = 'FOO_EXPRESS_FUEL_SURCHARGE'; + case FooExpressShipmentValueProtection = 'FOO_EXPRESS_SHIPMENT_VALUE_PROTECTION'; + case FooExpressAddressCorrection = 'FOO_EXPRESS_ADDRESS_CORRECTION'; + case FooExpressNeutralDelivery = 'FOO_EXPRESS_NEUTRAL_DELIVERY'; + case FooExpressRemoteAreaPickup = 'FOO_EXPRESS_REMOTE_AREA_PICKUP'; + case FooExpressRemoteAreaDelivery = 'FOO_EXPRESS_REMOTE_AREA_DELIVERY'; + case FooExpressShipmentPreparation = 'FOO_EXPRESS_SHIPMENT_PREPARATION'; + case FooExpressStandardPickup = 'FOO_EXPRESS_STANDARD_PICKUP'; + case FooExpressNonStandardPickup = 'FOO_EXPRESS_NON_STANDARD_PICKUP'; + case FooExpressMonthlyPickxyzervice = 'FOO_EXPRESS_MONTHLY_PICKUP_SERVICE'; + case FooExpressResidentialAddress = 'FOO_EXPRESS_RESIDENTIAL_ADDRESS'; + case FooExpressResidentialDelivery = 'FOO_EXPRESS_RESIDENTIAL_DELIVERY'; + case FooExpressSingleClearance = 'FOO_EXPRESS_SINGLE_CLEARANCE'; + case FooExpressUnderBondGuarantee = 'FOO_EXPRESS_UNDER_BOND_GUARANTEE'; + case FooExpressFormalClearance = 'FOO_EXPRESS_FORMAL_CLEARANCE'; + case FooExpressNonRoutineEntry = 'FOO_EXPRESS_NON_ROUTINE_ENTRY'; + case FooExpressDisbursements = 'FOO_EXPRESS_DISBURSEMENTS'; + case FooExpressDutyTaxImporter = 'FOO_EXPRESS_DUTY_TAX_IMPORTER'; + case FooExpressDutyTaxProcessing = 'FOO_EXPRESS_DUTY_TAX_PROCESSING'; + case FooExpressMultilineEntry = 'FOO_EXPRESS_MULTILINE_ENTRY'; + case FooExpressOtherGovtAgcyBorderControls = 'FOO_EXPRESS_OTHER_GOVT_AGCY_BORDER_CONTROLS'; + case FooExpressPrintedInvoice = 'FOO_EXPRESS_PRINTED_INVOICE'; + case FooExpressObtainingPermitsLicenses = 'FOO_EXPRESS_OBTAINING_PERMITS_LICENSES'; + case FooExpressPermitsLicences = 'FOO_EXPRESS_PERMITS_LICENCES'; + case FooExpressBondedStorage = 'FOO_EXPRESS_BONDED_STORAGE'; + case FooExpressExportDeclaration = 'FOO_EXPRESS_EXPORT_DECLARATION'; + case FooExpressExporterValidation = 'FOO_EXPRESS_EXPORTER_VALIDATION'; + case FooExpressRestrictedDestination = 'FOO_EXPRESS_RESTRICTED_DESTINATION'; + case FooExpressAdditionalDuty = 'FOO_EXPRESS_ADDITIONAL_DUTY'; + case FooExpressImportExportTaxes = 'FOO_EXPRESS_IMPORT_EXPORT_TAXES'; + case FooExpressQuarantineInspection = 'FOO_EXPRESS_QUARANTINE_INSPECTION'; + case FooExpressMerchandiseProcessing = 'FOO_EXPRESS_MERCHANDISE_PROCESSING'; + case FooExpressMerchandiseProcess = 'FOO_EXPRESS_MERCHANDISE_PROCESS'; + case FooExpressImportPenalty = 'FOO_EXPRESS_IMPORT_PENALTY'; + case FooExpressTradeZoneProcess = 'FOO_EXPRESS_TRADE_ZONE_PROCESS'; + case FooExpressRegulatoryCharge = 'FOO_EXPRESS_REGULATORY_CHARGE'; + case FooExpressRegulatoryCharges = 'FOO_EXPRESS_REGULATORY_CHARGES'; + case FooExpressVatOnNonRevenueItem = 'FOO_EXPRESS_VAT_ON_NON_REVENUE_ITEM'; + case FooExpressExciseTax = 'FOO_EXPRESS_EXCISE_TAX'; + case FooExpressImportExportDuties = 'FOO_EXPRESS_IMPORT_EXPORT_DUTIES'; + case FooExpressOversizePieceDimension = 'FOO_EXPRESS_OVERSIZE_PIECE_DIMENSION'; + case FooExpressOversizePiece = 'FOO_EXPRESS_OVERSIZE_PIECE'; + case FooExpressNonStackablePallet = 'FOO_EXPRESS_NON_STACKABLE_PALLET'; + case FooExpressPremium900 = 'FOO_EXPRESS_PREMIUM_9_00'; + case FooExpressPremium1200 = 'FOO_EXPRESS_PREMIUM_12_00'; + case FooExpressOverweightPiece = 'FOO_EXPRESS_OVERWEIGHT_PIECE'; + case FooExpressCommercialGesture = 'FOO_EXPRESS_COMMERCIAL_GESTURE'; + + case PassportTaxes = 'PASSPORT_TAXES'; + case PassportDuties = 'PASSPORT_DUTIES'; + case PassportClearanceFee = 'PASSPORT_CLEARANCE_FEE'; + + case IooProvincialTax = 'IOO_PST'; + case IooGoodsAndServicesTax = 'IOO_GST'; + case IooHarmonizedTax = 'IOO_HST'; + case IooTaxes = 'IOO_TAXES'; + case IooDuties = 'IOO_DUTIES'; + + case FooExpressEuFuel = 'FOO_EXPRESS_EU_FUEL'; + case FooExpressEuRemoteAreaDelivery = 'FOO_EXPRESS_EU_REMOTE_AREA_DELIVERY'; + case FooExpressEuOverWeight = 'FOO_EXPRESS_EU_OVER_WEIGHT'; + +} + +enum SecondEnum: string +{ + + case Duties = 'duties'; + case ProcessingFees = 'processing_fees'; + case Taxes = 'taxes'; + + public function getLabel(): string + { + return match ($this) { + self::Duties => 'duties', + self::ProcessingFees => 'processing fees', + self::Taxes => 'taxes', + }; + } + + public static function fromFirstEnum(FirstEnum $FirstEnum): ?self + { + return match ($FirstEnum) { + FirstEnum::FooExpressExciseTax, + FirstEnum::FooExpressVatOnNonRevenueItem, + FirstEnum::FooExpressImportExportTaxes, + FirstEnum::IooTaxes, + FirstEnum::IooProvincialTax, + FirstEnum::IooHarmonizedTax, + FirstEnum::IooGoodsAndServicesTax, + FirstEnum::PassportTaxes => self::Taxes, + FirstEnum::FooExpressRegulatoryCharges, + FirstEnum::FooExpressRegulatoryCharge, + FirstEnum::FooExpressTradeZoneProcess, + FirstEnum::FooExpressImportPenalty, + FirstEnum::FooExpressMerchandiseProcess, + FirstEnum::FooExpressMerchandiseProcessing, + FirstEnum::FooExpressQuarantineInspection, + FirstEnum::FooExpressBondedStorage, + FirstEnum::FooExpressPermitsLicences, + FirstEnum::FooExpressObtainingPermitsLicenses, + FirstEnum::FooExpressPrintedInvoice, + FirstEnum::FooExpressOtherGovtAgcyBorderControls, + FirstEnum::FooExpressMultilineEntry, + FirstEnum::FooExpressDutyTaxProcessing, + FirstEnum::FooExpressDutyTaxImporter, + FirstEnum::FooExpressDisbursements, + FirstEnum::FooExpressNonRoutineEntry, + FirstEnum::FooExpressFormalClearance, + FirstEnum::FooExpressUnderBondGuarantee, + FirstEnum::FooExpressSingleClearance, + FirstEnum::FooExpressDutyTaxPaid, + FirstEnum::FooExpressDutiesTaxesPaid, + FirstEnum::PassportClearanceFee => self::ProcessingFees, + FirstEnum::FooExpressAdditionalDuty, + FirstEnum::FooExpressImportExportDuties, + FirstEnum::IooDuties, + FirstEnum::PassportDuties => self::Duties, + FirstEnum::XyzSaturdayStopDomestic, + FirstEnum::XyzSaturdayDeliveryAir, + FirstEnum::XyzAdditionalHandling, + FirstEnum::XyzCommercialDomesticAirDeliveryArea, + FirstEnum::XyzCommercialDomesticAirExtendedDeliveryArea, + FirstEnum::XyzCommercialDomesticGroundDeliveryArea, + FirstEnum::XyzCommercialDomesticGroundExtendedDeliveryArea, + FirstEnum::XyzResidentialDomesticAirDeliveryArea, + FirstEnum::XyzResidentialDomesticAirExtendedDeliveryArea, + FirstEnum::XyzResidentialDomesticGroundDeliveryArea, + FirstEnum::XyzResidentialDomesticGroundExtendedDeliveryArea, + FirstEnum::XyzDeliveryAreaSurchargeSurePost, + FirstEnum::XyzDeliveryAreaSurchargeSurePostExtended, + FirstEnum::XyzDeliveryAreaSurchargeOther, + FirstEnum::XyzResidentialSurchargeAir, + FirstEnum::XyzResidentialSurchargeGround, + FirstEnum::XyzSurchargeCodeFuel, + FirstEnum::XyzCod, + FirstEnum::XyzDeliveryConfirmation, + FirstEnum::XyzShipDeliveryConfirmation, + FirstEnum::XyzExtendedArea, + FirstEnum::XyzHazMat, + FirstEnum::XyzDryIce, + FirstEnum::XyzIscSeeds, + FirstEnum::XyzIscPerishables, + FirstEnum::XyzIscTobacco, + FirstEnum::XyzIscPlants, + FirstEnum::XyzIscAlcoholicBeverages, + FirstEnum::XyzIscBiologicalSubstances, + FirstEnum::XyzIscSpecialExceptions, + FirstEnum::XyzHoldForPickup, + FirstEnum::XyzOriginCertificate, + FirstEnum::XyzPrintReturnLabel, + FirstEnum::XyzExportLicenseVerification, + FirstEnum::XyzPrintNMail, + FirstEnum::XyzReturnService1attempt, + FirstEnum::XyzReturnService3attempt, + FirstEnum::XyzSaturdayInternationalProcessingFee, + FirstEnum::XyzElectronicReturnLabel, + FirstEnum::XyzPreparedSedForm, + FirstEnum::XyzLargePackage, + FirstEnum::XyzShipperPaysDutyTax, + FirstEnum::XyzShipperPaysDutyTaxUnpaid, + FirstEnum::XyzExpressPlusSurcharge, + FirstEnum::XyzInsurance, + FirstEnum::XyzShipAdditionalHandling, + FirstEnum::XyzShipperRelease, + FirstEnum::XyzCheckToShipper, + FirstEnum::XyzProactiveResponse, + FirstEnum::XyzGermanPickup, + FirstEnum::XyzGermanRoadTax, + FirstEnum::XyzExtendedAreaPickup, + FirstEnum::XyzReturnOfDocument, + FirstEnum::XyzPeakSeason, + FirstEnum::XyzLargePackageSeasonalSurcharge, + FirstEnum::XyzAdditionalHandlingSeasonalSurchargeDiscontinued, + FirstEnum::XyzShipLargePackage, + FirstEnum::XyzCarbonNeutral, + FirstEnum::XyzImportControl, + FirstEnum::XyzCommercialInvoiceRemoval, + FirstEnum::XyzImportControlElectronicLabel, + FirstEnum::XyzImportControlPrintLabel, + FirstEnum::XyzImportControlPrintAndMailLabel, + FirstEnum::XyzImportControlOnePickupAttemptLabel, + FirstEnum::XyzImportControlThreePickUpAttemptLabel, + FirstEnum::XyzRefrigeration, + FirstEnum::XyzExchangePrintReturnLabel, + FirstEnum::XyzCommittedDeliveryWindow, + FirstEnum::XyzSecuritySurcharge, + FirstEnum::XyzNonMachinableCharge, + FirstEnum::XyzCustomerTransactionFee, + FirstEnum::XyzSurePostNonStandardLength, + FirstEnum::XyzSurePostNonStandardExtraLength, + FirstEnum::XyzSurePostNonStandardCube, + FirstEnum::XyzShipmentCod, + FirstEnum::XyzLiftGateForPickup, + FirstEnum::XyzLiftGateForDelivery, + FirstEnum::XyzDropOffAtXyzFacility, + FirstEnum::XyzPremiumCare, + FirstEnum::XyzOversizePallet, + FirstEnum::XyzFreightDeliverySurcharge, + FirstEnum::XyzFreightPickxyzurcharge, + FirstEnum::XyzDirectToRetail, + FirstEnum::XyzDirectDeliveryOnly, + FirstEnum::XyzNoAccessPoint, + FirstEnum::XyzDeliverToAddresseeOnly, + FirstEnum::XyzDirectToRetailCod, + FirstEnum::XyzRetailAccessPoint, + FirstEnum::XyzElectronicPackageReleaseAuthentication, + FirstEnum::XyzPayAtStore, + FirstEnum::XyzInsideDelivery, + FirstEnum::XyzItemDisposal, + FirstEnum::XyzAddressCorrections, + FirstEnum::XyzNotPreviouslyBilledFee, + FirstEnum::XyzPickxyzurcharge, + FirstEnum::XyzChargeback, + FirstEnum::XyzAdditionalHandlingPeakDemand, + FirstEnum::XyzOtherSurcharge, + FirstEnum::XyzRemoteAreaSurcharge, + FirstEnum::XyzRemoteAreaOtherSurcharge, + FirstEnum::CompanyEconomyResidentialSurchargeLightweight, + FirstEnum::CompanyEconomyDeliverySurchargeLightweight, + FirstEnum::CompanyEconomyExtendedDeliverySurchargeLightweight, + FirstEnum::CompanyStandardResidentialSurchargeLightweight, + FirstEnum::CompanyStandardDeliverySurchargeLightweight, + FirstEnum::CompanyStandardExtendedDeliverySurchargeLightweight, + FirstEnum::CompanyEconomyResidentialSurchargePlus, + FirstEnum::CompanyEconomyDeliverySurchargePlus, + FirstEnum::CompanyEconomyExtendedDeliverySurchargePlus, + FirstEnum::CompanyEconomyPeakSurchargeLightweight, + FirstEnum::CompanyEconomyPeakSurchargePlus, + FirstEnum::CompanyEconomyPeakSurchargeOver5Lbs, + FirstEnum::CompanyStandardResidentialSurchargePlus, + FirstEnum::CompanyStandardDeliverySurchargePlus, + FirstEnum::CompanyStandardExtendedDeliverySurchargePlus, + FirstEnum::CompanyStandardPeakSurchargeLightweight, + FirstEnum::CompanyStandardPeakSurchargePlus, + FirstEnum::CompanyStandardPeakSurchargeOver5Lbs, + FirstEnum::Company2DayResidentialSurcharge, + FirstEnum::Company2DayDeliverySurcharge, + FirstEnum::Company2DayExtendedDeliverySurcharge, + FirstEnum::Company2DayPeakSurcharge, + FirstEnum::CompanyHazmatResidentialSurcharge, + FirstEnum::CompanyHazmatResidentialSurchargeLightweight, + FirstEnum::CompanyHazmatDeliverySurcharge, + FirstEnum::CompanyHazmatDeliverySurchargeLightweight, + FirstEnum::CompanyHazmatExtendedDeliverySurcharge, + FirstEnum::CompanyHazmatExtendedDeliverySurchargeLightweight, + FirstEnum::CompanyHazmatPeakSurchargeLightweight, + FirstEnum::CompanyHazmatPeakSurcharge, + FirstEnum::CompanyHazmatPeakSurchargePlus, + FirstEnum::CompanyHazmatPeakSurchargeOver5Lbs, + FirstEnum::CompanyFuelSurcharge, + FirstEnum::Company2DayAdditionalHandlingSurchargeDimensions, + FirstEnum::Company2DayAdditionalHandlingSurchargeWeight, + FirstEnum::CompanyStandardAdditionalHandlingSurchargeDimensions, + FirstEnum::CompanyStandardAdditionalHandlingSurchargeWeight, + FirstEnum::CompanyEconomyAdditionalHandlingSurchargeDimensions, + FirstEnum::CompanyEconomyAdditionalHandlingSurchargeWeight, + FirstEnum::CompanyHazmatAdditionalHandlingSurchargeDimensions, + FirstEnum::CompanyHazmatAdditionalHandlingSurchargeWeight, + FirstEnum::Company2DayLargePackageSurcharge, + FirstEnum::CompanyStandardLargePackageSurcharge, + FirstEnum::CompanyEconomyLargePackageSurcharge, + FirstEnum::CompanyHazmatLargePackageSurcharge, + FirstEnum::CompanyLargePackagePeakSurcharge, + FirstEnum::CompanyUkSignatureSurcharge, + FirstEnum::AciFuelSurcharge, + FirstEnum::AciUnmanifestedSurcharge, + FirstEnum::AciPeakSurcharge, + FirstEnum::AciOversizeSurcharge, + FirstEnum::AciUltraUrbanSurcharge, + FirstEnum::AciNonStandardSurcharge, + FirstEnum::XyzmiFuelSurcharge, + FirstEnum::XyzmiNonStandardSurcharge, + FirstEnum::FooEcommerceFuelSurcharge, + FirstEnum::FooEcommercePeakSurcharge, + FirstEnum::FooEcommerceOversizeSurcharge, + FirstEnum::FooEcommerceFutureUseSurcharge, + FirstEnum::FooEcommerceDimLengthSurcharge, + FirstEnum::HooFuelSurcharge, + FirstEnum::HooResidentialSurcharge, + FirstEnum::HooDeliverySurcharge, + FirstEnum::HooExtendedDeliverySurcharge, + FirstEnum::MooSmartPostFuelSurcharge, + FirstEnum::MooSmartPostDeliverySurcharge, + FirstEnum::MooSmartPostExtendedDeliverySurcharge, + FirstEnum::MooSmartPostNonMachinableSurcharge, + FirstEnum::MooAdditionalHandlingDomesticDimensionSurcharge, + FirstEnum::MooOversizeSurcharge, + FirstEnum::MooAdditionalHandling, + FirstEnum::MooAdditionalHandlingChargeDimensions, + FirstEnum::MooAdditionalHandlingChargePackage, + FirstEnum::MooAdditionalHandlingChargeWeight, + FirstEnum::MooAdditionalWeightCharge, + FirstEnum::MooAdvancementFee, + FirstEnum::MooAhsDimensions, + FirstEnum::MooAhsWeight, + FirstEnum::MooAlaskaOrHawaiiOrPuertoRicoPkupOrDel, + FirstEnum::MooAppointment, + FirstEnum::MooBox24X24X18DblWalledProductQuantity2, + FirstEnum::MooBox28X28X28DblWalledProductQuantity3, + FirstEnum::MooBoxMultiDepth22X22X22ProductQuantity7, + FirstEnum::MooBrokerDocumentTransferFee, + FirstEnum::MooCallTag, + FirstEnum::MooCustomsOvertimeFee, + FirstEnum::MooDasAlaskaComm, + FirstEnum::MooDasAlaskaResi, + FirstEnum::MooDasComm, + FirstEnum::MooDasExtendedComm, + FirstEnum::MooDasExtendedResi, + FirstEnum::MooDasHawaiiComm, + FirstEnum::MooDasHawaiiResi, + FirstEnum::MooDasRemoteComm, + FirstEnum::MooDasRemoteResi, + FirstEnum::MooDasResi, + FirstEnum::MooDateCertain, + FirstEnum::MooDeclaredValue, + FirstEnum::MooDeclaredValueCharge, + FirstEnum::MooDeliveryAndReturns, + FirstEnum::MooDeliveryAreaSurcharge, + FirstEnum::MooDeliveryAreaSurchargeAlaska, + FirstEnum::MooDeliveryAreaSurchargeExtended, + FirstEnum::MooDeliveryAreaSurchargeHawaii, + FirstEnum::MooElectronicEntryForFormalEntry, + FirstEnum::MooEvening, + FirstEnum::MooExtendedDeliveryArea, + FirstEnum::MooFoodAndDrugAdministrationClearance, + FirstEnum::MooFragileLarge20X20X12ProductQuantity2, + FirstEnum::MooFragileLarge23X17X12ProductQuantity1, + FirstEnum::MooFreeTradeZone, + FirstEnum::MooFuelSurcharge, + FirstEnum::MooHandlingFee, + FirstEnum::MooHoldForPickup, + FirstEnum::MooImportPermitsAndLicensesFee, + FirstEnum::MooPeakAhsCharge, + FirstEnum::MooResidential, + FirstEnum::MooOversizeCharge, + FirstEnum::MooPeakOversizeSurcharge, + FirstEnum::MooAdditionalVat, + FirstEnum::MooGstOnDisbOrAncillaryServiceFees, + FirstEnum::MooHstOnAdvOrAncillaryServiceFees, + FirstEnum::MooHstOnDisbOrAncillaryServiceFees, + FirstEnum::MooIndiaCgst, + FirstEnum::MooIndiaSgst, + FirstEnum::MooMooAdditionalVat, + FirstEnum::MooMooAdditionalDuty, + FirstEnum::MooEgyptVatOnFreight, + FirstEnum::MooDutyAndTaxAmendmentFee, + FirstEnum::MooCustomsDuty, + FirstEnum::MooCstAdditionalDuty, + FirstEnum::MooChinaVatDutyOrTax, + FirstEnum::MooArgentinaExportDuty, + FirstEnum::MooAustraliaGst, + FirstEnum::MooBhFreightVat, + FirstEnum::MooCanadaGst, + FirstEnum::MooCanadaHst, + FirstEnum::MooCanadaHstNb, + FirstEnum::MooCanadaHstOn, + FirstEnum::MooGstSingapore, + FirstEnum::MooBritishColumbiaPst, + FirstEnum::MooDisbursementFee, + FirstEnum::MooVatOnDisbursementFee, + FirstEnum::MooResidentialRuralZone, + FirstEnum::MooOriginalVat, + FirstEnum::MooMexicoIvaFreight, + FirstEnum::MooOtherGovernmentAgencyFee, + FirstEnum::MooCustodyFee, + FirstEnum::MooProcessingFee, + FirstEnum::MooStorageFee, + FirstEnum::MooIndividualFormalEntry, + FirstEnum::MooRebillDuty, + FirstEnum::MooClearanceEntryFee, + FirstEnum::MooCustomsClearanceFee, + FirstEnum::MooRebillVAT, + FirstEnum::MooIdVatOnAncillaries, + FirstEnum::MooPeakSurcharge, + FirstEnum::MooOutOfDeliveryAreaTier, + FirstEnum::MooMerchandiseProcessingFee, + FirstEnum::MooReturnOnCallSurcharge, + FirstEnum::MooUnauthorizedOSSurcharge, + FirstEnum::MooPeakUnauthCharge, + FirstEnum::MooMissingAccountNumber, + FirstEnum::MooHazardousMaterial, + FirstEnum::MooReturnPickupFee, + FirstEnum::MooPeakResiCharge, + FirstEnum::MooSalesTax, + FirstEnum::MooOther, + FirstEnum::ZooFuelSurcharge, + FirstEnum::ZooGoodsAndServicesTaxSurcharge, + FirstEnum::ZooHarmonizedSalesTaxSurcharge, + FirstEnum::ZooProvincialSalesTaxSurcharge, + FirstEnum::ZooPackageRedirectionSurcharge, + FirstEnum::ZooDeliveryConfirmationSurcharge, + FirstEnum::ZooSignatureOptionSurcharge, + FirstEnum::ZooOnDemandPickxyzurcharge, + FirstEnum::ZooOutOfSpecSurcharge, + FirstEnum::ZooAutoBillingSurcharge, + FirstEnum::ZooOversizeNotPackagedSurcharge, + FirstEnum::EvriRelabellingSurcharge, + FirstEnum::EvriNetworkUndeliveredSurcharge, + FirstEnum::GooInvalidAddressCorrection, + FirstEnum::GooIncorrectAddressCorrection, + FirstEnum::GooGroupCZip, + FirstEnum::GooDeliveryAreaSurcharge, + FirstEnum::GooExtendedDeliveryAreaSurcharge, + FirstEnum::GooEnergySurcharge, + FirstEnum::GooExtraPiece, + FirstEnum::GooResidentialCharge, + FirstEnum::GooRelabelCharge, + FirstEnum::GooWeekendPerPiece, + FirstEnum::GooExtraWeight, + FirstEnum::GooReturnBaseCharge, + FirstEnum::GooReturnExtraWeight, + FirstEnum::GooPeakSurcharge, + FirstEnum::GooAdditionalHandling, + FirstEnum::GooVolumeRebate, + FirstEnum::GooOverMaxLimit, + FirstEnum::GooRemoteDeliveryAreaSurcharge, + FirstEnum::GooOffHour, + FirstEnum::GooVolumeRebateBase, + FirstEnum::GooResidentialSignature, + FirstEnum::GooAHDemandSurcharge, + FirstEnum::GooOversizeDemandSurcharge, + FirstEnum::GooAuditFee, + FirstEnum::GooVolumeRebate2, + FirstEnum::GooVolumeRebate3, + FirstEnum::GooUnmappedSurcharge, + FirstEnum::LooDeliveryAreaSurcharge, + FirstEnum::LooFuelSurcharge, + FirstEnum::FooExpressSaturdayDelivery, + FirstEnum::FooExpressElevatedRisk, + FirstEnum::FooExpressEmergencySituation, + FirstEnum::FooExpressFuelSurcharge, + FirstEnum::FooExpressShipmentValueProtection, + FirstEnum::FooExpressAddressCorrection, + FirstEnum::FooExpressNeutralDelivery, + FirstEnum::FooExpressRemoteAreaPickup, + FirstEnum::FooExpressRemoteAreaDelivery, + FirstEnum::FooExpressShipmentPreparation, + FirstEnum::FooExpressStandardPickup, + FirstEnum::FooExpressNonStandardPickup, + FirstEnum::FooExpressMonthlyPickxyzervice, + FirstEnum::FooExpressResidentialAddress, + FirstEnum::FooExpressResidentialDelivery, + FirstEnum::FooExpressExportDeclaration, + FirstEnum::FooExpressExporterValidation, + FirstEnum::FooExpressRestrictedDestination, + FirstEnum::FooExpressOversizePieceDimension, + FirstEnum::FooExpressOversizePiece, + FirstEnum::FooExpressNonStackablePallet, + FirstEnum::FooExpressPremium900, + FirstEnum::FooExpressPremium1200, + FirstEnum::FooExpressOverweightPiece, + FirstEnum::FooExpressEuFuel, + FirstEnum::FooExpressEuOverWeight, + FirstEnum::FooExpressEuRemoteAreaDelivery, + FirstEnum::FooExpressCommercialGesture => null, + }; + } + +} diff --git a/tests/PHPStan/Analyser/data/bug-11283.php b/tests/PHPStan/Analyser/data/bug-11283.php new file mode 100644 index 00000000000..f0c4b3fc17f --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-11283.php @@ -0,0 +1,168 @@ +|TFulfilled)) $onFulfilled + * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected + * @return PromiseInterface<($onRejected is null ? ($onFulfilled is null ? T : TFulfilled) : ($onFulfilled is null ? T|TRejected : TFulfilled|TRejected))> + */ + public function then(?callable $onFulfilled = null, ?callable $onRejected = null): PromiseInterface; + + /** + * @template TThrowable of \Throwable + * @template TRejected + * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected + * @return PromiseInterface + */ + public function catch(callable $onRejected): PromiseInterface; + + /** + * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected + * @return PromiseInterface + */ + public function finally(callable $onFulfilledOrRejected): PromiseInterface; +} + +/** + * @template T + * @param PromiseInterface|T $promiseOrValue + * @return PromiseInterface + */ +function resolve($promiseOrValue): PromiseInterface +{ + return returnMixed(); +} + +class Demonstration +{ + public function parseMessage(): void + { + $params = []; + $packet = []; + $promise = resolve(null); + + $promise->then(function () use (&$packet, &$params) { + if (mt_rand(0, 1)) { + resolve(null)->then( + function () use ($packet, &$params) { + $packet['payload']['type'] = 0; + $this->groupNotify( + $packet, + function () use ($packet, &$params) { + $this->save($packet, $params)->then(function () use ($packet, &$params) { + if ($params['links']) { + $this->handle($params)->then(function ($result) use ($packet) { + if ($result) { + $packet['payload']['preview'] = $result; + } + }); + } + }); + } + ); + } + ); + } else { + $this->call(function () use (&$params) { + $packet['target'] = []; + + $this->asyncAction()->then(function ($value) use (&$packet, &$params) { + if (!$value) { + $packet['payload']['type'] = 0; + $packet['payload']['message'] = ''; + $this->selfNotify($packet); + return; + } + + $packet['payload']['type'] = 0; + $this->groupNotify( + $packet, + function () use ($packet, &$params) { + $this->save($packet, $params)->then(function () use ($packet, &$params) { + if ($params) { + $this->handle($params)->then(function ($result) use ($packet) { + if ($result) { + $packet['payload']['preview'] = $result; + $this->selfNotify($packet); + } + }); + } + }); + } + ); + }); + }); + } + }); + } + + /** + * @return PromiseInterface + */ + private function handle(mixed $params): PromiseInterface + { + return resolve(null); + } + + /** + * @param array $packet + * @param array $params + * @return PromiseInterface + */ + private function save(array $packet, array &$params): PromiseInterface + { + return resolve(0); + } + + /** + * @param array $packet + * @param (callable():void) $callback + * @return bool + */ + public function groupNotify(array $packet, callable $callback): bool + { + return true; + } + + /** + * @param array $packet + * @return bool + */ + public function selfNotify(array $packet): bool + { + return true; + } + + /** + * @return PromiseInterface + */ + private function asyncAction(): PromiseInterface + { + return resolve(''); + } + + /** + * @param callable():void $callback + */ + private function call(callable $callback): void + { + } +} + diff --git a/tests/PHPStan/Analyser/data/bug-11297.php b/tests/PHPStan/Analyser/data/bug-11297.php new file mode 100644 index 00000000000..5bc767581ce --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-11297.php @@ -0,0 +1,251 @@ += 8.1 + +namespace Bug11297; + +class ClassA { + /** @param array $array */ + public static function doSomething(string $string, array $array): void + { + } +} + +enum Icon: string +{ + case CASE1 = 'case1'; + case CASE2 = 'case2'; + case CASE3 = 'case3'; + case CASE4 = 'case4'; + case CASE5 = 'case5'; + case CASE6 = 'case6'; + case CASE7 = 'case7'; + case CASE8 = 'case8'; + case CASE9 = 'case9'; + case CASE10 = 'case10'; + case CASE11 = 'case11'; + case CASE12 = 'case12'; + case CASE13 = 'case13'; + case CASE14 = 'case14'; + case CASE15 = 'case15'; + case CASE16 = 'case16'; + case CASE17 = 'case17'; + case CASE18 = 'case18'; + case CASE19 = 'case19'; + case CASE20 = 'case20'; + case CASE21 = 'case21'; + case CASE22 = 'case22'; + case CASE23 = 'case23'; + case CASE24 = 'case24'; + case CASE25 = 'case25'; + case CASE26 = 'case26'; + case CASE27 = 'case27'; + case CASE28 = 'case28'; + case CASE29 = 'case29'; + case CASE30 = 'case30'; + case CASE31 = 'case31'; + case CASE32 = 'case32'; + case CASE33 = 'case33'; + case CASE34 = 'case34'; + case CASE35 = 'case35'; + case CASE36 = 'case36'; + case CASE37 = 'case37'; + case CASE38 = 'case38'; + case CASE39 = 'case39'; + case CASE40 = 'case40'; + case CASE41 = 'case41'; + case CASE42 = 'case42'; + case CASE43 = 'case43'; + case CASE44 = 'case44'; + case CASE45 = 'case45'; + case CASE46 = 'case46'; + case CASE47 = 'case47'; + case CASE48 = 'case48'; + case CASE49 = 'case49'; + case CASE50 = 'case50'; + case CASE51 = 'case51'; + case CASE52 = 'case52'; + case CASE53 = 'case53'; + case CASE54 = 'case54'; + case CASE55 = 'case55'; + case CASE56 = 'case56'; + case CASE57 = 'case57'; + case CASE58 = 'case58'; + case CASE59 = 'case59'; + case CASE60 = 'case60'; + case CASE61 = 'case61'; + case CASE62 = 'case62'; + case CASE63 = 'case63'; + case CASE64 = 'case64'; + case CASE65 = 'case65'; + case CASE66 = 'case66'; + case CASE67 = 'case67'; + case CASE68 = 'case68'; + case CASE69 = 'case69'; + case CASE70 = 'case70'; + case CASE71 = 'case71'; + case CASE72 = 'case72'; + case CASE73 = 'case73'; + case CASE74 = 'case74'; + case CASE75 = 'case75'; + case CASE76 = 'case76'; + case CASE77 = 'case77'; + case CASE78 = 'case78'; + case CASE79 = 'case79'; + case CASE80 = 'case80'; + case CASE81 = 'case81'; + case CASE82 = 'case82'; + case CASE83 = 'case83'; + case CASE84 = 'case84'; + case CASE85 = 'case85'; + case CASE86 = 'case86'; + case CASE87 = 'case87'; + case CASE88 = 'case88'; + case CASE89 = 'case89'; + case CASE90 = 'case90'; + case CASE91 = 'case91'; + case CASE92 = 'case92'; + case CASE93 = 'case93'; + case CASE94 = 'case94'; + case CASE95 = 'case95'; + case CASE96 = 'case96'; + case CASE97 = 'case97'; + case CASE98 = 'case98'; + case CASE99 = 'case99'; + case CASE100 = 'case100'; + case CASE101 = 'case101'; + case CASE102 = 'case102'; + case CASE103 = 'case103'; + case CASE104 = 'case104'; + case CASE105 = 'case105'; + case CASE106 = 'case106'; + case CASE107 = 'case107'; + case CASE108 = 'case108'; + case CASE109 = 'case109'; + case CASE110 = 'case110'; + case CASE111 = 'case111'; + case CASE112 = 'case112'; + case CASE113 = 'case113'; + case CASE114 = 'case114'; + case CASE115 = 'case115'; + case CASE116 = 'case116'; + case CASE117 = 'case117'; + case CASE118 = 'case118'; + case CASE119 = 'case119'; + case CASE120 = 'case120'; + case CASE121 = 'case121'; + case CASE122 = 'case122'; + case CASE123 = 'case123'; + case CASE124 = 'case124'; + case CASE125 = 'case125'; + case CASE126 = 'case126'; + case CASE127 = 'case127'; + case CASE128 = 'case128'; + case CASE129 = 'case129'; + case CASE130 = 'case130'; + case CASE131 = 'case131'; + case CASE132 = 'case132'; + case CASE133 = 'case133'; + case CASE134 = 'case134'; + case CASE135 = 'case135'; + case CASE136 = 'case136'; + case CASE137 = 'case137'; + case CASE138 = 'case138'; + case CASE139 = 'case139'; + case CASE140 = 'case140'; + case CASE141 = 'case141'; + case CASE142 = 'case142'; + case CASE143 = 'case143'; + case CASE144 = 'case144'; + case CASE145 = 'case145'; + case CASE146 = 'case146'; + case CASE147 = 'case147'; + case CASE148 = 'case148'; + case CASE149 = 'case149'; + case CASE150 = 'case150'; + case CASE151 = 'case151'; + case CASE152 = 'case152'; + case CASE153 = 'case153'; + case CASE154 = 'case154'; + case CASE155 = 'case155'; + case CASE156 = 'case156'; + case CASE157 = 'case157'; + case CASE158 = 'case158'; + case CASE159 = 'case159'; + case CASE160 = 'case160'; + case CASE161 = 'case161'; + case CASE162 = 'case162'; + case CASE163 = 'case163'; + case CASE164 = 'case164'; + case CASE165 = 'case165'; + case CASE166 = 'case166'; + case CASE167 = 'case167'; + case CASE168 = 'case168'; + case CASE169 = 'case169'; + case CASE170 = 'case170'; + case CASE171 = 'case171'; + case CASE172 = 'case172'; + case CASE173 = 'case173'; + case CASE174 = 'case174'; + case CASE175 = 'case175'; + case CASE176 = 'case176'; + case CASE177 = 'case177'; + case CASE178 = 'case178'; + case CASE179 = 'case179'; + case CASE180 = 'case180'; + case CASE181 = 'case181'; + case CASE182 = 'case182'; + case CASE183 = 'case183'; + case CASE184 = 'case184'; + case CASE185 = 'case185'; + case CASE186 = 'case186'; + case CASE187 = 'case187'; + case CASE188 = 'case188'; + case CASE189 = 'case189'; + case CASE190 = 'case190'; + case CASE191 = 'case191'; + case CASE192 = 'case192'; + case CASE193 = 'case193'; + case CASE194 = 'case194'; + case CASE195 = 'case195'; + case CASE196 = 'case196'; + case CASE197 = 'case197'; + case CASE198 = 'case198'; + case CASE199 = 'case199'; + case CASE200 = 'case200'; + + public function getFileIdentifier(): string + { + return match ($this) { + default => $this->value + }; + } + + public function getBackendLabelIdentifier(): string + { + return 'foo:' . $this->getLocallangIdentifier(); + } + + private function getLocallangIdentifier(): string + { + return 'foo.icon.' . $this->value; + } +} + +(static function (string $table): void { + /** + * Add TCA for top bar field in pages. + */ + ClassA::doSomething($table, [ + 'foo' => [ + 'config' => [ + 'items' => [['', ''], ...array_map( + static fn (Icon $icon): array => [ + $icon->getBackendLabelIdentifier(), + $icon->value, + 'foo/' . $icon->getFileIdentifier() . '.svg', + ], + Icon::cases(), + )], + ], + ], + ]); +})('foo'); diff --git a/tests/PHPStan/Analyser/data/bug-11913.php b/tests/PHPStan/Analyser/data/bug-11913.php new file mode 100644 index 00000000000..865023c7252 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-11913.php @@ -0,0 +1,274 @@ + "AF", "name" => "Afghanistan", "d_code" => "0093"); + $countries[] = array("code" => "AL", "name" => "Albania", "d_code" => "00355"); + $countries[] = array("code" => "DZ", "name" => "Algeria", "d_code" => "00213"); + $countries[] = array("code" => "AS", "name" => "American Samoa", "d_code" => "001"); + $countries[] = array("code" => "AD", "name" => "Andorra", "d_code" => "00376"); + $countries[] = array("code" => "AO", "name" => "Angola", "d_code" => "00244"); + $countries[] = array("code" => "AI", "name" => "Anguilla", "d_code" => "001"); + $countries[] = array("code" => "AG", "name" => "Antigua", "d_code" => "001"); + $countries[] = array("code" => "AR", "name" => "Argentina", "d_code" => "0054"); + $countries[] = array("code" => "AM", "name" => "Armenia", "d_code" => "00374"); + $countries[] = array("code" => "AW", "name" => "Aruba", "d_code" => "00297"); + $countries[] = array("code" => "AU", "name" => "Australia", "d_code" => "0061"); + $countries[] = array("code" => "AT", "name" => "Austria", "d_code" => "0043"); + $countries[] = array("code" => "AZ", "name" => "Azerbaijan", "d_code" => "00994"); + $countries[] = array("code" => "BH", "name" => "Bahrain", "d_code" => "00973"); + $countries[] = array("code" => "BD", "name" => "Bangladesh", "d_code" => "00880"); + $countries[] = array("code" => "BB", "name" => "Barbados", "d_code" => "001"); + $countries[] = array("code" => "BY", "name" => "Belarus", "d_code" => "00375"); + $countries[] = array("code" => "BE", "name" => "Belgium", "d_code" => "0032"); + $countries[] = array("code" => "BZ", "name" => "Belize", "d_code" => "00501"); + $countries[] = array("code" => "BJ", "name" => "Benin", "d_code" => "00229"); + $countries[] = array("code" => "BM", "name" => "Bermuda", "d_code" => "001"); + $countries[] = array("code" => "BT", "name" => "Bhutan", "d_code" => "00975"); + $countries[] = array("code" => "BO", "name" => "Bolivia", "d_code" => "00591"); + $countries[] = array("code" => "BA", "name" => "Bosnia and Herzegovina", "d_code" => "00387"); + $countries[] = array("code" => "BW", "name" => "Botswana", "d_code" => "00267"); + $countries[] = array("code" => "BR", "name" => "Brazil", "d_code" => "0055"); + $countries[] = array("code" => "IO", "name" => "British Indian Ocean Territory", "d_code" => "00246"); + $countries[] = array("code" => "VG", "name" => "British Virgin Islands", "d_code" => "001"); + $countries[] = array("code" => "BN", "name" => "Brunei", "d_code" => "00673"); + $countries[] = array("code" => "BG", "name" => "Bulgaria", "d_code" => "00359"); + $countries[] = array("code" => "BF", "name" => "Burkina Faso", "d_code" => "00226"); + $countries[] = array("code" => "MM", "name" => "Burma Myanmar", "d_code" => "0095"); + $countries[] = array("code" => "BI", "name" => "Burundi", "d_code" => "00257"); + $countries[] = array("code" => "KH", "name" => "Cambodia", "d_code" => "00855"); + $countries[] = array("code" => "CM", "name" => "Cameroon", "d_code" => "00237"); + $countries[] = array("code" => "CA", "name" => "Canada", "d_code" => "001"); + $countries[] = array("code" => "CV", "name" => "Cape Verde", "d_code" => "00238"); + $countries[] = array("code" => "KY", "name" => "Cayman Islands", "d_code" => "001"); + $countries[] = array("code" => "CF", "name" => "Central African Republic", "d_code" => "00236"); + $countries[] = array("code" => "TD", "name" => "Chad", "d_code" => "00235"); + $countries[] = array("code" => "CL", "name" => "Chile", "d_code" => "0056"); + $countries[] = array("code" => "CN", "name" => "China", "d_code" => "0086"); + $countries[] = array("code" => "CO", "name" => "Colombia", "d_code" => "0057"); + $countries[] = array("code" => "KM", "name" => "Comoros", "d_code" => "00269"); + $countries[] = array("code" => "CK", "name" => "Cook Islands", "d_code" => "00682"); + $countries[] = array("code" => "CR", "name" => "Costa Rica", "d_code" => "00506"); + $countries[] = array("code" => "CI", "name" => "Côte d'Ivoire", "d_code" => "00225"); + $countries[] = array("code" => "HR", "name" => "Croatia", "d_code" => "00385"); + $countries[] = array("code" => "CU", "name" => "Cuba", "d_code" => "0053"); + $countries[] = array("code" => "CY", "name" => "Cyprus", "d_code" => "00357"); + $countries[] = array("code" => "CZ", "name" => "Czech Republic", "d_code" => "00420"); + $countries[] = array("code" => "CD", "name" => "Democratic Republic of Congo", "d_code" => "00243"); + $countries[] = array("code" => "DK", "name" => "Denmark", "d_code" => "0045"); + $countries[] = array("code" => "DJ", "name" => "Djibouti", "d_code" => "00253"); + $countries[] = array("code" => "DM", "name" => "Dominica", "d_code" => "001"); + $countries[] = array("code" => "DO", "name" => "Dominican Republic", "d_code" => "001"); + $countries[] = array("code" => "EC", "name" => "Ecuador", "d_code" => "00593"); + $countries[] = array("code" => "EG", "name" => "Egypt", "d_code" => "0020"); + $countries[] = array("code" => "SV", "name" => "El Salvador", "d_code" => "00503"); + $countries[] = array("code" => "GQ", "name" => "Equatorial Guinea", "d_code" => "00240"); + $countries[] = array("code" => "ER", "name" => "Eritrea", "d_code" => "00291"); + $countries[] = array("code" => "EE", "name" => "Estonia", "d_code" => "00372"); + $countries[] = array("code" => "ET", "name" => "Ethiopia", "d_code" => "00251"); + $countries[] = array("code" => "FK", "name" => "Falkland Islands", "d_code" => "00500"); + $countries[] = array("code" => "FO", "name" => "Faroe Islands", "d_code" => "00298"); + $countries[] = array("code" => "FM", "name" => "Federated States of Micronesia", "d_code" => "00691"); + $countries[] = array("code" => "FJ", "name" => "Fiji", "d_code" => "00679"); + $countries[] = array("code" => "FI", "name" => "Finland", "d_code" => "00358"); + $countries[] = array("code" => "FR", "name" => "France", "d_code" => "0033"); + $countries[] = array("code" => "GF", "name" => "French Guiana", "d_code" => "00594"); + $countries[] = array("code" => "PF", "name" => "French Polynesia", "d_code" => "00689"); + $countries[] = array("code" => "GA", "name" => "Gabon", "d_code" => "00241"); + $countries[] = array("code" => "GE", "name" => "Georgia", "d_code" => "00995"); + $countries[] = array("code" => "DE", "name" => "Germany", "d_code" => "0049"); + $countries[] = array("code" => "GH", "name" => "Ghana", "d_code" => "00233"); + $countries[] = array("code" => "GI", "name" => "Gibraltar", "d_code" => "00350"); + $countries[] = array("code" => "GR", "name" => "Greece", "d_code" => "0030"); + $countries[] = array("code" => "GL", "name" => "Greenland", "d_code" => "00299"); + $countries[] = array("code" => "GD", "name" => "Grenada", "d_code" => "001"); + $countries[] = array("code" => "GP", "name" => "Guadeloupe", "d_code" => "00590"); + $countries[] = array("code" => "GU", "name" => "Guam", "d_code" => "001"); + $countries[] = array("code" => "GT", "name" => "Guatemala", "d_code" => "00502"); + $countries[] = array("code" => "GN", "name" => "Guinea", "d_code" => "00224"); + $countries[] = array("code" => "GW", "name" => "Guinea-Bissau", "d_code" => "00245"); + $countries[] = array("code" => "GY", "name" => "Guyana", "d_code" => "00592"); + $countries[] = array("code" => "HT", "name" => "Haiti", "d_code" => "00509"); + $countries[] = array("code" => "HN", "name" => "Honduras", "d_code" => "00504"); + $countries[] = array("code" => "HK", "name" => "Hong Kong", "d_code" => "00852"); + $countries[] = array("code" => "HU", "name" => "Hungary", "d_code" => "0036"); + $countries[] = array("code" => "IS", "name" => "Iceland", "d_code" => "00354"); + $countries[] = array("code" => "IN", "name" => "India", "d_code" => "0091"); + $countries[] = array("code" => "ID", "name" => "Indonesia", "d_code" => "0062"); + $countries[] = array("code" => "IR", "name" => "Iran", "d_code" => "0098"); + $countries[] = array("code" => "IQ", "name" => "Iraq", "d_code" => "00964"); + $countries[] = array("code" => "IE", "name" => "Ireland", "d_code" => "00353"); + $countries[] = array("code" => "IL", "name" => "Israel", "d_code" => "00972"); + $countries[] = array("code" => "IT", "name" => "Italy", "d_code" => "0039"); + $countries[] = array("code" => "JM", "name" => "Jamaica", "d_code" => "001"); + $countries[] = array("code" => "JP", "name" => "Japan", "d_code" => "0081"); + $countries[] = array("code" => "JO", "name" => "Jordan", "d_code" => "00962"); + $countries[] = array("code" => "KZ", "name" => "Kazakhstan", "d_code" => "007"); + $countries[] = array("code" => "KE", "name" => "Kenya", "d_code" => "00254"); + $countries[] = array("code" => "KI", "name" => "Kiribati", "d_code" => "00686"); + $countries[] = array("code" => "XK", "name" => "Kosovo", "d_code" => "00381"); + $countries[] = array("code" => "KW", "name" => "Kuwait", "d_code" => "00965"); + $countries[] = array("code" => "KG", "name" => "Kyrgyzstan", "d_code" => "00996"); + $countries[] = array("code" => "LA", "name" => "Laos", "d_code" => "00856"); + $countries[] = array("code" => "LV", "name" => "Latvia", "d_code" => "00371"); + $countries[] = array("code" => "LB", "name" => "Lebanon", "d_code" => "00961"); + $countries[] = array("code" => "LS", "name" => "Lesotho", "d_code" => "00266"); + $countries[] = array("code" => "LR", "name" => "Liberia", "d_code" => "00231"); + $countries[] = array("code" => "LY", "name" => "Libya", "d_code" => "00218"); + $countries[] = array("code" => "LI", "name" => "Liechtenstein", "d_code" => "00423"); + $countries[] = array("code" => "LT", "name" => "Lithuania", "d_code" => "00370"); + $countries[] = array("code" => "LU", "name" => "Luxembourg", "d_code" => "00352"); + $countries[] = array("code" => "MO", "name" => "Macau", "d_code" => "00853"); + $countries[] = array("code" => "MK", "name" => "Macedonia", "d_code" => "00389"); + $countries[] = array("code" => "MG", "name" => "Madagascar", "d_code" => "00261"); + $countries[] = array("code" => "MW", "name" => "Malawi", "d_code" => "00265"); + $countries[] = array("code" => "MY", "name" => "Malaysia", "d_code" => "0060"); + $countries[] = array("code" => "MV", "name" => "Maldives", "d_code" => "00960"); + $countries[] = array("code" => "ML", "name" => "Mali", "d_code" => "00223"); + $countries[] = array("code" => "MT", "name" => "Malta", "d_code" => "00356"); + $countries[] = array("code" => "MH", "name" => "Marshall Islands", "d_code" => "00692"); + $countries[] = array("code" => "MQ", "name" => "Martinique", "d_code" => "00596"); + $countries[] = array("code" => "MR", "name" => "Mauritania", "d_code" => "00222"); + $countries[] = array("code" => "MU", "name" => "Mauritius", "d_code" => "00230"); + $countries[] = array("code" => "YT", "name" => "Mayotte", "d_code" => "00262"); + $countries[] = array("code" => "MX", "name" => "Mexico", "d_code" => "0052"); + $countries[] = array("code" => "MD", "name" => "Moldova", "d_code" => "00373"); + $countries[] = array("code" => "MC", "name" => "Monaco", "d_code" => "00377"); + $countries[] = array("code" => "MN", "name" => "Mongolia", "d_code" => "00976"); + $countries[] = array("code" => "ME", "name" => "Montenegro", "d_code" => "00382"); + $countries[] = array("code" => "MS", "name" => "Montserrat", "d_code" => "001"); + $countries[] = array("code" => "MA", "name" => "Morocco", "d_code" => "00212"); + $countries[] = array("code" => "MZ", "name" => "Mozambique", "d_code" => "00258"); + $countries[] = array("code" => "NA", "name" => "Namibia", "d_code" => "00264"); + $countries[] = array("code" => "NR", "name" => "Nauru", "d_code" => "00674"); + $countries[] = array("code" => "NP", "name" => "Nepal", "d_code" => "00977"); + $countries[] = array("code" => "NL", "name" => "Netherlands", "d_code" => "0031"); + $countries[] = array("code" => "AN", "name" => "Netherlands Antilles", "d_code" => "00599"); + $countries[] = array("code" => "NC", "name" => "New Caledonia", "d_code" => "00687"); + $countries[] = array("code" => "NZ", "name" => "New Zealand", "d_code" => "0064"); + $countries[] = array("code" => "NI", "name" => "Nicaragua", "d_code" => "00505"); + $countries[] = array("code" => "NE", "name" => "Niger", "d_code" => "00227"); + $countries[] = array("code" => "NG", "name" => "Nigeria", "d_code" => "00234"); + $countries[] = array("code" => "NU", "name" => "Niue", "d_code" => "00683"); + $countries[] = array("code" => "NF", "name" => "Norfolk Island", "d_code" => "00672"); + $countries[] = array("code" => "KP", "name" => "North Korea", "d_code" => "00850"); + $countries[] = array("code" => "MP", "name" => "Northern Mariana Islands", "d_code" => "001"); + $countries[] = array("code" => "NO", "name" => "Norway", "d_code" => "0047"); + $countries[] = array("code" => "OM", "name" => "Oman", "d_code" => "00968"); + $countries[] = array("code" => "PK", "name" => "Pakistan", "d_code" => "0092"); + $countries[] = array("code" => "PW", "name" => "Palau", "d_code" => "00680"); + $countries[] = array("code" => "PS", "name" => "Palestine", "d_code" => "00970"); + $countries[] = array("code" => "PA", "name" => "Panama", "d_code" => "00507"); + $countries[] = array("code" => "PG", "name" => "Papua New Guinea", "d_code" => "00675"); + $countries[] = array("code" => "PY", "name" => "Paraguay", "d_code" => "00595"); + $countries[] = array("code" => "PE", "name" => "Peru", "d_code" => "0051"); + $countries[] = array("code" => "PH", "name" => "Philippines", "d_code" => "0063"); + $countries[] = array("code" => "PL", "name" => "Poland", "d_code" => "0048"); + $countries[] = array("code" => "PT", "name" => "Portugal", "d_code" => "00351"); + $countries[] = array("code" => "PR", "name" => "Puerto Rico", "d_code" => "001"); + $countries[] = array("code" => "QA", "name" => "Qatar", "d_code" => "00974"); + $countries[] = array("code" => "CG", "name" => "Republic of the Congo", "d_code" => "00242"); + $countries[] = array("code" => "RE", "name" => "Réunion", "d_code" => "00262"); + $countries[] = array("code" => "RO", "name" => "Romania", "d_code" => "0040"); + $countries[] = array("code" => "RU", "name" => "Russia", "d_code" => "007"); + $countries[] = array("code" => "RW", "name" => "Rwanda", "d_code" => "00250"); + $countries[] = array("code" => "BL", "name" => "Saint Barthélemy", "d_code" => "00590"); + $countries[] = array("code" => "SH", "name" => "Saint Helena", "d_code" => "00290"); + $countries[] = array("code" => "KN", "name" => "Saint Kitts and Nevis", "d_code" => "001"); + $countries[] = array("code" => "MF", "name" => "Saint Martin", "d_code" => "00590"); + $countries[] = array("code" => "PM", "name" => "Saint Pierre and Miquelon", "d_code" => "00508"); + $countries[] = array("code" => "VC", "name" => "Saint Vincent and the Grenadines", "d_code" => "001"); + $countries[] = array("code" => "WS", "name" => "Samoa", "d_code" => "00685"); + $countries[] = array("code" => "SM", "name" => "San Marino", "d_code" => "00378"); + $countries[] = array("code" => "ST", "name" => "São Tomé and Príncipe", "d_code" => "00239"); + $countries[] = array("code" => "SA", "name" => "Saudi Arabia", "d_code" => "00966"); + $countries[] = array("code" => "SN", "name" => "Senegal", "d_code" => "00221"); + $countries[] = array("code" => "RS", "name" => "Serbia", "d_code" => "00381"); + $countries[] = array("code" => "SC", "name" => "Seychelles", "d_code" => "00248"); + $countries[] = array("code" => "SL", "name" => "Sierra Leone", "d_code" => "00232"); + $countries[] = array("code" => "SG", "name" => "Singapore", "d_code" => "0065"); + $countries[] = array("code" => "SK", "name" => "Slovakia", "d_code" => "00421"); + $countries[] = array("code" => "SI", "name" => "Slovenia", "d_code" => "00386"); + $countries[] = array("code" => "SB", "name" => "Solomon Islands", "d_code" => "00677"); + $countries[] = array("code" => "SO", "name" => "Somalia", "d_code" => "00252"); + $countries[] = array("code" => "ZA", "name" => "South Africa", "d_code" => "0027"); + $countries[] = array("code" => "KR", "name" => "South Korea", "d_code" => "0082"); + $countries[] = array("code" => "ES", "name" => "Spain", "d_code" => "0034"); + $countries[] = array("code" => "LK", "name" => "Sri Lanka", "d_code" => "0094"); + $countries[] = array("code" => "LC", "name" => "St. Lucia", "d_code" => "001"); + $countries[] = array("code" => "SD", "name" => "Sudan", "d_code" => "00249"); + $countries[] = array("code" => "SR", "name" => "Suriname", "d_code" => "00597"); + $countries[] = array("code" => "SZ", "name" => "Swaziland", "d_code" => "00268"); + $countries[] = array("code" => "SE", "name" => "Sweden", "d_code" => "0046"); + $countries[] = array("code" => "CH", "name" => "Switzerland", "d_code" => "0041"); + $countries[] = array("code" => "SY", "name" => "Syria", "d_code" => "00963"); + $countries[] = array("code" => "TW", "name" => "Taiwan", "d_code" => "00886"); + $countries[] = array("code" => "TJ", "name" => "Tajikistan", "d_code" => "00992"); + $countries[] = array("code" => "TZ", "name" => "Tanzania", "d_code" => "00255"); + $countries[] = array("code" => "TH", "name" => "Thailand", "d_code" => "0066"); + $countries[] = array("code" => "BS", "name" => "The Bahamas", "d_code" => "001"); + $countries[] = array("code" => "GM", "name" => "The Gambia", "d_code" => "00220"); + $countries[] = array("code" => "TL", "name" => "Timor-Leste", "d_code" => "00670"); + $countries[] = array("code" => "TG", "name" => "Togo", "d_code" => "00228"); + $countries[] = array("code" => "TK", "name" => "Tokelau", "d_code" => "00690"); + $countries[] = array("code" => "TO", "name" => "Tonga", "d_code" => "00676"); + $countries[] = array("code" => "TT", "name" => "Trinidad and Tobago", "d_code" => "001"); + $countries[] = array("code" => "TN", "name" => "Tunisia", "d_code" => "00216"); + $countries[] = array("code" => "TR", "name" => "Turkey", "d_code" => "0090"); + $countries[] = array("code" => "TM", "name" => "Turkmenistan", "d_code" => "00993"); + $countries[] = array("code" => "TC", "name" => "Turks and Caicos Islands", "d_code" => "001"); + $countries[] = array("code" => "TV", "name" => "Tuvalu", "d_code" => "00688"); + $countries[] = array("code" => "UG", "name" => "Uganda", "d_code" => "00256"); + $countries[] = array("code" => "UA", "name" => "Ukraine", "d_code" => "00380"); + $countries[] = array("code" => "AE", "name" => "United Arab Emirates", "d_code" => "00971"); + $countries[] = array("code" => "GB", "name" => "United Kingdom", "d_code" => "0044"); + $countries[] = array("code" => "US", "name" => "United States", "d_code" => "001"); + $countries[] = array("code" => "UY", "name" => "Uruguay", "d_code" => "00598"); + $countries[] = array("code" => "VI", "name" => "US Virgin Islands", "d_code" => "001"); + $countries[] = array("code" => "UZ", "name" => "Uzbekistan", "d_code" => "00998"); + $countries[] = array("code" => "VU", "name" => "Vanuatu", "d_code" => "00678"); + $countries[] = array("code" => "VA", "name" => "Vatican City", "d_code" => "0039"); + $countries[] = array("code" => "VE", "name" => "Venezuela", "d_code" => "0058"); + $countries[] = array("code" => "VN", "name" => "Vietnam", "d_code" => "0084"); + $countries[] = array("code" => "WF", "name" => "Wallis and Futuna", "d_code" => "00681"); + $countries[] = array("code" => "YE", "name" => "Yemen", "d_code" => "00967"); + $countries[] = array("code" => "ZM", "name" => "Zambia", "d_code" => "00260"); + $countries[] = array("code" => "ZW", "name" => "Zimbabwe", "d_code" => "00263"); + return $countries; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-12159.php b/tests/PHPStan/Analyser/data/bug-12159.php new file mode 100644 index 00000000000..d39ae6bd946 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-12159.php @@ -0,0 +1,2681 @@ + TestMatrix::Values[ $Point ][ 0 ]; +$foo = + [ + [ 'val' => $func( 1237123 ) ], + [ 'val' => $func( 4379284 ) ], + [ 'val' => $func( 4534895 ) ], + [ 'val' => $func( 9483754 ) ], + [ 'val' => $func( 8127361 ) ], + [ 'val' => $func( 1287129 ) ], + [ 'val' => $func( 7244590 ) ], + ]; + +//for( $i = 0; $i < 100; $i++ ) +//{ +if( $_GET['a'] < $foo[ 1 ][ 'val' ] ) echo '1'; +if( $_GET['a'] < $foo[ 2 ][ 'val' ] ) echo '2'; +if( $_GET['a'] < $foo[ 3 ][ 'val' ] ) echo '3'; +if( $_GET['a'] < $foo[ 4 ][ 'val' ] ) echo '4'; +if( $_GET['a'] < $foo[ 5 ][ 'val' ] ) echo '5'; +if( $_GET['a'] < $foo[ 6 ][ 'val' ] ) echo '6'; +//} + +class TestMatrix +{ + public const array Values = array ( + 0 => + array ( + 0 => 5874481165396689108, + 1 => 8662405580715299972, + 2 => 1838729323137802481, + 3 => 1296254215171686394, + 4 => 240787718805128243, + 5 => 2569399932576470543, + 6 => 2666865512562476674, + 7 => 7440800791997798335, + 8 => 9017504029234684124, + 9 => 1943700815897404988, + 10 => 4807266916823040232, + 11 => 5651791337534958850, + 12 => 7002607381155865437, + 13 => 4533265986128849713, + 14 => 5376300349620761130, + 15 => 7905874742842521971, + 16 => 909744888026452130, + 17 => 7282766239447087930, + 18 => 1346776530840371545, + 19 => 5241686368013809035, + 20 => 4960581668501873164, + 21 => 4216999787816457923, + 22 => 7206618997006790711, + 23 => 1737316659480734612, + 24 => 1396564421397776612, + 25 => 1225052620751257798, + 26 => 5524782971343881599, + 27 => 2259152306650062736, + 28 => 3668358132158286281, + 29 => 6329278711234406504, + 30 => 1398072019509396341, + 31 => 8955588514252493507, + 32 => 1767105836397175082, + 33 => 7034230021779190326, + 34 => 6905169987039336897, + 35 => 389472364053965244, + 36 => 2784078665352126084, + 37 => 2778618770698283740, + 38 => 1378766762279037262, + 39 => 3618227099446145118, + 40 => 1276484677607692690, + 41 => 3099202919675399195, + 42 => 8794553594722463315, + 43 => 9220965608516075037, + 44 => 464961969218490186, + 45 => 8431789941543532605, + 46 => 2220000829371936407, + 47 => 673824151036998803, + 48 => 5433256145723805103, + 49 => 3825003899632634051, + ), + 1 => + array ( + 0 => 8154052500937462248, + 1 => 5576807385765339137, + 2 => 1100518481621993286, + 3 => 3205600232505774719, + 4 => 239730811793443707, + 5 => 4054412049366275439, + 6 => 941723216813015420, + 7 => 6470087431894049191, + 8 => 2716337345328343897, + 9 => 953683961010207742, + 10 => 2738362684680615246, + 11 => 3535184723439979851, + 12 => 4105453969139039388, + 13 => 1769008182819306978, + 14 => 7161610946609102827, + 15 => 7459169462458964034, + 16 => 7200589149413721938, + 17 => 1842332918081972441, + 18 => 7021770893406632400, + 19 => 8342890679809897170, + 20 => 3229267769836612196, + 21 => 8621895098320821041, + 22 => 8192020378402459973, + 23 => 646879134901493937, + 24 => 7644597118411382877, + 25 => 2669227552611432887, + 26 => 4264746695750690265, + 27 => 830616027307888589, + 28 => 6989343698662199702, + 29 => 220940944081390977, + 30 => 2991501672354298249, + 31 => 8565280316848910077, + 32 => 7453367854425505710, + 33 => 8407476888139000249, + 34 => 9141118524169411532, + 35 => 3417565007599042997, + 36 => 7929540029455947300, + 37 => 6341525159423457135, + 38 => 1136401477976290415, + 39 => 815721375348001867, + 40 => 9122672261212021062, + 41 => 3038993244577792661, + 42 => 8902537870044219933, + 43 => 6742257712143705646, + 44 => 305160917138533628, + 45 => 1944434793172827222, + 46 => 5335522480652404622, + 47 => 6226560700086665665, + 48 => 8307974418320309240, + 49 => 6806303928471061067, + ), + 2 => + array ( + 0 => 4975290592490926991, + 1 => 6131701571914965130, + 2 => 9127520861288523557, + 3 => 1405655716825922037, + 4 => 2953339211295438483, + 5 => 7640526281049794652, + 6 => 1453014071818130187, + 7 => 2738989913949892618, + 8 => 6000021482380697144, + 9 => 1037973965313154250, + 10 => 528984535358733067, + 11 => 3417642461931931383, + 12 => 8343011794702923220, + 13 => 7507168997195646060, + 14 => 1831280245495928841, + 15 => 6774996787168120603, + 16 => 99498811159382374, + 17 => 336866722933543741, + 18 => 8971742337733516403, + 19 => 3959481408560435649, + 20 => 4194447658835901918, + 21 => 4698189036403840281, + 22 => 1868877229552777436, + 23 => 3782558119442101296, + 24 => 8612829831567636140, + 25 => 2999918364775393717, + 26 => 4457456312209359735, + 27 => 1911400307152511590, + 28 => 5342632524118518101, + 29 => 7582753306401387624, + 30 => 2891552232599249434, + 31 => 6722331618838222538, + 32 => 1863871167267174088, + 33 => 4721864064741949167, + 34 => 6921608495105963351, + 35 => 2787258830853121593, + 36 => 6318006494535492932, + 37 => 8758213181123797132, + 38 => 2817595964341381484, + 39 => 2189508344516984329, + 40 => 8595851620765258356, + 41 => 4675797867402162161, + 42 => 8664216558549206169, + 43 => 8392353657675228864, + 44 => 3523827866624970939, + 45 => 3125081307911204903, + 46 => 7613092314757778536, + 47 => 5262826170155900761, + 48 => 5156363701596412744, + 49 => 4334292640529862435, + ), + 3 => + array ( + 0 => 6680271612749645767, + 1 => 1038897265710563469, + 2 => 3125268357134460497, + 3 => 3448035616856209350, + 4 => 2290547007394087177, + 5 => 3202782379344553998, + 6 => 8856642337182845360, + 7 => 7006619529055284271, + 8 => 7469279615622781778, + 9 => 3271987266513004287, + 10 => 5561282669998343625, + 11 => 2124822921183299442, + 12 => 5756164387055634612, + 13 => 5552937428984643025, + 14 => 7064113750641600855, + 15 => 5328246101339893619, + 16 => 7333438201129908387, + 17 => 3828772120818252593, + 18 => 8174834386774866076, + 19 => 7786829975211333555, + 20 => 3981203765539870334, + 21 => 7797235689763652673, + 22 => 4165615128733961575, + 23 => 5981144219284475327, + 24 => 3418001781831286846, + 25 => 1492200888573448114, + 26 => 2317318866594527246, + 27 => 2688445214897280589, + 28 => 8929138296967524205, + 29 => 2942491267302746123, + 30 => 4529371813136470715, + 31 => 8181894960585438448, + 32 => 4403301414553068732, + 33 => 3650365933794415107, + 34 => 1802263228403420039, + 35 => 2837949245046582415, + 36 => 8103859399717457751, + 37 => 6523233038597037591, + 38 => 2417678247431759747, + 39 => 8539067974167032946, + 40 => 7239446630166406222, + 41 => 953227842772238130, + 42 => 2061891981074579091, + 43 => 9197132456777724388, + 44 => 4195535321569363259, + 45 => 7802646953768156569, + 46 => 1214202025857093854, + 47 => 2732892716731283275, + 48 => 6422702740355331603, + 49 => 314586223118274101, + ), + 4 => + array ( + 0 => 8932746737511960046, + 1 => 4420639939134831872, + 2 => 4015851428934836080, + 3 => 226942641444362166, + 4 => 7379063053453580291, + 5 => 5408297350760256023, + 6 => 7097728592049579553, + 7 => 2088253461945304456, + 8 => 2832527342827628633, + 9 => 4095360511140466509, + 10 => 8915545429197506654, + 11 => 7454633280949469211, + 12 => 426687349009436650, + 13 => 7558889905023459316, + 14 => 8409879617073507015, + 15 => 3709130785449676075, + 16 => 3916481028234348945, + 17 => 2080313258004748980, + 18 => 8454584147558376449, + 19 => 955650473035618219, + 20 => 8403398466426708496, + 21 => 7925840390455252607, + 22 => 6538000854800071609, + 23 => 5234246074356462331, + 24 => 1419480003652519257, + 25 => 4717025934655073480, + 26 => 7133440962553291054, + 27 => 1216670874596372868, + 28 => 3415520219011084806, + 29 => 6371251457962253684, + 30 => 7343082864680649875, + 31 => 1922360266759830594, + 32 => 2974660376862656509, + 33 => 858418194500090476, + 34 => 6356554697026476948, + 35 => 5114619950190199429, + 36 => 1904140895976090164, + 37 => 3593944879807201662, + 38 => 5719530069829191694, + 39 => 3031668473907288497, + 40 => 3448169104312841979, + 41 => 8122204554627926094, + 42 => 8518863644712353970, + 43 => 8169769218626969757, + 44 => 1659634164765638384, + 45 => 3477793331064103721, + 46 => 5434872090056290754, + 47 => 4276460341063621887, + 48 => 4640639099260040225, + 49 => 9009468365945428002, + ), + 5 => + array ( + 0 => 4931694814167754074, + 1 => 7183568584903649742, + 2 => 8275777720925639086, + 3 => 8419817439480667175, + 4 => 8604323712237915569, + 5 => 3352541925538437922, + 6 => 4199420257337885962, + 7 => 1106468391590120959, + 8 => 8507355052862836844, + 9 => 4331895772301917877, + 10 => 7920254998068325755, + 11 => 8996973071477628119, + 12 => 455008091719671736, + 13 => 3815293412644646732, + 14 => 436955111200922011, + 15 => 7013986275832485803, + 16 => 5688297970433003962, + 17 => 2011158629907362985, + 18 => 7951175882360459923, + 19 => 5742765642824123605, + 20 => 1216836110798583420, + 21 => 8679387052777060181, + 22 => 1985688926071711354, + 23 => 1831808276654186998, + 24 => 102085979594198107, + 25 => 2340187189218681369, + 26 => 1925730779370056452, + 27 => 4041628961826241780, + 28 => 4907429270936661782, + 29 => 999802994114419710, + 30 => 8230876938618101144, + 31 => 7777792290797940668, + 32 => 8058836789085030797, + 33 => 9145042694186638609, + 34 => 1490700942820470088, + 35 => 8080486113090366780, + 36 => 9012927814276117762, + 37 => 4817168063146379030, + 38 => 5887513675240220051, + 39 => 2170648251352279216, + 40 => 8660441599773259447, + 41 => 2566734480158371883, + 42 => 7877381935713445782, + 43 => 3424535784008708938, + 44 => 6138477295423731789, + 45 => 531408866931128281, + 46 => 8118255972970448317, + 47 => 6658517893844506220, + 48 => 5192765725571041390, + 49 => 4484573374403032898, + ), + 6 => + array ( + 0 => 7817725724153064283, + 1 => 676044540944783015, + 2 => 165795045891931505, + 3 => 8628574277625575660, + 4 => 4623749438938771988, + 5 => 7377760708842913949, + 6 => 4835799984105487685, + 7 => 8736269977412248326, + 8 => 5713305870673689087, + 9 => 1512747349895463886, + 10 => 1297398582506845786, + 11 => 4536497787871480498, + 12 => 7859883546974534383, + 13 => 7451785769304448658, + 14 => 1566047154522047144, + 15 => 2681185467507861604, + 16 => 3282533773867812887, + 17 => 7710783454818853777, + 18 => 757388808200637902, + 19 => 1267453957031758382, + 20 => 3067184561283064874, + 21 => 1075927338235603309, + 22 => 5040384382667600121, + 23 => 4470519589820835295, + 24 => 6446347166686380336, + 25 => 5133211229242848498, + 26 => 4799307086528142991, + 27 => 2417256161533702584, + 28 => 5004748314990362737, + 29 => 5654624457458575102, + 30 => 7831168243158770416, + 31 => 2438361643495966584, + 32 => 3331080805559396049, + 33 => 2332998025596953248, + 34 => 4955322642679292607, + 35 => 2823206402722454329, + 36 => 7864363481035388949, + 37 => 3972282083392565017, + 38 => 7397491981841336255, + 39 => 2077760290151467781, + 40 => 7444037508733373992, + 41 => 5693183530497128762, + 42 => 8635051873130500468, + 43 => 2725415837048413228, + 44 => 8350394208673414293, + 45 => 6573719025342292543, + 46 => 7882248774735967651, + 47 => 3621593747653440124, + 48 => 1381288049786560954, + 49 => 4271094963880511320, + ), + 7 => + array ( + 0 => 7374574356170927085, + 1 => 7717377238321849930, + 2 => 1617648016491363337, + 3 => 3920182728377977038, + 4 => 4864055338550692898, + 5 => 3852374904000741108, + 6 => 8014130603489499273, + 7 => 1266780406787288918, + 8 => 5745877767288766328, + 9 => 3755007514011162686, + 10 => 4988518671877958110, + 11 => 2765009033270152436, + 12 => 2933921152637177103, + 13 => 6289527477470818356, + 14 => 1566901334856634296, + 15 => 3847215702911572949, + 16 => 2464205579185886331, + 17 => 567922664555183884, + 18 => 8419671061374781092, + 19 => 5347381431422400203, + 20 => 2474093747941658240, + 21 => 947490060863904786, + 22 => 7728796299957089994, + 23 => 1958274075678411402, + 24 => 5787113707153405868, + 25 => 4770823972103532340, + 26 => 2782424094528669314, + 27 => 3927604835193670320, + 28 => 5880856123044238820, + 29 => 6247063793366641001, + 30 => 1003445960799983811, + 31 => 189188513499196933, + 32 => 6931085745898288806, + 33 => 5494959985724584020, + 34 => 6299501471987452338, + 35 => 6409426315745727087, + 36 => 6827715490929856161, + 37 => 144065419718686829, + 38 => 3427330871133407325, + 39 => 6708849578158375260, + 40 => 7821502350946541873, + 41 => 2579683792204579398, + 42 => 2174599388328183916, + 43 => 4939750476289377673, + 44 => 6195818835433786206, + 45 => 7844070692861182367, + 46 => 8223755928113469032, + 47 => 4630348997781506319, + 48 => 6784991557794232291, + 49 => 2456684460705773063, + ), + 8 => + array ( + 0 => 4165061665861516758, + 1 => 9208696398120276634, + 2 => 617283688467018612, + 3 => 8866309294196812992, + 4 => 8468066831561872950, + 5 => 5496080959195095216, + 6 => 3043457951940840139, + 7 => 107430864991081073, + 8 => 4854421891895873824, + 9 => 312505545755152719, + 10 => 5466206170978851220, + 11 => 7331656214488538183, + 12 => 8861441230750933712, + 13 => 1440020651481286548, + 14 => 8744438879784230686, + 15 => 7373332827225771759, + 16 => 858317805219293532, + 17 => 4035142104918609164, + 18 => 7415794421717864075, + 19 => 524830805408747363, + 20 => 9104056005409942822, + 21 => 5515188152570953140, + 22 => 7936119942383904460, + 23 => 9196672433903288853, + 24 => 4323078042756619284, + 25 => 8709662277893494773, + 26 => 7774114341997140065, + 27 => 326561711760595822, + 28 => 5659596638817237154, + 29 => 1800665601458267317, + 30 => 4226834709095391595, + 31 => 1934477928162442275, + 32 => 7861332517555509512, + 33 => 7305864724756284932, + 34 => 2107144327061685536, + 35 => 808722588857488630, + 36 => 2539437580044035869, + 37 => 3832604034556654476, + 38 => 4736821570536711823, + 39 => 8426922577642729511, + 40 => 7833992549454389473, + 41 => 1997039369012839251, + 42 => 5639683077508943280, + 43 => 8229475878766589103, + 44 => 2485173465855721469, + 45 => 974771202823843715, + 46 => 7104091963794213783, + 47 => 5736613206714171302, + 48 => 1452529717609521722, + 49 => 2512573977897891429, + ), + 9 => + array ( + 0 => 2723583737373680948, + 1 => 1942679677192434943, + 2 => 4992464429137244820, + 3 => 2108955603623244091, + 4 => 6715661544124588869, + 5 => 6784211158418344847, + 6 => 2174143361816980918, + 7 => 3159957296428237653, + 8 => 4642033571093997804, + 9 => 4516721609521486085, + 10 => 513419668552982043, + 11 => 8225856962710238974, + 12 => 76645791112297512, + 13 => 3838900370577780978, + 14 => 4377406039801675939, + 15 => 4248126498854180353, + 16 => 8514256144540280083, + 17 => 6624238216265012006, + 18 => 5512630561682499018, + 19 => 3151801592612715911, + 20 => 5682544206404299992, + 21 => 625026099893613569, + 22 => 5598008756980903917, + 23 => 4096496250937305812, + 24 => 542097768283614600, + 25 => 4214286372500783945, + 26 => 1065561831812197596, + 27 => 28230230818721266, + 28 => 7776756249499921877, + 29 => 7812792067516739818, + 30 => 1215883148035906041, + 31 => 2293132077185823077, + 32 => 2759052538028995446, + 33 => 5016491194647680439, + 34 => 6818634536467227486, + 35 => 4768244996115591062, + 36 => 7628778154079405816, + 37 => 1512766685186132967, + 38 => 1002281579513027848, + 39 => 4585799281945843823, + 40 => 7731707092844578819, + 41 => 4828769242619016876, + 42 => 2316143876529283991, + 43 => 7528436633751214560, + 44 => 1924628512711298773, + 45 => 6926054778707896318, + 46 => 3389519864922952866, + 47 => 3128371853095208573, + 48 => 50187235618483355, + 49 => 6349194033693131776, + ), + 10 => + array ( + 0 => 6322682526646271316, + 1 => 3095227202547366285, + 2 => 7395278893937465675, + 3 => 5200574266009884104, + 4 => 6279574000505636735, + 5 => 3352978839878696682, + 6 => 9191320712818604654, + 7 => 2262271016363943052, + 8 => 3214808318418256558, + 9 => 7853553360971957989, + 10 => 6297850452490597028, + 11 => 6224291870945590443, + 12 => 907950940123667978, + 13 => 8059430599577153641, + 14 => 3965322572900601193, + 15 => 8152944950051729202, + 16 => 5468985755335978628, + 17 => 6253800414625619123, + 18 => 4796881012575806886, + 19 => 809498396850796356, + 20 => 8761295074351369989, + 21 => 8211306778988175688, + 22 => 6425079682030866983, + 23 => 2208897775637467049, + 24 => 4037060769503045276, + 25 => 5982687341576200957, + 26 => 7321281395460426978, + 27 => 6813789423889591740, + 28 => 8652271626734070437, + 29 => 7655412007544743994, + 30 => 6318582516903548321, + 31 => 8120943312182510842, + 32 => 898459381905385629, + 33 => 1006272515095367404, + 34 => 5853432631494184641, + 35 => 2488930447849334827, + 36 => 5627991830205858315, + 37 => 8435986012941786135, + 38 => 500021810061656317, + 39 => 6086585656093606353, + 40 => 7799777209506835195, + 41 => 2564479240266255407, + 42 => 5830890894601088186, + 43 => 875317478781921464, + 44 => 4890435028615059637, + 45 => 6066524404263227777, + 46 => 8796437456649755382, + 47 => 671650050322048833, + 48 => 2996153661244103038, + 49 => 6141392984453555407, + ), + 11 => + array ( + 0 => 2113829968014464580, + 1 => 3604420855252515310, + 2 => 5566530360687933014, + 3 => 2638942722197379719, + 4 => 6197686530435577362, + 5 => 8804367326165731912, + 6 => 1374734978881384983, + 7 => 4121531290119521118, + 8 => 7025324650905800704, + 9 => 8632620634376756999, + 10 => 3493769733810379690, + 11 => 1446564299587766735, + 12 => 1548774894197112857, + 13 => 8755145460632063828, + 14 => 1599414219607213507, + 15 => 8326310746484899674, + 16 => 1438171968793473616, + 17 => 5739936335339518886, + 18 => 1230631109087403411, + 19 => 6085929453678720567, + 20 => 5517475317864770480, + 21 => 7544841164146387441, + 22 => 4413366135606076191, + 23 => 474656466728891395, + 24 => 1777603850640216995, + 25 => 3913561919378601733, + 26 => 5990372623719211725, + 27 => 8127855600690678186, + 28 => 7991862497915474195, + 29 => 4883200076616379029, + 30 => 5001010733372830540, + 31 => 6545802952205727101, + 32 => 8579592114269580287, + 33 => 1719858225414994089, + 34 => 2914370630968622228, + 35 => 6487456062856131622, + 36 => 1457230405126956623, + 37 => 5450438075766678977, + 38 => 4316797174379978326, + 39 => 356289589153760201, + 40 => 6152162952764411308, + 41 => 2095918233946250545, + 42 => 6846022177534448180, + 43 => 3138034230639707092, + 44 => 9076383662453007017, + 45 => 7766302103119169599, + 46 => 7318895974015143966, + 47 => 7844345536610967416, + 48 => 303771157892538553, + 49 => 1830013023076642241, + ), + 12 => + array ( + 0 => 8296851030827013358, + 1 => 3112251186986342163, + 2 => 1670409722450829600, + 3 => 7761113342030329019, + 4 => 8460561445500753222, + 5 => 4908257398338387298, + 6 => 1778895275579039127, + 7 => 3380500509985904841, + 8 => 5879289665279498918, + 9 => 1553159928549418822, + 10 => 311430609625452179, + 11 => 394936916444712045, + 12 => 5127641876166108248, + 13 => 6568988002955423611, + 14 => 8650085268993266854, + 15 => 5903427408450114483, + 16 => 2263226697604701659, + 17 => 8727279632415987896, + 18 => 3842911696821754254, + 19 => 5490803589488953024, + 20 => 7936352037551275551, + 21 => 1802719271321128297, + 22 => 7959093330975432496, + 23 => 1557009731146154818, + 24 => 1473872816908980020, + 25 => 1418764498156927753, + 26 => 2301176459661145867, + 27 => 2286352418548464686, + 28 => 1194621763940317472, + 29 => 6606061027604696484, + 30 => 8084518688858422568, + 31 => 2208900834543651741, + 32 => 5755194898079572507, + 33 => 7320839167101439960, + 34 => 9029972412529258306, + 35 => 5889791403139418397, + 36 => 6344044519932199509, + 37 => 5662962995408376380, + 38 => 1793535773221710787, + 39 => 6776030508990122856, + 40 => 7477111423046883661, + 41 => 3028777341102868090, + 42 => 4057757640110568728, + 43 => 5986048017637921779, + 44 => 9125552214661206232, + 45 => 7852264129484078269, + 46 => 4446147301234138628, + 47 => 5507063673112794235, + 48 => 6332855026822695011, + 49 => 4020513967214987505, + ), + 13 => + array ( + 0 => 2837617673724062427, + 1 => 7125850334112735147, + 2 => 6063426842568747128, + 3 => 1449956004993771688, + 4 => 8233038711924343980, + 5 => 1624050510578207334, + 6 => 201045653760070683, + 7 => 6425618561397260897, + 8 => 1736775056718544457, + 9 => 4283281796416168155, + 10 => 8943407918198470419, + 11 => 5174416738774162884, + 12 => 8282242448652142434, + 13 => 3483110946752360937, + 14 => 9172098532505635523, + 15 => 4919860276458045393, + 16 => 1508811892472366358, + 17 => 2543702316937780378, + 18 => 5391494775097463950, + 19 => 1646737894557870150, + 20 => 3840251377981664631, + 21 => 5557055980319270631, + 22 => 614458087357624962, + 23 => 3049172204044066528, + 24 => 4147916760406968728, + 25 => 8609446583426508961, + 26 => 2242391100589192563, + 27 => 5436112318641652346, + 28 => 4618310365458346019, + 29 => 2077318216555261390, + 30 => 3059989963664577310, + 31 => 7848793921431254972, + 32 => 1203430412948043756, + 33 => 2729600696821765392, + 34 => 791147694547888137, + 35 => 3707975566214340037, + 36 => 8601861547198440141, + 37 => 8535418355338386385, + 38 => 7608939352612737337, + 39 => 329873792714069411, + 40 => 2476061428301616271, + 41 => 8636330979861967347, + 42 => 4895768550130850937, + 43 => 4385109140267411446, + 44 => 8630975950112663906, + 45 => 6540002935581557630, + 46 => 3308964414877219337, + 47 => 5153842433409053720, + 48 => 253675177384576905, + 49 => 8423529847500341694, + ), + 14 => + array ( + 0 => 6993713031298341935, + 1 => 5326414593476770012, + 2 => 5440814550066802105, + 3 => 141762543875879518, + 4 => 5685816950122979356, + 5 => 3092600055577005256, + 6 => 484524073179592456, + 7 => 3023390118292269707, + 8 => 6864350520979702465, + 9 => 164326004277162557, + 10 => 1061461362432115174, + 11 => 2224051270026522509, + 12 => 6168787883393523744, + 13 => 7674793873689286403, + 14 => 1911946231027664781, + 15 => 8744291606724379208, + 16 => 9014519428529976331, + 17 => 3879593031828012380, + 18 => 619709744505846015, + 19 => 9116163054436980499, + 20 => 7832149942441221423, + 21 => 8108528699446988884, + 22 => 1971792629433296522, + 23 => 2640898620660261083, + 24 => 4826688299073541883, + 25 => 8208909046876680841, + 26 => 5721944470113654305, + 27 => 4086878983333595985, + 28 => 3777491165352231027, + 29 => 8919919327161482714, + 30 => 1411839390869133003, + 31 => 6507835402545136011, + 32 => 6630143811048135593, + 33 => 9162986904570452659, + 34 => 2158137837160408572, + 35 => 8083368029763836496, + 36 => 1089926883319054315, + 37 => 8268575358599231390, + 38 => 8199472199423672208, + 39 => 2280879658381489781, + 40 => 5576217042829441238, + 41 => 1546113314666207528, + 42 => 314235395477009613, + 43 => 1154159462456870581, + 44 => 6430125602104326521, + 45 => 4141336619453788776, + 46 => 8123765325147860838, + 47 => 1072475769909743664, + 48 => 3275082594725811702, + 49 => 35188985155813154, + ), + 15 => + array ( + 0 => 4491251610507865005, + 1 => 5013670103317501847, + 2 => 1908586816547780374, + 3 => 5528080847159743054, + 4 => 5104328648855753448, + 5 => 7599385267220236891, + 6 => 2776409469017349441, + 7 => 4575596226800948948, + 8 => 6369321928571414671, + 9 => 1618971068284703013, + 10 => 6277448308413490415, + 11 => 511988212940164645, + 12 => 3099316290169034108, + 13 => 3954426873623717044, + 14 => 4442835296439196398, + 15 => 8527786574257820049, + 16 => 541480700139692845, + 17 => 7258546318137865130, + 18 => 2111094668206075978, + 19 => 7746803879177003947, + 20 => 807752852058787647, + 21 => 6303558981146631063, + 22 => 1612288856991150333, + 23 => 3477957171986545461, + 24 => 2903449324702960216, + 25 => 4847163341110332855, + 26 => 8152405596867347396, + 27 => 8338399885984045224, + 28 => 5649959999977342668, + 29 => 5720423269116660296, + 30 => 965246675443819514, + 31 => 4402398597112098409, + 32 => 7574584563321041436, + 33 => 5672360046774743378, + 34 => 2546837547808280354, + 35 => 7971394139153078563, + 36 => 7369689550706069809, + 37 => 8866894908552724322, + 38 => 764751270312312614, + 39 => 3417051346281355094, + 40 => 7229557916866124768, + 41 => 7261498631961135330, + 42 => 5400611949698217702, + 43 => 4379197429476731239, + 44 => 944076077759636497, + 45 => 3343096502531647942, + 46 => 1460414845122217807, + 47 => 5886003542955764528, + 48 => 294146151341598816, + 49 => 7553441789861934638, + ), + 16 => + array ( + 0 => 8741958986469974724, + 1 => 6215975541860594564, + 2 => 2030793673351821656, + 3 => 7664541364665664906, + 4 => 8470810402228401978, + 5 => 4313164655146288908, + 6 => 4839977850635283703, + 7 => 4651535922908649829, + 8 => 81623039571201672, + 9 => 5879786151984355685, + 10 => 2652375748969362868, + 11 => 1412377869821067484, + 12 => 7764752987880077980, + 13 => 3232608468180411697, + 14 => 5219774171360183259, + 15 => 276757970441762536, + 16 => 2157050254663254778, + 17 => 4772180464617334572, + 18 => 4850998942845193572, + 19 => 2543311538514698065, + 20 => 8050994584586108828, + 21 => 2815479474551748381, + 22 => 5971023239458235291, + 23 => 4067859276180314903, + 24 => 7748875825149588576, + 25 => 7607843825928354150, + 26 => 1115863343729652284, + 27 => 968665230690300207, + 28 => 2344103572208289990, + 29 => 4915922776603825251, + 30 => 7899341581173719583, + 31 => 3270638032084051342, + 32 => 7922829911756040174, + 33 => 6901237696263042089, + 34 => 103197869659722557, + 35 => 527606972626448062, + 36 => 205932143123493544, + 37 => 4666962621159430172, + 38 => 6025147156756276603, + 39 => 2569017618097790149, + 40 => 2782270428022887692, + 41 => 2110342899579201191, + 42 => 4866511434611918196, + 43 => 8287772446542779705, + 44 => 1240825666152673689, + 45 => 7318857828118583203, + 46 => 7395325360634556807, + 47 => 1537320824630196486, + 48 => 6236055319334356730, + 49 => 8913567671596838634, + ), + 17 => + array ( + 0 => 3043470933854885224, + 1 => 6714301203475713128, + 2 => 860257064799129134, + 3 => 9041321571746388930, + 4 => 288738229336661630, + 5 => 3371616536887951610, + 6 => 1598608002069517570, + 7 => 5345879053451417291, + 8 => 4605770882480547648, + 9 => 8046129185750429146, + 10 => 7471568780314310293, + 11 => 1891596127269858319, + 12 => 2648872195739917662, + 13 => 2923983151863274145, + 14 => 78950419940827592, + 15 => 5925091477994177417, + 16 => 5731829744992297031, + 17 => 4296592622666844395, + 18 => 2419286681494585306, + 19 => 7283688448528986472, + 20 => 3321477450763978371, + 21 => 3064657579201514684, + 22 => 5374614556206587782, + 23 => 9107664630361570410, + 24 => 6890980300156013295, + 25 => 1165636160761295363, + 26 => 7068550182564021171, + 27 => 1118884285637398925, + 28 => 4520356901520518371, + 29 => 3906256068453096126, + 30 => 5334730629419585704, + 31 => 8867104621512809498, + 32 => 3070185485814636491, + 33 => 200199337477590437, + 34 => 4949494895124137875, + 35 => 8951288005981893499, + 36 => 2222242921160594363, + 37 => 4156807003305590083, + 38 => 3482462562024041320, + 39 => 2635205157596707857, + 40 => 840204241790569977, + 41 => 7563496981822937374, + 42 => 1582663658368798766, + 43 => 2736234992581107731, + 44 => 7016727431215779519, + 45 => 4968847729299064149, + 46 => 1216274414653489790, + 47 => 353213425186274929, + 48 => 4727317845209199005, + 49 => 8297576197853361424, + ), + 18 => + array ( + 0 => 159828459226828317, + 1 => 5228910350354088371, + 2 => 3800521216652551335, + 3 => 2253147546468586805, + 4 => 106796071918441752, + 5 => 2814225221080495171, + 6 => 3053238596951743089, + 7 => 4477943349369572147, + 8 => 8952510351557581107, + 9 => 2368476941075762366, + 10 => 561925318975977237, + 11 => 329670233355618662, + 12 => 5208937722910779587, + 13 => 3060450901088187935, + 14 => 4659097015012886378, + 15 => 5039174786713818080, + 16 => 3018568769194342498, + 17 => 1240769854944228955, + 18 => 2817285542073135861, + 19 => 3934900710974648820, + 20 => 8482919410301897152, + 21 => 8481234644320051096, + 22 => 4171591109421777684, + 23 => 5034695506354661667, + 24 => 4092817754517451666, + 25 => 4560986042376585682, + 26 => 3054876512309742094, + 27 => 6753222229261142602, + 28 => 5849041337477188797, + 29 => 7938201530168412349, + 30 => 6670314596868727397, + 31 => 7259960116747972664, + 32 => 2061159009576901210, + 33 => 5516856451150141519, + 34 => 5562142725910270159, + 35 => 4428036293610195147, + 36 => 7825136895944119800, + 37 => 6528157703864613968, + 38 => 7077699025224950556, + 39 => 3958424612440598778, + 40 => 4382670869650741676, + 41 => 4907831461290595051, + 42 => 2955573740056960677, + 43 => 2467864051452085508, + 44 => 2771440083868176870, + 45 => 2126983384946487140, + 46 => 694858885292569525, + 47 => 7420632173785167556, + 48 => 17990672710647105, + 49 => 2041959591437784652, + ), + 19 => + array ( + 0 => 7317139211076919878, + 1 => 1282655490899029874, + 2 => 7762517756959954308, + 3 => 7307406843013483032, + 4 => 8440361575264531800, + 5 => 4557610895832592743, + 6 => 4647166194384492730, + 7 => 7836965747539165421, + 8 => 661449650495111113, + 9 => 5905003857595880068, + 10 => 6058292247968883017, + 11 => 7707813779197067451, + 12 => 2765003876415774360, + 13 => 1642519878811525518, + 14 => 6488644034703432506, + 15 => 443516601408995930, + 16 => 8681252700158220179, + 17 => 7213878451268575925, + 18 => 4957060309915020583, + 19 => 8614133085282346831, + 20 => 4469738621889306141, + 21 => 3619072342991403987, + 22 => 1288952461195174914, + 23 => 3127547882180992688, + 24 => 5243033781121657206, + 25 => 430262612273204082, + 26 => 351924028121170974, + 27 => 290830022617614644, + 28 => 4426032873476367010, + 29 => 3298187746051695086, + 30 => 3300882353921382357, + 31 => 2998867997974943651, + 32 => 6335244123367408722, + 33 => 1562080616401434152, + 34 => 3622026051437015416, + 35 => 3063104137993823287, + 36 => 4908105192604607913, + 37 => 8108507327674564482, + 38 => 8078582610832559796, + 39 => 4545970688996026128, + 40 => 7575511062471729436, + 41 => 6668469679406886222, + 42 => 2055949106569645003, + 43 => 8084940231047228149, + 44 => 7809492702601105062, + 45 => 5958456976930763443, + 46 => 4479320839357515450, + 47 => 1286213746222420831, + 48 => 1329535666848852083, + 49 => 5437370777345146572, + ), + 20 => + array ( + 0 => 4857706934552326839, + 1 => 8604356504209431307, + 2 => 5916200389864426149, + 3 => 1972127778835616323, + 4 => 4466838903146615187, + 5 => 5189584875258487647, + 6 => 8206235570971558685, + 7 => 5664557861400693721, + 8 => 76554600264032963, + 9 => 1375414045028523191, + 10 => 314604821407701077, + 11 => 542962474657268177, + 12 => 3763797168773875653, + 13 => 7696660931594638607, + 14 => 7657860041931331157, + 15 => 3684023238413049415, + 16 => 1288136826482098114, + 17 => 6538391815793689011, + 18 => 1539691100482100899, + 19 => 6697889143180391350, + 20 => 689391216106492212, + 21 => 8558737790467168778, + 22 => 9114955107747374239, + 23 => 3516848329603263424, + 24 => 7951243507168588495, + 25 => 1278745189874536837, + 26 => 1110763008585829835, + 27 => 387695939753230271, + 28 => 6327450490177456303, + 29 => 4763569094147725981, + 30 => 4431527363687509033, + 31 => 2176672561786634376, + 32 => 4103216092069297204, + 33 => 1012903945494380106, + 34 => 6519217886324143112, + 35 => 891551299177755208, + 36 => 5286097396474065445, + 37 => 4872647425260736893, + 38 => 5504723327489075283, + 39 => 5240238322856169756, + 40 => 2121810588737684596, + 41 => 2995943731837790863, + 42 => 6363242933036886665, + 43 => 6437009869752649523, + 44 => 6010597810129509157, + 45 => 6031054356983231858, + 46 => 7604333500356670964, + 47 => 2040711769022116167, + 48 => 1223016982760333922, + 49 => 5656644529208310713, + ), + 21 => + array ( + 0 => 3692883075057948045, + 1 => 8341745748715868269, + 2 => 4153798986434369105, + 3 => 6190685996571843058, + 4 => 4581011959289663915, + 5 => 6889228844290451861, + 6 => 386651216501620503, + 7 => 2641657213163165536, + 8 => 1335417413810890798, + 9 => 1195325223121027856, + 10 => 1950382984503804487, + 11 => 2018980923444633939, + 12 => 4535200343609863955, + 13 => 4532391651609183606, + 14 => 3091765872963829161, + 15 => 1725514701875724129, + 16 => 8802608053136199660, + 17 => 2501886360038703766, + 18 => 7936720140765753419, + 19 => 6148499603267943045, + 20 => 7684043930850667486, + 21 => 7670255701399237573, + 22 => 8188367993869462016, + 23 => 8735440608656363427, + 24 => 5410649862262562695, + 25 => 4925080728400948351, + 26 => 2176929635680360748, + 27 => 4807048413318271132, + 28 => 6010622872835781146, + 29 => 6303972123625327278, + 30 => 8749397688527702840, + 31 => 5314599595601066296, + 32 => 4101592221080075628, + 33 => 5839125295374380379, + 34 => 4446671680471125606, + 35 => 7858211664287691753, + 36 => 5246910991839856164, + 37 => 4482566883724413138, + 38 => 4817024681224994802, + 39 => 7185912174789012378, + 40 => 1962027438001045790, + 41 => 2609804510626860868, + 42 => 4880788808493006624, + 43 => 8013142836916761691, + 44 => 7099794532571876632, + 45 => 5714190209300556809, + 46 => 4074292082754804563, + 47 => 7118110499688626233, + 48 => 3740645108594423970, + 49 => 3319563052739345108, + ), + 22 => + array ( + 0 => 3635597747626063519, + 1 => 2164524562859423435, + 2 => 5400922439277929330, + 3 => 5638755949943251895, + 4 => 345060876821584997, + 5 => 6346953969578339165, + 6 => 1258767325705790159, + 7 => 5557965573836848627, + 8 => 3701462982527702467, + 9 => 617315811096399620, + 10 => 6224692550136567962, + 11 => 6933758326188267012, + 12 => 1349620962154589916, + 13 => 3090293583685603526, + 14 => 3138811343989032784, + 15 => 4085195644063384467, + 16 => 1750741553651055209, + 17 => 1375307368490389063, + 18 => 2676576903521551168, + 19 => 2480373025920539306, + 20 => 2382891362135228642, + 21 => 7945241691905708930, + 22 => 1298017934480368845, + 23 => 5446902565524747023, + 24 => 1729116730968347711, + 25 => 4147150133130736401, + 26 => 1427843070559773159, + 27 => 1780551772808485451, + 28 => 7917259692730601273, + 29 => 7349523907545971585, + 30 => 2123698404678043325, + 31 => 2028478562293619435, + 32 => 3650204844478402782, + 33 => 1048742987380935661, + 34 => 4919093645065853713, + 35 => 4735521395278711667, + 36 => 4263061631352778668, + 37 => 4990281965597796595, + 38 => 6572930134587784857, + 39 => 6345249396950527073, + 40 => 5357728545494608011, + 41 => 2251117625226850611, + 42 => 9094453220809515443, + 43 => 589604802378396739, + 44 => 6612910280471354751, + 45 => 321052347772933560, + 46 => 3531910257691624990, + 47 => 5723107334369389887, + 48 => 1934550046285941562, + 49 => 2408405055455205691, + ), + 23 => + array ( + 0 => 3182544926194816683, + 1 => 4135791120284976973, + 2 => 9038384596036099199, + 3 => 3360257051495387930, + 4 => 3067116657795906868, + 5 => 9189263530066581983, + 6 => 8810029068987713437, + 7 => 4181405060040733093, + 8 => 6789036062736737414, + 9 => 4180258664806222317, + 10 => 5206301288833582003, + 11 => 7404138723681179874, + 12 => 7584189287131670526, + 13 => 2431867746107884339, + 14 => 1875792223611432089, + 15 => 3459055032035616268, + 16 => 86592156086271429, + 17 => 8483421072516128642, + 18 => 8294151068735231921, + 19 => 5802441801608907744, + 20 => 8382169087571134445, + 21 => 6175256394403582016, + 22 => 8680936151108964764, + 23 => 8028075470000659146, + 24 => 3934209999818180592, + 25 => 2376976355793312353, + 26 => 7412806587346857250, + 27 => 3271699019268501922, + 28 => 8643725002057836189, + 29 => 5272966637925117582, + 30 => 1956416735411967379, + 31 => 2276572757067924478, + 32 => 5452481299602682727, + 33 => 2879185636264199317, + 34 => 3746042541108156691, + 35 => 1429252009136254500, + 36 => 2743586749321822426, + 37 => 7671817618041762252, + 38 => 5465526680667937836, + 39 => 1408302065483439410, + 40 => 3146408973387714635, + 41 => 9144752839124785415, + 42 => 3055389789080167063, + 43 => 2920916448116928028, + 44 => 5096541788581167409, + 45 => 9140954567743705011, + 46 => 8334927526779853673, + 47 => 26254271172604416, + 48 => 6044180175352828659, + 49 => 4905444378844812527, + ), + 24 => + array ( + 0 => 8778804630631233758, + 1 => 2128773536485951925, + 2 => 3156292813293586100, + 3 => 5479506868479360061, + 4 => 5255521102514434059, + 5 => 6127102471628856136, + 6 => 3445428007543458351, + 7 => 4552536685857991488, + 8 => 181461191819877432, + 9 => 7659452559481153647, + 10 => 6208548587363259414, + 11 => 871845240942600698, + 12 => 1566686596856397432, + 13 => 5085136758745300568, + 14 => 48239442416834900, + 15 => 5249326187208137968, + 16 => 6679940152503118125, + 17 => 5672910834000683796, + 18 => 5654888840313725373, + 19 => 2964751030779185994, + 20 => 2596948428062872680, + 21 => 3886836164888421968, + 22 => 2801687144774483114, + 23 => 1435564309420727411, + 24 => 7823551093266275640, + 25 => 8317900161982747716, + 26 => 7670105986978675742, + 27 => 3293880832832782226, + 28 => 6852392738548947525, + 29 => 2399226343154695689, + 30 => 4623705354315297526, + 31 => 1337335133852864718, + 32 => 3142692742052820504, + 33 => 1110904463022289965, + 34 => 1709325244942754172, + 35 => 7781064800373664699, + 36 => 5538479197098539926, + 37 => 2601033748890917211, + 38 => 2003881498784293691, + 39 => 2112085745486960080, + 40 => 4310240847154287634, + 41 => 2308476327942257873, + 42 => 4962068776322463085, + 43 => 9219870942954359516, + 44 => 275448173853618795, + 45 => 3636000360048724646, + 46 => 6515795951916562220, + 47 => 6592664636514711945, + 48 => 5553810843268514647, + 49 => 7475257716026832493, + ), + 25 => + array ( + 0 => 3934912217800888461, + 1 => 7374561905709187569, + 2 => 6362524244007135673, + 3 => 7545292000266069826, + 4 => 3688385979393175809, + 5 => 8944760284319862423, + 6 => 5719514110377594126, + 7 => 2687367137215149026, + 8 => 373362793523307917, + 9 => 4037229058581099439, + 10 => 2760450080990531277, + 11 => 1331755606287071328, + 12 => 8903956594658100019, + 13 => 3017060200190361567, + 14 => 9067522733796185567, + 15 => 7841088764654616386, + 16 => 3325815798413485528, + 17 => 2008486325220794910, + 18 => 8175990495435770767, + 19 => 8700862870804434417, + 20 => 3037197994434502453, + 21 => 2612473879337278307, + 22 => 6960714636653288891, + 23 => 2599077756695892188, + 24 => 1117179736310225927, + 25 => 4567773530476414377, + 26 => 4647243747058620445, + 27 => 2321813451349409720, + 28 => 3865738658487181873, + 29 => 605370897901752710, + 30 => 3561298430528888930, + 31 => 482212088563126217, + 32 => 1123821138794575444, + 33 => 3644559737915817503, + 34 => 3169168436100744951, + 35 => 6684837151528598524, + 36 => 949624257943655438, + 37 => 2363265038683742192, + 38 => 6975100778960739566, + 39 => 1088106952368155082, + 40 => 9031071114875912453, + 41 => 7186957180246026588, + 42 => 748047347237757320, + 43 => 1829271522380212151, + 44 => 5948031981348174897, + 45 => 8287940031417741995, + 46 => 2505752838050649804, + 47 => 5099014870862750432, + 48 => 8588087635974285280, + 49 => 6421123552582880483, + ), + 26 => + array ( + 0 => 5075038906546001565, + 1 => 5575772665085918239, + 2 => 7690213268403706123, + 3 => 2561367337985348087, + 4 => 9198633483003604625, + 5 => 8176611681804800368, + 6 => 1034749991224969288, + 7 => 5413951329712953070, + 8 => 6843474764774872589, + 9 => 2988363423107848960, + 10 => 6905745081169982630, + 11 => 3584472635889546143, + 12 => 2868065303409280569, + 13 => 5721763934857011046, + 14 => 51272945170672251, + 15 => 110898137231783043, + 16 => 3261624826775449864, + 17 => 4290905888212127901, + 18 => 3598331731128937800, + 19 => 5485918646765189403, + 20 => 3199925657249673765, + 21 => 4687523998068607431, + 22 => 3547242790293341951, + 23 => 5878605187637781812, + 24 => 1329701316071700626, + 25 => 3852165965733157158, + 26 => 5568308703939857000, + 27 => 712159736152581729, + 28 => 3942040367433932618, + 29 => 7579188707060844698, + 30 => 699748792621735028, + 31 => 8984741049761024565, + 32 => 3630987657323419332, + 33 => 6921833013055677001, + 34 => 5427985014679601453, + 35 => 8808271519225071503, + 36 => 4711070269125981849, + 37 => 3373227369288191129, + 38 => 6126028385690479496, + 39 => 5863162538755040589, + 40 => 260615166567030749, + 41 => 6169978680851501167, + 42 => 4358818732555163540, + 43 => 8518740114556884065, + 44 => 7958754409966373094, + 45 => 573152438257673709, + 46 => 331267994190726417, + 47 => 8356096694878241479, + 48 => 1272080648927188078, + 49 => 8719394796985858664, + ), + 27 => + array ( + 0 => 1713112773270000284, + 1 => 3674491511347012363, + 2 => 2816944677731995110, + 3 => 8169516782327556549, + 4 => 1079881425235210838, + 5 => 7358305538760468281, + 6 => 5817013438134320577, + 7 => 8544277047549920689, + 8 => 2612693494334873504, + 9 => 2410205570754317675, + 10 => 4765074328332257479, + 11 => 3200927192423204576, + 12 => 993571942634740218, + 13 => 4127024137323817041, + 14 => 7931819328137732593, + 15 => 6004980101535875403, + 16 => 2593996430156591924, + 17 => 3344245560034769530, + 18 => 7758136653194498132, + 19 => 8094110195572556176, + 20 => 3118267944711071984, + 21 => 7186275536405421706, + 22 => 7796826921442172507, + 23 => 456647124663036567, + 24 => 2295505108146214194, + 25 => 845993445877474996, + 26 => 2281582727100964735, + 27 => 8590622392767984276, + 28 => 5335525485978198826, + 29 => 6532961240982760621, + 30 => 618136707885506589, + 31 => 2277579219937808739, + 32 => 1847684410351490936, + 33 => 3121950859776251309, + 34 => 1373846454651465108, + 35 => 8429372726308291726, + 36 => 4202058483673705428, + 37 => 2102701678608686168, + 38 => 5292586743616572656, + 39 => 1141103091656692614, + 40 => 2452537960493978322, + 41 => 1799252082873228399, + 42 => 8139542680960213645, + 43 => 2220323688842873613, + 44 => 6085583203942625976, + 45 => 1390191550131234271, + 46 => 2556428103448636739, + 47 => 7978764410120570984, + 48 => 7452825238242091899, + 49 => 4906989274116857274, + ), + 28 => + array ( + 0 => 1462805255444649928, + 1 => 8343560722428820573, + 2 => 3858360165264612091, + 3 => 5987775446304932519, + 4 => 8243926019807501861, + 5 => 259792547847858263, + 6 => 8523293594423809996, + 7 => 1022732337636159834, + 8 => 3213715358666985280, + 9 => 5868573469829409213, + 10 => 8466678775818920229, + 11 => 5868366253057791812, + 12 => 6208045679919712986, + 13 => 4828029670603764478, + 14 => 1536764228551143006, + 15 => 7944654398075334736, + 16 => 6540004857400283412, + 17 => 8356652291598372276, + 18 => 7473778899420566941, + 19 => 12515907380719664, + 20 => 3045657915092005947, + 21 => 9076819206325981963, + 22 => 5523885183662623808, + 23 => 3643583187697051931, + 24 => 6047814813088565655, + 25 => 6607907412556680407, + 26 => 3704065470050326981, + 27 => 4943669158459086917, + 28 => 5364952723168287348, + 29 => 3462662330667826688, + 30 => 8701473005455226322, + 31 => 1758611190548459715, + 32 => 4406707928828976418, + 33 => 4888811657431037264, + 34 => 4957013862266587794, + 35 => 2524559341906780414, + 36 => 7047810700820786417, + 37 => 7771528433217430898, + 38 => 8370077425980690940, + 39 => 6794459757583249402, + 40 => 7352324777543603408, + 41 => 6524367095060281956, + 42 => 5781828331196203330, + 43 => 9003794765183902323, + 44 => 2773806512634632982, + 45 => 2478330167704433223, + 46 => 5133311010011475355, + 47 => 6062915138609666101, + 48 => 1366333151612500973, + 49 => 2633440997389232656, + ), + 29 => + array ( + 0 => 2946701720143929750, + 1 => 979159154486554783, + 2 => 3800430233049834405, + 3 => 2403077969463716904, + 4 => 5684238811566745468, + 5 => 733901519881574856, + 6 => 7982886017501491491, + 7 => 5095751087179294980, + 8 => 5458658444971789613, + 9 => 3558216986214111636, + 10 => 1421140469558251152, + 11 => 5589596901034330396, + 12 => 660126764196440588, + 13 => 1626742210305838928, + 14 => 3004209297107836086, + 15 => 4339709620670315423, + 16 => 4601546315149483637, + 17 => 3300906351479838877, + 18 => 8818742378911532918, + 19 => 7650541207121115820, + 20 => 2467475790644867462, + 21 => 8212973278184867174, + 22 => 6170747021793458782, + 23 => 554473080159560355, + 24 => 8109061402513869721, + 25 => 4935184950522172622, + 26 => 2836070912624371173, + 27 => 5863104186443070794, + 28 => 5066322367034512452, + 29 => 7515904293548439617, + 30 => 859595352069190526, + 31 => 5444872038822103090, + 32 => 3909093526439632101, + 33 => 4778069109418293990, + 34 => 1050678055158717675, + 35 => 6090768910048938533, + 36 => 1999585673717811001, + 37 => 5599213870610749390, + 38 => 5985534876910914488, + 39 => 1280817401435980253, + 40 => 1607456235317077015, + 41 => 4706933717031109339, + 42 => 4063064640509200643, + 43 => 8093028299255604600, + 44 => 5250545038454364236, + 45 => 7822988978679330097, + 46 => 1432284631859890921, + 47 => 6076775734848570758, + 48 => 5016187889233898325, + 49 => 6200896567050378142, + ), + 30 => + array ( + 0 => 886091043385175502, + 1 => 6107304329680384151, + 2 => 4487808133923722915, + 3 => 1572718359237314418, + 4 => 7182589849836822147, + 5 => 8552310449666824121, + 6 => 839834575767730160, + 7 => 3704725190344708521, + 8 => 3419433146617460448, + 9 => 4583683278208878013, + 10 => 4287173717136287019, + 11 => 2023580108484110495, + 12 => 139396265302617537, + 13 => 2695133350856059405, + 14 => 3375601802434923130, + 15 => 7543307316188800487, + 16 => 166137300174459592, + 17 => 2037951619903114622, + 18 => 6556111035886676158, + 19 => 6842491202596981334, + 20 => 6427960512489248432, + 21 => 1366064619968751026, + 22 => 3380087751220567269, + 23 => 1844240660623953672, + 24 => 8917750134472624943, + 25 => 3529706961223209031, + 26 => 413567163584414095, + 27 => 7204467989140882562, + 28 => 2600697917552335595, + 29 => 5504588681600388754, + 30 => 5185102754012983553, + 31 => 8437022723812659702, + 32 => 8946155770277578791, + 33 => 5364720908803041297, + 34 => 561598278573040523, + 35 => 2372698569561196055, + 36 => 4633419157760179115, + 37 => 3220279843598497436, + 38 => 155088913438442781, + 39 => 4858459018003785580, + 40 => 2683868126975220053, + 41 => 8232077000531421659, + 42 => 5622386414546408187, + 43 => 3723224767708117380, + 44 => 681397607067024437, + 45 => 3412495988269800265, + 46 => 5291514015537221343, + 47 => 4827703663950925572, + 48 => 465582164685264367, + 49 => 185016645248110044, + ), + 31 => + array ( + 0 => 8937537024875823665, + 1 => 1710633894284092377, + 2 => 8894642741914578266, + 3 => 8664119568507171411, + 4 => 2379779599812168746, + 5 => 4205412394192548097, + 6 => 7956809385605578280, + 7 => 8996315485331930942, + 8 => 6111233478685486620, + 9 => 8498569945704516150, + 10 => 2297507561583664303, + 11 => 8972169406416037499, + 12 => 1195619691522435232, + 13 => 4717523340848578881, + 14 => 2232481570914083203, + 15 => 3150101794125719823, + 16 => 6354655699945953482, + 17 => 4318642052172430270, + 18 => 5106084537983843572, + 19 => 1664777159510717072, + 20 => 2751967262693138443, + 21 => 5773248984841535745, + 22 => 4209805512870706679, + 23 => 898477103160193176, + 24 => 4666007108426825973, + 25 => 7211869303597657401, + 26 => 2666974192884884367, + 27 => 3480320594345135329, + 28 => 7950389503094974352, + 29 => 1336265817527650754, + 30 => 1310171618122281865, + 31 => 2291592408450733899, + 32 => 8959026177580877450, + 33 => 6740618986473816432, + 34 => 2615501683646827626, + 35 => 8729274792135371503, + 36 => 7327723571053828489, + 37 => 2576476113940077551, + 38 => 1363992834319357767, + 39 => 6831197456638087042, + 40 => 4166364003648427849, + 41 => 3320269676092112238, + 42 => 1124856159597645905, + 43 => 6031181692767874674, + 44 => 587104996978489946, + 45 => 4609207886116121379, + 46 => 8030301603141448722, + 47 => 8714941587912486385, + 48 => 2397527085071463971, + 49 => 8713607253404744721, + ), + 32 => + array ( + 0 => 7361044476014135852, + 1 => 5943379752510709458, + 2 => 7063923696520971270, + 3 => 1098056062291977944, + 4 => 8751701111653162376, + 5 => 8299307866581014768, + 6 => 531487442231113133, + 7 => 800424898181663787, + 8 => 3572053471303813275, + 9 => 5820132396104405712, + 10 => 5231045148117457196, + 11 => 8794966624701729985, + 12 => 4426083511481337255, + 13 => 6684150774213996097, + 14 => 6195586616970758831, + 15 => 4540547196657677940, + 16 => 3176763528575786006, + 17 => 3016704037695981978, + 18 => 6744125090676683568, + 19 => 7314666039928310381, + 20 => 6776756960956103555, + 21 => 2819577541088759121, + 22 => 808394245928260098, + 23 => 7623836821615698462, + 24 => 9181513438115673210, + 25 => 4841213581850083788, + 26 => 1702688065381194280, + 27 => 5055789798320038739, + 28 => 3380105065975209047, + 29 => 4599440295762820917, + 30 => 9177830387841628385, + 31 => 6834565555694329853, + 32 => 8205003401511565956, + 33 => 270865630133328421, + 34 => 3209340440005987283, + 35 => 6274281444150890611, + 36 => 6624332540249377414, + 37 => 2587527519812771104, + 38 => 7332647062080436425, + 39 => 5005771960338902691, + 40 => 3468699152815339036, + 41 => 1049194951778930910, + 42 => 3935584475848725335, + 43 => 9085753827045089064, + 44 => 9005661771391728938, + 45 => 5200913379481214357, + 46 => 3232030195284048767, + 47 => 7473765017672637593, + 48 => 8372990784366189599, + 49 => 900533435598411787, + ), + 33 => + array ( + 0 => 8594859403573976797, + 1 => 1056469051697018343, + 2 => 7981819807984249663, + 3 => 6700723553123759699, + 4 => 7901581591457502220, + 5 => 1310800509390325152, + 6 => 499750275117256505, + 7 => 1071702412840450245, + 8 => 3633047946110581667, + 9 => 6585929724644917875, + 10 => 3416110053601876100, + 11 => 4136922603327478165, + 12 => 1198179981647639256, + 13 => 5364443461276255613, + 14 => 2584348601509212450, + 15 => 5120324315937730250, + 16 => 522836777497002224, + 17 => 552034138319415545, + 18 => 4587724350149825427, + 19 => 5710345816705425453, + 20 => 2214162093303859919, + 21 => 7551406637754997327, + 22 => 801129753984345927, + 23 => 1694443285187760235, + 24 => 1607467601520276272, + 25 => 2446055389537726020, + 26 => 1269354020728556364, + 27 => 7711661596009824915, + 28 => 9071667294651872920, + 29 => 4913652187114691065, + 30 => 3050691115879208133, + 31 => 6934534687990289192, + 32 => 6067912219752470094, + 33 => 8220841418446711910, + 34 => 972116675376438178, + 35 => 1344284661582616006, + 36 => 1513685892785327687, + 37 => 164825221202889849, + 38 => 68873197765246129, + 39 => 6777363252419567909, + 40 => 825244377168104549, + 41 => 2681971304420594537, + 42 => 3883311224134497028, + 43 => 2672973131901906080, + 44 => 6820460877454352312, + 45 => 3037320540320603458, + 46 => 3664002611712155615, + 47 => 6952694747682406149, + 48 => 2596464038043400667, + 49 => 7366177260837591685, + ), + 34 => + array ( + 0 => 292350062840987499, + 1 => 7344240818539750031, + 2 => 1609631560856080955, + 3 => 7228986135093966777, + 4 => 8608191835886862036, + 5 => 1163066080309899072, + 6 => 70532433777463622, + 7 => 924319004301312418, + 8 => 2140581494331315574, + 9 => 7169352686836314056, + 10 => 638443241571752306, + 11 => 853780255615345105, + 12 => 1739147682244541523, + 13 => 8567050146095229043, + 14 => 4779753847101001513, + 15 => 5875986820860264955, + 16 => 4779366679965644631, + 17 => 3400913573370824391, + 18 => 6562992562650988324, + 19 => 1686033803026870867, + 20 => 3253521295475704978, + 21 => 5825470707331639173, + 22 => 1796220638478598798, + 23 => 7270350964116185434, + 24 => 991647800200356728, + 25 => 3606088830973856550, + 26 => 443145163029070989, + 27 => 7183190472191538757, + 28 => 15901392383005115, + 29 => 5758362578091923125, + 30 => 8971571545023320382, + 31 => 1971232438561079318, + 32 => 1430868415766661534, + 33 => 3332871680198107404, + 34 => 7743844596465737135, + 35 => 6711974713948763843, + 36 => 7944739695979211083, + 37 => 3612624505570525766, + 38 => 6683708597460602577, + 39 => 4247736755630511721, + 40 => 448594595469079611, + 41 => 4045026055920591555, + 42 => 2292968395929078788, + 43 => 6306296644449068379, + 44 => 3706306833466702788, + 45 => 6665090138939911651, + 46 => 7888274755113851365, + 47 => 6086132437729850665, + 48 => 3839356044209629608, + 49 => 985183048708961512, + ), + 35 => + array ( + 0 => 3325224500063830265, + 1 => 8065460522493303762, + 2 => 2150977162718404844, + 3 => 2513095501676670864, + 4 => 8233290220021652200, + 5 => 8463376693561504977, + 6 => 6027691299865433222, + 7 => 4331413006856090578, + 8 => 2113829432426161123, + 9 => 1835559938513239524, + 10 => 3760589369569864168, + 11 => 1322344057131535225, + 12 => 3357990062355066404, + 13 => 4121143615077418688, + 14 => 7327001177941823182, + 15 => 9173437920051811149, + 16 => 7016399979746488251, + 17 => 1850523048176725335, + 18 => 3983576576818988739, + 19 => 5840312242176026548, + 20 => 1259214195820192258, + 21 => 6447647888325876110, + 22 => 4470490824147858804, + 23 => 6784267568304408636, + 24 => 821472665125293996, + 25 => 664019338943997056, + 26 => 4076926184150142025, + 27 => 4319387561386893749, + 28 => 8201171442534002237, + 29 => 5644788835480447906, + 30 => 2649447979175035529, + 31 => 2468996022215338736, + 32 => 5728463485280084198, + 33 => 8394329974141246714, + 34 => 1352483190536383684, + 35 => 8736243844338540400, + 36 => 790017721772835965, + 37 => 6338377763947825681, + 38 => 4264781310792118564, + 39 => 2705874621155713282, + 40 => 2593771310831765496, + 41 => 6634404399979259606, + 42 => 1294697555944562153, + 43 => 7529861579645268978, + 44 => 2078202749952120215, + 45 => 1396951686711735132, + 46 => 7171446141795263687, + 47 => 1516242630777191319, + 48 => 2210141497417437861, + 49 => 2744225556700338124, + ), + 36 => + array ( + 0 => 4600032135784053351, + 1 => 6713153269903552616, + 2 => 1524432997499412451, + 3 => 9085663892181184132, + 4 => 5140890333166193573, + 5 => 6415370570842750449, + 6 => 605209017130950974, + 7 => 778544994861874783, + 8 => 3713470051168290047, + 9 => 6851658133011496782, + 10 => 7521089360523036379, + 11 => 55470468240461548, + 12 => 4424723957480851091, + 13 => 3847530157992312256, + 14 => 8823616067821477758, + 15 => 8222436034397097533, + 16 => 2778414665128527248, + 17 => 7369251459457795788, + 18 => 4071388805764854010, + 19 => 4287747405081384406, + 20 => 6793671831132673172, + 21 => 3114148111762093180, + 22 => 384788139844541605, + 23 => 8249529710893372789, + 24 => 2157714201190551670, + 25 => 3314092267069056806, + 26 => 5433532917470695439, + 27 => 4060442883699127140, + 28 => 8771445583039981773, + 29 => 660319066543258122, + 30 => 1439816300286172314, + 31 => 7548093856347548369, + 32 => 1176802104448457513, + 33 => 2151633963287867818, + 34 => 7069149822341864080, + 35 => 3586634261392759215, + 36 => 2115719774775525555, + 37 => 3750140748264703566, + 38 => 5440490869326034310, + 39 => 5562736766219798862, + 40 => 8671375179968291392, + 41 => 499467303889880326, + 42 => 3052671933762117788, + 43 => 4654562233905362880, + 44 => 246193436748305982, + 45 => 6081020084404882682, + 46 => 1890761200179428934, + 47 => 847208909396042167, + 48 => 660301253897618064, + 49 => 6043165264656513894, + ), + 37 => + array ( + 0 => 6757639381915063463, + 1 => 4555324169353791928, + 2 => 8453433396043507231, + 3 => 7367975479284018964, + 4 => 2045542141502434678, + 5 => 2417676962307568300, + 6 => 186796869025639582, + 7 => 6246410055497566153, + 8 => 5849524973108094068, + 9 => 7106427541300957855, + 10 => 7262467490409045349, + 11 => 2625620544100850907, + 12 => 5171818870073954920, + 13 => 4623173366355609469, + 14 => 6630131502569099114, + 15 => 440063833278550381, + 16 => 6849776851137649663, + 17 => 2923628760438352403, + 18 => 5161648914320285977, + 19 => 9012034856361683200, + 20 => 4809767844500753446, + 21 => 635793370674531070, + 22 => 8444782472750918628, + 23 => 625119645145838644, + 24 => 1711050135195889262, + 25 => 6050146214025761878, + 26 => 2961578381937462178, + 27 => 4950745578012323237, + 28 => 8058763614061937163, + 29 => 6706111980476478039, + 30 => 5630792510411418295, + 31 => 8540298519551869302, + 32 => 5260738543895906421, + 33 => 5752971984351257314, + 34 => 1029160814473166884, + 35 => 1070704459591052615, + 36 => 3163994785792740338, + 37 => 1720500792367303567, + 38 => 4882806516087351766, + 39 => 8332253764632666699, + 40 => 5408659686407782182, + 41 => 5747746595516938623, + 42 => 3091560264708997801, + 43 => 5031101333688462343, + 44 => 8668987231476535653, + 45 => 5512602314817607471, + 46 => 7034669407608555298, + 47 => 2753102589796145363, + 48 => 1040884794404786919, + 49 => 3301428685472618392, + ), + 38 => + array ( + 0 => 5806979224365754074, + 1 => 1823229587162456230, + 2 => 2409728391803915007, + 3 => 3100954313368161394, + 4 => 6748311504469801793, + 5 => 2356721932680740467, + 6 => 2902595942118706670, + 7 => 9051556021252197471, + 8 => 8962436333537015158, + 9 => 1517751113887997394, + 10 => 7225950201013444459, + 11 => 2546087118437497882, + 12 => 4762377893858011208, + 13 => 779517291694285424, + 14 => 591839542358627284, + 15 => 5367686008521738386, + 16 => 783759746685788842, + 17 => 6116167441793213306, + 18 => 365815152326631591, + 19 => 8538677316958860389, + 20 => 5763153366233756599, + 21 => 5172130961491337193, + 22 => 6476396834007136821, + 23 => 6029836709564845298, + 24 => 408859033973015916, + 25 => 2209578524914201998, + 26 => 1127460121968579950, + 27 => 4246938370582055905, + 28 => 7297154488844828783, + 29 => 887923979202184226, + 30 => 3797040851850177616, + 31 => 8422393952121634468, + 32 => 20093478403899945, + 33 => 4886029618655351877, + 34 => 1864670258343019198, + 35 => 6183162109700895400, + 36 => 8119022212844878386, + 37 => 6370184042463066692, + 38 => 2157074710623202259, + 39 => 5195630894378703024, + 40 => 8360267727451888827, + 41 => 5613959301389216697, + 42 => 9200021631961180630, + 43 => 3011698433767435578, + 44 => 2646864648891248756, + 45 => 875594231654088324, + 46 => 5829254964574199142, + 47 => 5122073606137572977, + 48 => 6311992841960630320, + 49 => 3643912288953336149, + ), + 39 => + array ( + 0 => 2016566775146603089, + 1 => 8155079696619330380, + 2 => 2349389095752690292, + 3 => 4151708271097970529, + 4 => 5956829747782558827, + 5 => 8010100026456592115, + 6 => 2505786602051303335, + 7 => 4300295331001627854, + 8 => 6463313572684094538, + 9 => 3188827801685229116, + 10 => 7166293507027402765, + 11 => 5308514333273976656, + 12 => 4329555584359014245, + 13 => 5827346015406135785, + 14 => 6082988395039652687, + 15 => 2040516223980318253, + 16 => 2355417926414154923, + 17 => 4421881569720670438, + 18 => 1254048473373079942, + 19 => 143797357942920964, + 20 => 927159441847638900, + 21 => 9125656825790404665, + 22 => 3124874662529471393, + 23 => 237811715952482964, + 24 => 4997756459605186732, + 25 => 7348703874299424624, + 26 => 3127587511289385911, + 27 => 1838541085162730889, + 28 => 4971047307131513593, + 29 => 4496474097197643920, + 30 => 367900424813379579, + 31 => 6775300006857949729, + 32 => 7619709866842274577, + 33 => 2775169379458413451, + 34 => 5284696862615186585, + 35 => 98821901901066233, + 36 => 17527048592384211, + 37 => 4082619363789565760, + 38 => 1364416818122311591, + 39 => 8702556109554689709, + 40 => 7532793199729130150, + 41 => 4429646224542368281, + 42 => 8073534022127423854, + 43 => 6676615686384802225, + 44 => 919929188796408866, + 45 => 286463990828219372, + 46 => 8005591956436239675, + 47 => 3561122318417636367, + 48 => 7141613405689295298, + 49 => 4674503104866902121, + ), + 40 => + array ( + 0 => 3813891411377184995, + 1 => 7632928882910031881, + 2 => 1768137945981350311, + 3 => 6967634063234579249, + 4 => 2797976415019455260, + 5 => 7699168543238033240, + 6 => 7432355352439791743, + 7 => 3645360421841482982, + 8 => 8718943265536988858, + 9 => 7860220420066677853, + 10 => 4763524853016814130, + 11 => 746840427234091900, + 12 => 5163828695552919478, + 13 => 1914579265302922277, + 14 => 689044418060530410, + 15 => 3618489164297541063, + 16 => 61740947671020857, + 17 => 69467365830002889, + 18 => 2671124054414225336, + 19 => 6973968054449700665, + 20 => 5299840293325810092, + 21 => 4406112937255197737, + 22 => 7381541188822397852, + 23 => 3851762677347053740, + 24 => 7774469060249240663, + 25 => 6570726928612528603, + 26 => 3395723399289035971, + 27 => 93132544109401309, + 28 => 4181666026703237142, + 29 => 4173220807245945620, + 30 => 1233658091284053386, + 31 => 7500417950540395060, + 32 => 5162558696816248917, + 33 => 4738704079029496989, + 34 => 5295465061085161680, + 35 => 2592686572074882270, + 36 => 5178062672665528753, + 37 => 3178681861046476155, + 38 => 8142717135943049359, + 39 => 7783366835369323136, + 40 => 4456894141017658808, + 41 => 7842953574286147550, + 42 => 6810660917429813178, + 43 => 1554967904521840183, + 44 => 2713208514599819836, + 45 => 8532571816947514100, + 46 => 2089061501092911099, + 47 => 5321751266006750346, + 48 => 4895100493652081813, + 49 => 7234927795872127236, + ), + 41 => + array ( + 0 => 570088149450372795, + 1 => 1164232867661654054, + 2 => 2051552701357333167, + 3 => 5748419436007641146, + 4 => 7783682776645521105, + 5 => 6819552605786190114, + 6 => 7318884777199516126, + 7 => 5612491547583719061, + 8 => 763362897480930168, + 9 => 2463527279394751288, + 10 => 2611183880210585068, + 11 => 2986123354152687234, + 12 => 536686882744942805, + 13 => 5785237831191992332, + 14 => 2353350353624615635, + 15 => 461563559902372411, + 16 => 3175928654331211916, + 17 => 8080764706949616609, + 18 => 1410104464983705407, + 19 => 3262924143780834586, + 20 => 302129610278924770, + 21 => 3322796116246466854, + 22 => 4557521703859536401, + 23 => 3106092074572377085, + 24 => 4061779031248296017, + 25 => 1052804171374219391, + 26 => 2933561146296323762, + 27 => 1547346571335950347, + 28 => 6670520874064353354, + 29 => 283284163449062547, + 30 => 5896134536118292404, + 31 => 2209186875345740824, + 32 => 7444825709765803627, + 33 => 8953938364148905200, + 34 => 529033946703848914, + 35 => 7617202261886253770, + 36 => 9002313668944222518, + 37 => 4420623052744828643, + 38 => 2815968007325006508, + 39 => 2897293259084092647, + 40 => 7647576686317618160, + 41 => 7857788746596263074, + 42 => 6613528439398696350, + 43 => 4549926203279553663, + 44 => 415197260070137892, + 45 => 353967515100095697, + 46 => 1581348573539914790, + 47 => 4575328744085652766, + 48 => 5652419264096532247, + 49 => 7564682658483551039, + ), + 42 => + array ( + 0 => 3368031215514411691, + 1 => 6403987853643742458, + 2 => 7829107364149630452, + 3 => 2525493651196271018, + 4 => 2605186910814181395, + 5 => 757360054341229592, + 6 => 4614500769664121530, + 7 => 2773523826174019485, + 8 => 785515330228690897, + 9 => 1678326496442532536, + 10 => 4767587424228283278, + 11 => 1566791991750875373, + 12 => 4194593116166275321, + 13 => 101803838930387949, + 14 => 6025597034517161086, + 15 => 9039555063501814438, + 16 => 7516747679772046036, + 17 => 7337849071970777609, + 18 => 7048274146685765803, + 19 => 2490912036172562890, + 20 => 1430944179399369897, + 21 => 925714316602446056, + 22 => 213612474969070880, + 23 => 8424214291092099066, + 24 => 8128177527341340913, + 25 => 8877880304739835373, + 26 => 7348226364467796897, + 27 => 7912285523981974709, + 28 => 6684442297345397749, + 29 => 8027317014132309176, + 30 => 2949299310666118859, + 31 => 4606455232748928322, + 32 => 537190475010555064, + 33 => 6794274034248069286, + 34 => 4905834084409988810, + 35 => 5856514390852846329, + 36 => 676904489229921322, + 37 => 7847259829335428809, + 38 => 603314800360596006, + 39 => 7638251964110811153, + 40 => 1371516712379551103, + 41 => 455159667265152652, + 42 => 2852656949187768322, + 43 => 8754867695377231411, + 44 => 4566890769600741779, + 45 => 6528607434570235134, + 46 => 5624469704540827131, + 47 => 8228007257195895475, + 48 => 7630458432617230689, + 49 => 2078246302561992743, + ), + 43 => + array ( + 0 => 3249494586804550869, + 1 => 7910382034839657896, + 2 => 5902349133912960872, + 3 => 8762482164340726662, + 4 => 1417781288491979680, + 5 => 844189552183628289, + 6 => 105413071487348004, + 7 => 8048457843956318159, + 8 => 5673311589853157392, + 9 => 6394325769311212492, + 10 => 4670193095650677760, + 11 => 8507743819188635864, + 12 => 139715791730778277, + 13 => 2828117459503705560, + 14 => 341500275608800353, + 15 => 3179155592867479561, + 16 => 3844098293834220289, + 17 => 6312133208951470938, + 18 => 4244537775216380097, + 19 => 3534019033218030565, + 20 => 531876127245908088, + 21 => 6356952659942689745, + 22 => 6903196638771436642, + 23 => 6264480881865375007, + 24 => 3043474304227856010, + 25 => 7204330142071132784, + 26 => 3258647143114570790, + 27 => 37530236043757607, + 28 => 8551339878345091900, + 29 => 3299033420331349394, + 30 => 1978400900541748461, + 31 => 4540820036346133652, + 32 => 5769958510090889842, + 33 => 4938302165368205991, + 34 => 2113170122425780104, + 35 => 3098919758489925708, + 36 => 7470625425112337200, + 37 => 3975646892811123257, + 38 => 1645901075149631834, + 39 => 9070335151525780158, + 40 => 321397114888729766, + 41 => 4858454928755911814, + 42 => 3981083195911464670, + 43 => 1395664503592753426, + 44 => 7609480547019305390, + 45 => 3144647483655816046, + 46 => 5367370826883676615, + 47 => 5691916664283445633, + 48 => 4097634742120685165, + 49 => 6206863622131666366, + ), + 44 => + array ( + 0 => 4639603337079770337, + 1 => 6548770155749868574, + 2 => 2398214353718128319, + 3 => 7769879793141674175, + 4 => 6653347574412558883, + 5 => 7662016057612580511, + 6 => 7398655524569027645, + 7 => 6851643413417681191, + 8 => 767893431760439718, + 9 => 7062231732012763354, + 10 => 1298522423205031553, + 11 => 9195400374449744963, + 12 => 7494564530328238174, + 13 => 4099393498420092502, + 14 => 7660141477782417762, + 15 => 7571561870936051249, + 16 => 2033832064371960684, + 17 => 1357940161911104815, + 18 => 4527552584379370680, + 19 => 4920386769880277627, + 20 => 7886876756994925893, + 21 => 5832098476387845665, + 22 => 5512731950665409254, + 23 => 2043217959321410708, + 24 => 2083802338082358116, + 25 => 1384683054614545685, + 26 => 4839557418307744826, + 27 => 5661331976091812887, + 28 => 4804139735155990158, + 29 => 8840757128394199723, + 30 => 6994106153308457833, + 31 => 6154002278329028450, + 32 => 1087677666205341750, + 33 => 244141496875194498, + 34 => 1749204419113682048, + 35 => 421165274352980092, + 36 => 5872506030742618511, + 37 => 1200060348916246255, + 38 => 3454491290431278359, + 39 => 1219257449633606432, + 40 => 4229125875404665514, + 41 => 6551830068625350328, + 42 => 5372851860553691735, + 43 => 6345832380887692654, + 44 => 3971581644890599026, + 45 => 866215337358616677, + 46 => 6222937111762488779, + 47 => 4170730568607952413, + 48 => 4775735845523718382, + 49 => 7698396865646553849, + ), + 45 => + array ( + 0 => 6761524961601885404, + 1 => 3414416428243153487, + 2 => 3476888942937972132, + 3 => 7718425341207686339, + 4 => 8419186405106913149, + 5 => 8181554895640464429, + 6 => 4539063265997904631, + 7 => 1341007880286744441, + 8 => 6587067129391736831, + 9 => 7595362866891711786, + 10 => 2619190805311603421, + 11 => 5894249203443113671, + 12 => 5146393704896672701, + 13 => 4168043008359189211, + 14 => 9192964933144107984, + 15 => 3826491577932810596, + 16 => 7457298538606960883, + 17 => 4631755125743095501, + 18 => 161044355279124271, + 19 => 3010202514295283717, + 20 => 8059680371160325698, + 21 => 6595863138615917742, + 22 => 7386436897584571650, + 23 => 4701072006369199271, + 24 => 5996028913549021625, + 25 => 1385370845897888047, + 26 => 1397103345833615254, + 27 => 6535851722157254355, + 28 => 5421499465701269131, + 29 => 4306592338655903107, + 30 => 2593858251430297414, + 31 => 2205415075000559542, + 32 => 7461708601258226738, + 33 => 6407679053280239442, + 34 => 2564946185453642548, + 35 => 6475278799604297299, + 36 => 6152028983295708415, + 37 => 4983683457561829607, + 38 => 1178635810974040117, + 39 => 5759567876755428883, + 40 => 1322053749775238205, + 41 => 555619562242405497, + 42 => 6807341749451169414, + 43 => 7728241440378147950, + 44 => 5319688939770816921, + 45 => 8330530233447972957, + 46 => 6805864273766790458, + 47 => 6855715184295822442, + 48 => 2702091193560632332, + 49 => 4825710705888288991, + ), + 46 => + array ( + 0 => 7913695790750124353, + 1 => 8653387588604917050, + 2 => 4501536607873700808, + 3 => 2843454544178669405, + 4 => 7545222646060711543, + 5 => 5801657953352687385, + 6 => 3498405413117909679, + 7 => 2011575796963252385, + 8 => 5578854291917523326, + 9 => 1365804745939196076, + 10 => 1357356852128713007, + 11 => 2068518443315367314, + 12 => 5421584461688818784, + 13 => 9198502025719176988, + 14 => 8520230833383963213, + 15 => 5976540176867322880, + 16 => 484326789728010926, + 17 => 8808985841675418815, + 18 => 5659291383374410947, + 19 => 4861489845790677877, + 20 => 4055288565625686302, + 21 => 4161104036273753697, + 22 => 7529431841640584049, + 23 => 3780989685567154300, + 24 => 6401764981519833149, + 25 => 1197899620746247058, + 26 => 3863318676314471965, + 27 => 8795731749285657215, + 28 => 7747084535925253860, + 29 => 2655012824519025259, + 30 => 7682684206889080095, + 31 => 6025078434347081324, + 32 => 1615255103987886735, + 33 => 2259104565619831085, + 34 => 8709526609996605559, + 35 => 3216850528061239271, + 36 => 7915732078002834192, + 37 => 1720325163337754822, + 38 => 4501251746367269130, + 39 => 1025003535384033006, + 40 => 4493455961601113968, + 41 => 7225901443203618256, + 42 => 6616030311715042976, + 43 => 8669939462384114992, + 44 => 2383786445621405332, + 45 => 6929317520695291133, + 46 => 8937147448915996388, + 47 => 912539491837161693, + 48 => 6697268964085367094, + 49 => 8420369060589102425, + ), + 47 => + array ( + 0 => 3700850510367048260, + 1 => 8461232830075913452, + 2 => 4033262673722395063, + 3 => 7356544964393530878, + 4 => 2888676921803219667, + 5 => 7156299039118135574, + 6 => 8202406955783229598, + 7 => 2478528791317009258, + 8 => 4041439523008240005, + 9 => 6517161524906758763, + 10 => 7560096391704973842, + 11 => 6918879401634146730, + 12 => 401187887246168573, + 13 => 3195446384835002696, + 14 => 3367835345440063506, + 15 => 5116864212349157532, + 16 => 7218461634201387045, + 17 => 5906860779382038858, + 18 => 1319187094568417224, + 19 => 646696649961507734, + 20 => 6775047794651263682, + 21 => 9210598354519468496, + 22 => 814342682513204669, + 23 => 5028007859672831065, + 24 => 8673166025973962669, + 25 => 7143844887140264089, + 26 => 7149779640084513266, + 27 => 5327255293644503614, + 28 => 7740041835523082539, + 29 => 7157231891001033180, + 30 => 6880425606155238561, + 31 => 616395685636568226, + 32 => 1506343751416503448, + 33 => 6764045249172563223, + 34 => 4152136705025707998, + 35 => 3882959765415441419, + 36 => 3429371676537325573, + 37 => 96371800125123629, + 38 => 2044610538400451737, + 39 => 5934883755423690609, + 40 => 3088928761050459291, + 41 => 9166606688652394872, + 42 => 3172278448305727210, + 43 => 6258859854653782146, + 44 => 2370253363001932727, + 45 => 888613293568417738, + 46 => 566878523618938599, + 47 => 6807770796752629799, + 48 => 5268390502059375586, + 49 => 1369560507235967025, + ), + 48 => + array ( + 0 => 5969062734480091517, + 1 => 4258635298619589230, + 2 => 1239915403139647092, + 3 => 5090551864665397530, + 4 => 4983253304814937482, + 5 => 615571454853585349, + 6 => 1591783394356870228, + 7 => 3856456619073176967, + 8 => 4163682545845256068, + 9 => 6190387025904069066, + 10 => 6778629022847096049, + 11 => 7466609877102224863, + 12 => 1943975059967845995, + 13 => 7095909378083018591, + 14 => 2455897788796317876, + 15 => 5856674661467767271, + 16 => 2508324967447032828, + 17 => 1353417238913596355, + 18 => 4084639979570954526, + 19 => 3989307496196329143, + 20 => 3632865819435603525, + 21 => 8882842337316352089, + 22 => 7977727799862244196, + 23 => 806283432102605935, + 24 => 1545497087649195615, + 25 => 3557464393355285756, + 26 => 1703046612747353147, + 27 => 6901053312597805596, + 28 => 3193951683541817674, + 29 => 7142082117921271648, + 30 => 535259647425267513, + 31 => 1896436629335605015, + 32 => 4301705775874893248, + 33 => 8739743395429789192, + 34 => 6384324837173611357, + 35 => 6184503691135320603, + 36 => 332261142286366890, + 37 => 1207159795507319703, + 38 => 6098310336187064859, + 39 => 7657813151254044828, + 40 => 5694573187490330619, + 41 => 4325278518662817383, + 42 => 7159800258223705431, + 43 => 7983853345760488509, + 44 => 3245495653004469177, + 45 => 3887580662207195375, + 46 => 5890827052852695685, + 47 => 128559302317612711, + 48 => 3228480891169079160, + 49 => 1174439836486132859, + ), + 49 => + array ( + 0 => 4864039696068472075, + 1 => 8834124669575979344, + 2 => 5652678881475382548, + 3 => 2379635065223177717, + 4 => 293009543092963596, + 5 => 7945471327883416577, + 6 => 6689198029790926423, + 7 => 1921885854372196611, + 8 => 7525825208427230268, + 9 => 6893487881916577839, + 10 => 2286912634732295118, + 11 => 3638013130157988052, + 12 => 3440656755054773459, + 13 => 86991074017549167, + 14 => 6849234719062098564, + 15 => 368261341327680170, + 16 => 2398309716273344165, + 17 => 1995084157513314738, + 18 => 8199815484722779866, + 19 => 4555122545756624787, + 20 => 8438849263629566283, + 21 => 2220359438567702571, + 22 => 8177509177722963039, + 23 => 2999854020616151054, + 24 => 6824704403354290481, + 25 => 6275807546493426104, + 26 => 9090799789147344934, + 27 => 7949534743488954263, + 28 => 5624411741410589483, + 29 => 7277332826188252059, + 30 => 6459979453897856951, + 31 => 1648740848473399197, + 32 => 403884512548425336, + 33 => 4874507963546786037, + 34 => 1320751360825837637, + 35 => 8588053377246754896, + 36 => 1046831925576638044, + 37 => 7651453133008971076, + 38 => 5081048334666394086, + 39 => 8573555156262460241, + 40 => 2011704186137013088, + 41 => 7716460786009597267, + 42 => 8041214376909827919, + 43 => 2860046413430702208, + 44 => 8698080270427320899, + 45 => 7104210477142509900, + 46 => 2288000021596943068, + 47 => 9032553461555290826, + 48 => 1211098135104524011, + 49 => 494075524174801193, + ), + ); +} diff --git a/tests/PHPStan/Analyser/data/bug-12671.php b/tests/PHPStan/Analyser/data/bug-12671.php new file mode 100644 index 00000000000..80663164001 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-12671.php @@ -0,0 +1,1198 @@ + [], + // Angola. + 'AO' => [], + // Argentina. + 'AR' => [ + 'C' => ['Ciudad Autónoma de Buenos Aires', 'Ciudad Autónoma de Buenos Aires', NULL], + 'B' => ['Buenos Aires', 'Buenos Aires', NULL], + 'K' => ['Catamarca', 'Catamarca', NULL], + 'H' => ['Chaco', 'Chaco', NULL], + 'U' => ['Chubut', 'Chubut', NULL], + 'X' => ['Córdoba', 'Córdoba', NULL], + 'W' => ['Corrientes', 'Corrientes', NULL], + 'E' => ['Entre Ríos', 'Entre Ríos', NULL], + 'P' => ['Formosa', 'Formosa', NULL], + 'Y' => ['Jujuy', 'Jujuy', NULL], + 'L' => ['La Pampa', 'La Pampa', NULL], + 'F' => ['La Rioja', 'La Rioja', NULL], + 'M' => ['Mendoza', 'Mendoza', NULL], + 'N' => ['Misiones', 'Misiones', NULL], + 'Q' => ['Neuquén', 'Neuquén', NULL], + 'R' => ['Río Negro', 'Río Negro', NULL], + 'A' => ['Salta', 'Salta', NULL], + 'J' => ['San Juan', 'San Juan', NULL], + 'D' => ['San Luis', 'San Luis', NULL], + 'Z' => ['Santa Cruz', 'Santa Cruz', NULL], + 'S' => ['Santa Fe', 'Santa Fe', NULL], + 'G' => ['Santiago del Estero', 'Santiago del Estero', NULL], + 'V' => ['Tierra del Fuego', 'Tierra del Fuego', NULL], + 'T' => ['Tucumán', 'Tucumán', NULL], + ], + // Austria. + 'AT' => [], + // Australia. + 'AU' => [ + 'ACT' => ['ACT', 'Australian Capital Territory', NULL], + 'NSW' => ['NSW', 'New South Wales', NULL], + 'NT' => ['NT', 'Northern Territory', NULL], + 'QLD' => ['QLD', 'Queensland', NULL], + 'SA' => ['SA', 'South Australia', NULL], + 'TAS' => ['TAS', 'Tasmania', NULL], + 'VIC' => ['VIC', 'Victoria', NULL], + 'WA' => ['WA', 'Western Australia', NULL], + // [ 'JBT', 'Jervis Bay Territory', NULL ], + ], + // Aland Islands. + 'AX' => [], + // Bangladesh. + 'BD' => [], + // Belgium. + 'BE' => [], + // Bulgaria. + 'BG' => [], + // Bahrain. + 'BH' => [], + // Burundi. + 'BI' => [], + // Benin. + 'BJ' => [], + // Bolivia. + 'BO' => [], + // Brazil. + 'BR' => [ + 'AC' => ['AC', 'Acre', NULL], + 'AL' => ['AL', 'Alagoas', NULL], + 'AP' => ['AP', 'Amapá', NULL], + 'AM' => ['AM', 'Amazonas', NULL], + 'BA' => ['BA', 'Bahia', NULL], + 'CE' => ['CE', 'Ceará', NULL], + 'DF' => ['DF', 'Distrito Federal', NULL], + 'ES' => ['ES', 'Espírito Santo', NULL], + 'GO' => ['GO', 'Goiás', NULL], + 'MA' => ['MA', 'Maranhão', NULL], + 'MT' => ['MT', 'Mato Grosso', NULL], + 'MS' => ['MS', 'Mato Grosso do Sul', NULL], + 'MG' => ['MG', 'Minas Gerais', NULL], + 'PA' => ['PA', 'Pará', NULL], + 'PB' => ['PB', 'Paraíba', NULL], + 'PR' => ['PR', 'Paraná', NULL], + 'PE' => ['PE', 'Pernambuco', NULL], + 'PI' => ['PI', 'Piauí', NULL], + 'RJ' => ['RJ', 'Rio de Janeiro', NULL], + 'RN' => ['RN', 'Rio Grande do Norte', NULL], + 'RS' => ['RS', 'Rio Grande do Sul', NULL], + 'RO' => ['RO', 'Rondônia', NULL], + 'RR' => ['RR', 'Roraima', NULL], + 'SC' => ['SC', 'Santa Catarina', NULL], + 'SP' => ['SP', 'São Paulo', NULL], + 'SE' => ['SE', 'Sergipe', NULL], + 'TO' => ['TO', 'Tocantins', NULL], + ], + // Canada. + 'CA' => [ + 'AB' => ['AB', 'Alberta', 'Alberta'], + 'BC' => ['BC', 'British Columbia', 'Colombie-Britannique'], + 'MB' => ['MB', 'Manitoba', 'Manitoba'], + 'NB' => ['NB', 'New Brunswick', 'Nouveau-Brunswick'], + 'NL' => ['NL', 'Newfoundland and Labrador', 'Terre-Neuve-et-Labrador'], + 'NT' => ['NT', 'Northwest Territories', 'Territoires du Nord-Ouest'], + 'NS' => ['NS', 'Nova Scotia', 'Nouvelle-Écosse'], + 'NU' => ['NU', 'Nunavut', 'Nunavut'], + 'ON' => ['ON', 'Ontario', 'Ontario'], + 'PE' => ['PE', 'Prince Edward Island', 'Île-du-Prince-Édouard'], + 'QC' => ['QC', 'Quebec', 'Québec'], + 'SK' => ['SK', 'Saskatchewan', 'Saskatchewan'], + 'YT' => ['YT', 'Yukon', 'Yukon'], + ], + // Switzerland. + 'CH' => [], + // China. + 'CN' => [ + 'CN1' => ['Yunnan Sheng', 'Yunnan Sheng', '云南省'], + 'CN2' => ['Beijing Shi', 'Beijing Shi', '北京市'], + 'CN3' => ['Tianjin Shi', 'Tianjin Shi', '天津市'], + 'CN4' => ['Hebei Sheng', 'Hebei Sheng', '河北省'], + 'CN5' => ['Shanxi Sheng', 'Shanxi Sheng', '山西省'], + 'CN6' => ['Neimenggu Zizhiqu', 'Neimenggu Zizhiqu', '内蒙古'], + 'CN7' => ['Liaoning Sheng', 'Liaoning Sheng', '辽宁省'], + 'CN8' => ['Jilin Sheng', 'Jilin Sheng', '吉林省'], + 'CN9' => ['Heilongjiang Sheng', 'Heilongjiang Sheng', '黑龙江省'], + 'CN10' => ['Shanghai Shi', 'Shanghai Shi', '上海市'], + 'CN11' => ['Jiangsu Sheng', 'Jiangsu Sheng', '江苏省'], + 'CN12' => ['Zhejiang Sheng', 'Zhejiang Sheng', '浙江省'], + 'CN13' => ['Anhui Sheng', 'Anhui Sheng', '安徽省'], + 'CN14' => ['Fujian Sheng', 'Fujian Sheng', '福建省'], + 'CN15' => ['Jiangxi Sheng', 'Jiangxi Sheng', '江西省'], + 'CN16' => ['Shandong Sheng', 'Shandong Sheng', '山东省'], + 'CN17' => ['Henan Sheng', 'Henan Sheng', '河南省'], + 'CN18' => ['Hubei Sheng', 'Hubei Sheng', '湖北省'], + 'CN19' => ['Hunan Sheng', 'Hunan Sheng', '湖南省'], + 'CN20' => ['Guangdong Sheng', 'Guangdong Sheng', '广东省'], + 'CN21' => ['Guangxi Zhuangzuzizhiqu', 'Guangxi Zhuangzuzizhiqu', '广西'], + 'CN22' => ['Hainan Sheng', 'Hainan Sheng', '海南省'], + 'CN23' => ['Chongqing Shi', 'Chongqing Shi', '重庆市'], + 'CN24' => ['Sichuan Sheng', 'Sichuan Sheng', '四川省'], + 'CN25' => ['Guizhou Sheng', 'Guizhou Sheng', '贵州省'], + 'CN26' => ['Shaanxi Sheng', 'Shaanxi Sheng', '陕西省'], + 'CN27' => ['Gansu Sheng', 'Gansu Sheng', '甘肃省'], + 'CN28' => ['Qinghai Sheng', 'Qinghai Sheng', '青海省'], + 'CN29' => ['Ningxia Huizuzizhiqu', 'Ningxia Huizuzizhiqu', '宁夏'], + 'CN30' => ['Macau', 'Macau', '澳门'], + 'CN31' => ['Xizang Zizhiqu', 'Xizang Zizhiqu', '西藏'], + 'CN32' => ['Xinjiang Weiwuerzizhiqu', 'Xinjiang Weiwuerzizhiqu', '新疆'], + // [ 'Taiwan', 'Taiwan', '台湾' ], + // [ 'Hong Kong', 'Hong Kong', '香港' ], + ], + // Czech Republic. + 'CZ' => [], + // Germany. + 'DE' => [], + // Denmark. + 'DK' => [], + // Dominican Republic. + 'DO' => [], + // Algeria. + 'DZ' => [], + // Estonia. + 'EE' => [], + // Egypt. + 'EG' => [ + 'EGALX' => ['Alexandria Governorate', 'Alexandria Governorate', 'الإسكندرية'], + 'EGASN' => ['Aswan Governorate', 'Aswan Governorate', 'أسوان'], + 'EGAST' => ['Asyut Governorate', 'Asyut Governorate', 'أسيوط'], + 'EGBA' => ['Red Sea Governorate', 'Red Sea Governorate', 'البحر الأحمر'], + 'EGBH' => ['El Beheira Governorate', 'El Beheira Governorate', 'البحيرة'], + 'EGBNS' => ['Beni Suef Governorate', 'Beni Suef Governorate', 'بني سويف'], + 'EGC' => ['Cairo Governorate', 'Cairo Governorate', 'القاهرة'], + 'EGDK' => ['Dakahlia Governorate', 'Dakahlia Governorate', 'الدقهلية'], + 'EGDT' => ['Damietta Governorate', 'Damietta Governorate', 'دمياط'], + 'EGFYM' => ['Faiyum Governorate', 'Faiyum Governorate', 'الفيوم'], + 'EGGH' => ['Gharbia Governorate', 'Gharbia Governorate', 'الغربية'], + 'EGGZ' => ['Giza Governorate', 'Giza Governorate', 'الجيزة'], + 'EGIS' => ['Ismailia Governorate', 'Ismailia Governorate', 'الإسماعيلية'], + 'EGJS' => ['South Sinai Governorate', 'South Sinai Governorate', 'جنوب سيناء'], + 'EGKB' => ['Qalyubia Governorate', 'Qalyubia Governorate', 'القليوبية'], + 'EGKFS' => ['Kafr El Sheikh Governorate', 'Kafr El Sheikh Governorate', 'كفر الشيخ'], + 'EGKN' => ['Qena Governorate', 'Qena Governorate', 'قنا'], + 'EGLX' => ['Luxor Governorate', 'Luxor Governorate', 'الأقصر'], + 'EGMN' => ['Menia Governorate', 'Menia Governorate', 'المنيا'], + 'EGMNF' => ['Menofia Governorate', 'Menofia Governorate', 'المنوفية'], + 'EGMT' => ['Matrouh Governorate', 'Matrouh Governorate', 'مطروح'], + 'EGPTS' => ['Port Said Governorate', 'Port Said Governorate', 'بورسعيد'], + 'EGSHG' => ['Sohag Governorate', 'Sohag Governorate', 'سوهاج'], + 'EGSHR' => ['Ash Sharqia Governorate', 'Ash Sharqia Governorate', 'الشرقية'], + 'EGSIN' => ['North Sinai Governorate', 'North Sinai Governorate', 'شمال سيناء'], + 'EGSUZ' => ['Suez Governorate', 'Suez Governorate', 'السويس'], + 'EGWAD' => ['New Valley Governorate', 'New Valley Governorate', 'الوادي الجديد'], + ], + // Spain. + 'ES' => [ + 'C' => ['A Coruña', 'A Coruña', NULL], + 'VI' => ['Álava', 'Álava', NULL], + 'AB' => ['Albacete', 'Albacete', NULL], + 'A' => ['Alicante', 'Alicante', NULL], + 'AL' => ['Almería', 'Almería', NULL], + 'O' => ['Asturias', 'Asturias', NULL], + 'AV' => ['Ávila', 'Ávila', NULL], + 'BA' => ['Badajoz', 'Badajoz', NULL], + 'PM' => ['Balears', 'Balears', NULL], + 'B' => ['Barcelona', 'Barcelona', NULL], + 'BU' => ['Burgos', 'Burgos', NULL], + 'CC' => ['Cáceres', 'Cáceres', NULL], + 'CA' => ['Cádiz', 'Cádiz', NULL], + 'S' => ['Cantabria', 'Cantabria', NULL], + 'CS' => ['Castellón', 'Castellón', NULL], + 'CE' => ['Ceuta', 'Ceuta', NULL], + 'CR' => ['Ciudad Real', 'Ciudad Real', NULL], + 'CO' => ['Córdoba', 'Córdoba', NULL], + 'CU' => ['Cuenca', 'Cuenca', NULL], + 'GI' => ['Girona', 'Girona', NULL], + 'GR' => ['Granada', 'Granada', NULL], + 'GU' => ['Guadalajara', 'Guadalajara', NULL], + 'SS' => ['Guipúzcoa', 'Guipúzcoa', NULL], + 'H' => ['Huelva', 'Huelva', NULL], + 'HU' => ['Huesca', 'Huesca', NULL], + 'J' => ['Jaén', 'Jaén', NULL], + 'LO' => ['La Rioja', 'La Rioja', NULL], + 'GC' => ['Las Palmas', 'Las Palmas', NULL], + 'LE' => ['León', 'León', NULL], + 'L' => ['Lleida', 'Lleida', NULL], + 'LU' => ['Lugo', 'Lugo', NULL], + 'M' => ['Madrid', 'Madrid', NULL], + 'MA' => ['Málaga', 'Málaga', NULL], + 'ML' => ['Melilla', 'Melilla', NULL], + 'MU' => ['Murcia', 'Murcia', NULL], + 'NA' => ['Navarra', 'Navarra', NULL], + 'OR' => ['Ourense', 'Ourense', NULL], + 'P' => ['Palencia', 'Palencia', NULL], + 'PO' => ['Pontevedra', 'Pontevedra', NULL], + 'SA' => ['Salamanca', 'Salamanca', NULL], + 'TF' => ['Santa Cruz de Tenerife', 'Santa Cruz de Tenerife', NULL], + 'SG' => ['Segovia', 'Segovia', NULL], + 'SE' => ['Sevilla', 'Sevilla', NULL], + 'SO' => ['Soria', 'Soria', NULL], + 'T' => ['Tarragona', 'Tarragona', NULL], + 'TE' => ['Teruel', 'Teruel', NULL], + 'TO' => ['Toledo', 'Toledo', NULL], + 'V' => ['Valencia', 'Valencia', NULL], + 'VA' => ['Valladolid', 'Valladolid', NULL], + 'BI' => ['Vizcaya', 'Vizcaya', NULL], + 'ZA' => ['Zamora', 'Zamora', NULL], + 'Z' => ['Zaragoza', 'Zaragoza', NULL], + ], + // Finland. + 'FI' => [], + // France. + 'FR' => [], + // French Guiana. + 'GF' => [], + // Ghana. + 'GH' => [], + // Guadeloupe. + 'GP' => [], + // Greece. + 'GR' => [], + // Guatemala. + 'GT' => [], + // Hong Kong. + 'HK' => [ + 'HONG KONG' => ['Hong Kong Island', 'Hong Kong Island', '香港島'], + 'KOWLOON' => ['Kowloon', 'Kowloon', '九龍'], + 'NEW TERRITORIES' => ['New Territories', 'New Territories', '新界'], + ], + // Hungary. + 'HU' => [], + // Indonesia. + 'ID' => [ + 'AC' => ['Aceh', 'Aceh', NULL], + 'SU' => ['Sumatera Utara', 'Sumatera Utara', NULL], + 'SB' => ['Sumatera Barat', 'Sumatera Barat', NULL], + 'RI' => ['Riau', 'Riau', NULL], + 'KR' => ['Kepulauan Riau', 'Kepulauan Riau', NULL], + 'JA' => ['Jambi', 'Jambi', NULL], + 'SS' => ['Sumatera Selatan', 'Sumatera Selatan', NULL], + 'BB' => ['Kepulauan Bangka Belitung', 'Kepulauan Bangka Belitung', NULL], + 'BE' => ['Bengkulu', 'Bengkulu', NULL], + 'LA' => ['Lampung', 'Lampung', NULL], + 'JK' => ['DKI Jakarta', 'DKI Jakarta', NULL], + 'JB' => ['Jawa Barat', 'Jawa Barat', NULL], + 'BT' => ['Banten', 'Banten', NULL], + 'JT' => ['Jawa Tengah', 'Jawa Tengah', NULL], + 'JI' => ['Jawa Timur', 'Jawa Timur', NULL], + 'YO' => ['Daerah Istimewa Yogyakarta', 'Daerah Istimewa Yogyakarta', NULL], + 'BA' => ['Bali', 'Bali', NULL], + 'NB' => ['Nusa Tenggara Barat', 'Nusa Tenggara Barat', NULL], + 'NT' => ['Nusa Tenggara Timur', 'Nusa Tenggara Timur', NULL], + 'KB' => ['Kalimantan Barat', 'Kalimantan Barat', NULL], + 'KT' => ['Kalimantan Tengah', 'Kalimantan Tengah', NULL], + 'KI' => ['Kalimantan Timur', 'Kalimantan Timur', NULL], + 'KS' => ['Kalimantan Selatan', 'Kalimantan Selatan', NULL], + 'KU' => ['Kalimantan Utara', 'Kalimantan Utara', NULL], + 'SA' => ['Sulawesi Utara', 'Sulawesi Utara', NULL], + 'ST' => ['Sulawesi Tengah', 'Sulawesi Tengah', NULL], + 'SG' => ['Sulawesi Tenggara', 'Sulawesi Tenggara', NULL], + 'SR' => ['Sulawesi Barat', 'Sulawesi Barat', NULL], + 'SN' => ['Sulawesi Selatan', 'Sulawesi Selatan', NULL], + 'GO' => ['Gorontalo', 'Gorontalo', NULL], + 'MA' => ['Maluku', 'Maluku', NULL], + 'MU' => ['Maluku Utara', 'Maluku Utara', NULL], + 'PA' => ['Papua', 'Papua', NULL], + 'PB' => ['Papua Barat', 'Papua Barat', NULL], + // [ 'Kalimantan Tengah', 'Kalimantan Tengah', NULL ], + // [ 'Kalimantan Timur', 'Kalimantan Timur', NULL ], + ], + // Ireland. + 'IE' => [ + 'CW' => ['Co. Carlow', 'Co. Carlow', NULL], + 'CN' => ['Co. Cavan', 'Co. Cavan', NULL], + 'CE' => ['Co. Clare', 'Co. Clare', NULL], + 'CO' => ['Co. Cork', 'Co. Cork', NULL], + 'DL' => ['Co. Donegal', 'Co. Donegal', NULL], + 'D' => ['Co. Dublin', 'Co. Dublin', NULL], + 'G' => ['Co. Galway', 'Co. Galway', NULL], + 'KY' => ['Co. Kerry', 'Co. Kerry', NULL], + 'KE' => ['Co. Kildare', 'Co. Kildare', NULL], + 'KK' => ['Co. Kilkenny', 'Co. Kilkenny', NULL], + 'LS' => ['Co. Laois', 'Co. Laois', NULL], + 'LM' => ['Co. Leitrim', 'Co. Leitrim', NULL], + 'LK' => ['Co. Limerick', 'Co. Limerick', NULL], + 'LD' => ['Co. Longford', 'Co. Longford', NULL], + 'LH' => ['Co. Louth', 'Co. Louth', NULL], + 'MO' => ['Co. Mayo', 'Co. Mayo', NULL], + 'MH' => ['Co. Meath', 'Co. Meath', NULL], + 'MN' => ['Co. Monaghan', 'Co. Monaghan', NULL], + 'OY' => ['Co. Offaly', 'Co. Offaly', NULL], + 'RN' => ['Co. Roscommon', 'Co. Roscommon', NULL], + 'SO' => ['Co. Sligo', 'Co. Sligo', NULL], + 'TA' => ['Co. Tipperary', 'Co. Tipperary', NULL], + 'WD' => ['Co. Waterford', 'Co. Waterford', NULL], + 'WH' => ['Co. Westmeath', 'Co. Westmeath', NULL], + 'WX' => ['Co. Wexford', 'Co. Wexford', NULL], + 'WW' => ['Co. Wicklow', 'Co. Wicklow', NULL], + ], + // Israel. + 'IL' => [], + // Isle of Man. + 'IM' => [], + // India. + 'IN' => [ + 'AP' => ['Andhra Pradesh', 'Andhra Pradesh', NULL], + 'AR' => ['Arunachal Pradesh', 'Arunachal Pradesh', NULL], + 'AS' => ['Assam', 'Assam', NULL], + 'BR' => ['Bihar', 'Bihar', NULL], + 'CT' => ['Chhattisgarh', 'Chhattisgarh', NULL], + 'GA' => ['Goa', 'Goa', NULL], + 'GJ' => ['Gujarat', 'Gujarat', NULL], + 'HR' => ['Haryana', 'Haryana', NULL], + 'HP' => ['Himachal Pradesh', 'Himachal Pradesh', NULL], + 'JK' => ['Jammu and Kashmir', 'Jammu & Kashmir', NULL], + 'JH' => ['Jharkhand', 'Jharkhand', NULL], + 'KA' => ['Karnataka', 'Karnataka', NULL], + 'KL' => ['Kerala', 'Kerala', NULL], + // 'LA' => __( 'Ladakh', 'woocommerce' ), + 'MP' => ['Madhya Pradesh', 'Madhya Pradesh', NULL], + 'MH' => ['Maharashtra', 'Maharashtra', NULL], + 'MN' => ['Manipur', 'Manipur', NULL], + 'ML' => ['Meghalaya', 'Meghalaya', NULL], + 'MZ' => ['Mizoram', 'Mizoram', NULL], + 'NL' => ['Nagaland', 'Nagaland', NULL], + 'OR' => ['Odisha', 'Odisha', NULL], + 'PB' => ['Punjab', 'Punjab', NULL], + 'RJ' => ['Rajasthan', 'Rajasthan', NULL], + 'SK' => ['Sikkim', 'Sikkim', NULL], + 'TN' => ['Tamil Nadu', 'Tamil Nadu', NULL], + 'TS' => ['Telangana', 'Telangana', NULL], + 'TR' => ['Tripura', 'Tripura', NULL], + 'UK' => ['Uttarakhand', 'Uttarakhand', NULL], + 'UP' => ['Uttar Pradesh', 'Uttar Pradesh', NULL], + 'WB' => ['West Bengal', 'West Bengal', NULL], + 'AN' => ['Andaman and Nicobar Islands', 'Andaman & Nicobar', NULL], + 'CH' => ['Chandigarh', 'Chandigarh', NULL], + 'DN' => ['Dadra and Nagar Haveli', 'Dadra & Nagar Haveli', NULL], + 'DD' => ['Daman and Diu', 'Daman & Diu', NULL], + 'DL' => ['Delhi', 'Delhi', NULL], + 'LD' => ['Lakshadweep', 'Lakshadweep', NULL], + 'PY' => ['Puducherry', 'Puducherry', NULL], + ], + // Iran. + 'IR' => [ + 'KHZ' => ['Khuzestan Province', 'Khuzestan Province', 'استان خوزستان'], + 'THR' => ['Tehran Province', 'Tehran Province', 'استان تهران'], + 'ILM' => ['Ilam Province', 'Ilam Province', 'استان ایلام'], + 'BHR' => ['Bushehr Province', 'Bushehr Province', 'استان بوشهر'], + 'ADL' => ['Ardabil Province', 'Ardabil Province', 'استان اردبیل'], + 'ESF' => ['Isfahan Province', 'Isfahan Province', 'استان اصفهان'], + 'YZD' => ['Yazd Province', 'Yazd Province', 'استان یزد'], + 'KRH' => ['Kermanshah Province', 'Kermanshah Province', 'استان کرمانشاه'], + 'KRN' => ['Kerman Province', 'Kerman Province', 'استان کرمان'], + 'HDN' => ['Hamadan Province', 'Hamadan Province', 'استان همدان'], + 'GZN' => ['Qazvin Province', 'Qazvin Province', 'استان قزوین'], + 'ZJN' => ['Zanjan Province', 'Zanjan Province', 'استان زنجان'], + 'LRS' => ['Lorestan Province', 'Lorestan Province', 'استان لرستان'], + 'ABZ' => ['Alborz Province', 'Alborz Province', 'استان البرز'], + 'EAZ' => ['East Azerbaijan Province', 'East Azerbaijan Province', 'استان آذربایجان شرقی'], + 'WAZ' => ['West Azerbaijan Province', 'West Azerbaijan Province', 'استان آذربایجان غربی'], + 'CHB' => ['Chaharmahal and Bakhtiari Province', 'Chaharmahal and Bakhtiari Province', 'استان چهارمحال و بختیاری'], + 'SKH' => ['South Khorasan Province', 'South Khorasan Province', 'استان خراسان جنوبی'], + 'RKH' => ['Razavi Khorasan Province', 'Razavi Khorasan Province', 'استان خراسان رضوی'], + 'NKH' => ['North Khorasan Province', 'North Khorasan Province', 'استان خراسان شمالی'], + 'SMN' => ['Semnan Province', 'Semnan Province', 'استان سمنان'], + 'FRS' => ['Fars Province', 'Fars Province', 'استان فارس'], + 'QHM' => ['Qom Province', 'Qom Province', 'استان قم'], + 'KRD' => ['Kurdistan Province', 'Kurdistan Province', 'استان کردستان'], + 'KBD' => ['Kohgiluyeh and Boyer-Ahmad Province', 'Kohgiluyeh and Boyer-Ahmad Province', 'استان کهگیلویه و بویراحمد'], + 'GLS' => ['Golestan Province', 'Golestan Province', 'استان گلستان'], + 'GIL' => ['Gilan Province', 'Gilan Province', 'استان گیلان'], + 'MZN' => ['Mazandaran Province', 'Mazandaran Province', 'استان مازندران'], + 'MKZ' => ['Markazi Province', 'Markazi Province', 'استان مرکزی'], + 'HRZ' => ['Hormozgan Province', 'Hormozgan Province', 'استان هرمزگان'], + 'SBN' => ['Sistan and Baluchestan Province', 'Sistan and Baluchestan Province', 'استان سیستان و بلوچستان'], + ], + // Iceland. + 'IS' => [], + // Italy. + 'IT' => [ + 'AG' => ['AG', 'Agrigento', NULL], + 'AL' => ['AL', 'Alessandria', NULL], + 'AN' => ['AN', 'Ancona', NULL], + 'AO' => ['AO', 'Aosta', NULL], + 'AR' => ['AR', 'Arezzo', NULL], + 'AP' => ['AP', 'Ascoli Piceno', NULL], + 'AT' => ['AT', 'Asti', NULL], + 'AV' => ['AV', 'Avellino', NULL], + 'BA' => ['BA', 'Bari', NULL], + 'BT' => ['BT', 'Barletta-Andria-Trani', NULL], + 'BL' => ['BL', 'Belluno', NULL], + 'BN' => ['BN', 'Benevento', NULL], + 'BG' => ['BG', 'Bergamo', NULL], + 'BI' => ['BI', 'Biella', NULL], + 'BO' => ['BO', 'Bologna', NULL], + 'BZ' => ['BZ', 'Bolzano', NULL], + 'BS' => ['BS', 'Brescia', NULL], + 'BR' => ['BR', 'Brindisi', NULL], + 'CA' => ['CA', 'Cagliari', NULL], + 'CL' => ['CL', 'Caltanissetta', NULL], + 'CB' => ['CB', 'Campobasso', NULL], + 'CE' => ['CE', 'Caserta', NULL], + 'CT' => ['CT', 'Catania', NULL], + 'CZ' => ['CZ', 'Catanzaro', NULL], + 'CH' => ['CH', 'Chieti', NULL], + 'CO' => ['CO', 'Como', NULL], + 'CS' => ['CS', 'Cosenza', NULL], + 'CR' => ['CR', 'Cremona', NULL], + 'KR' => ['KR', 'Crotone', NULL], + 'CN' => ['CN', 'Cuneo', NULL], + 'EN' => ['EN', 'Enna', NULL], + 'FM' => ['FM', 'Fermo', NULL], + 'FE' => ['FE', 'Ferrara', NULL], + 'FI' => ['FI', 'Firenze', NULL], + 'FG' => ['FG', 'Foggia', NULL], + 'FC' => ['FC', 'Forlì-Cesena', NULL], + 'FR' => ['FR', 'Frosinone', NULL], + 'GE' => ['GE', 'Genova', NULL], + 'GO' => ['GO', 'Gorizia', NULL], + 'GR' => ['GR', 'Grosseto', NULL], + 'IM' => ['IM', 'Imperia', NULL], + 'IS' => ['IS', 'Isernia', NULL], + 'SP' => ['SP', 'La Spezia', NULL], + 'AQ' => ['AQ', "L'Aquila", NULL], + 'LT' => ['LT', 'Latina', NULL], + 'LE' => ['LE', 'Lecce', NULL], + 'LC' => ['LC', 'Lecco', NULL], + 'LI' => ['LI', 'Livorno', NULL], + 'LO' => ['LO', 'Lodi', NULL], + 'LU' => ['LU', 'Lucca', NULL], + 'MC' => ['MC', 'Macerata', NULL], + 'MN' => ['MN', 'Mantova', NULL], + 'MS' => ['MS', 'Massa-Carrara', NULL], + 'MT' => ['MT', 'Matera', NULL], + 'ME' => ['ME', 'Messina', NULL], + 'MI' => ['MI', 'Milano', NULL], + 'MO' => ['MO', 'Modena', NULL], + 'MB' => ['MB', 'Monza e Brianza', NULL], + 'NA' => ['NA', 'Napoli', NULL], + 'NO' => ['NO', 'Novara', NULL], + 'NU' => ['NU', 'Nuoro', NULL], + 'OR' => ['OR', 'Oristano', NULL], + 'PD' => ['PD', 'Padova', NULL], + 'PA' => ['PA', 'Palermo', NULL], + 'PR' => ['PR', 'Parma', NULL], + 'PV' => ['PV', 'Pavia', NULL], + 'PG' => ['PG', 'Perugia', NULL], + 'PU' => ['PU', 'Pesaro e Urbino', NULL], + 'PE' => ['PE', 'Pescara', NULL], + 'PC' => ['PC', 'Piacenza', NULL], + 'PI' => ['PI', 'Pisa', NULL], + 'PT' => ['PT', 'Pistoia', NULL], + 'PN' => ['PN', 'Pordenone', NULL], + 'PZ' => ['PZ', 'Potenza', NULL], + 'PO' => ['PO', 'Prato', NULL], + 'RG' => ['RG', 'Ragusa', NULL], + 'RA' => ['RA', 'Ravenna', NULL], + 'RC' => ['RC', 'Reggio Calabria', NULL], + 'RE' => ['RE', 'Reggio Emilia', NULL], + 'RI' => ['RI', 'Rieti', NULL], + 'RN' => ['RN', 'Rimini', NULL], + 'RM' => ['RM', 'Roma', NULL], + 'RO' => ['RO', 'Rovigo', NULL], + 'SA' => ['SA', 'Salerno', NULL], + 'SS' => ['SS', 'Sassari', NULL], + 'SV' => ['SV', 'Savona', NULL], + 'SI' => ['SI', 'Siena', NULL], + 'SR' => ['SR', 'Siracusa', NULL], + 'SO' => ['SO', 'Sondrio', NULL], + 'SU' => ['SU', 'Sud Sardegna', NULL], + 'TA' => ['TA', 'Taranto', NULL], + 'TE' => ['TE', 'Teramo', NULL], + 'TR' => ['TR', 'Terni', NULL], + 'TO' => ['TO', 'Torino', NULL], + 'TP' => ['TP', 'Trapani', NULL], + 'TN' => ['TN', 'Trento', NULL], + 'TV' => ['TV', 'Treviso', NULL], + 'TS' => ['TS', 'Trieste', NULL], + 'UD' => ['UD', 'Udine', NULL], + 'VA' => ['VA', 'Varese', NULL], + 'VE' => ['VE', 'Venezia', NULL], + 'VB' => ['VB', 'Verbano-Cusio-Ossola', NULL], + 'VC' => ['VC', 'Vercelli', NULL], + 'VR' => ['VR', 'Verona', NULL], + 'VV' => ['VV', 'Vibo Valentia', NULL], + 'VI' => ['VI', 'Vicenza', NULL], + 'VT' => ['VT', 'Viterbo', NULL], + ], + // Jamaica. + 'JM' => [ + 'JM-01' => ['Kingston', 'Kingston', NULL], + 'JM-02' => ['St. Andrew', 'St. Andrew', NULL], + 'JM-03' => ['St. Thomas', 'St. Thomas', NULL], + 'JM-04' => ['Portland', 'Portland', NULL], + 'JM-05' => ['St. Mary', 'St. Mary', NULL], + 'JM-06' => ['St. Ann', 'St. Ann', NULL], + 'JM-07' => ['Trelawny', 'Trelawny', NULL], + 'JM-08' => ['St. James', 'St. James', NULL], + 'JM-09' => ['Hanover', 'Hanover', NULL], + 'JM-10' => ['Westmoreland', 'Westmoreland', NULL], + 'JM-11' => ['St. Elizabeth', 'St. Elizabeth', NULL], + 'JM-12' => ['Manchester', 'Manchester', NULL], + 'JM-13' => ['Clarendon', 'Clarendon', NULL], + 'JM-14' => ['St. Catherine', 'St. Catherine', NULL], + ], + // Japan. + 'JP' => [ + 'JP01' => ['Hokkaido', 'Hokkaido', '北海道'], + 'JP02' => ['Aomori', 'Aomori', '青森県'], + 'JP03' => ['Iwate', 'Iwate', '岩手県'], + 'JP04' => ['Miyagi', 'Miyagi', '宮城県'], + 'JP05' => ['Akita', 'Akita', '秋田県'], + 'JP06' => ['Yamagata', 'Yamagata', '山形県'], + 'JP07' => ['Fukushima', 'Fukushima', '福島県'], + 'JP08' => ['Ibaraki', 'Ibaraki', '茨城県'], + 'JP09' => ['Tochigi', 'Tochigi', '栃木県'], + 'JP10' => ['Gunma', 'Gunma', '群馬県'], + 'JP11' => ['Saitama', 'Saitama', '埼玉県'], + 'JP12' => ['Chiba', 'Chiba', '千葉県'], + 'JP13' => ['Tokyo', 'Tokyo', '東京都'], + 'JP14' => ['Kanagawa', 'Kanagawa', '神奈川県'], + 'JP15' => ['Niigata', 'Niigata', '新潟県'], + 'JP16' => ['Toyama', 'Toyama', '富山県'], + 'JP17' => ['Ishikawa', 'Ishikawa', '石川県'], + 'JP18' => ['Fukui', 'Fukui', '福井県'], + 'JP19' => ['Yamanashi', 'Yamanashi', '山梨県'], + 'JP20' => ['Nagano', 'Nagano', '長野県'], + 'JP21' => ['Gifu', 'Gifu', '岐阜県'], + 'JP22' => ['Shizuoka', 'Shizuoka', '静岡県'], + 'JP23' => ['Aichi', 'Aichi', '愛知県'], + 'JP24' => ['Mie', 'Mie', '三重県'], + 'JP25' => ['Shiga', 'Shiga', '滋賀県'], + 'JP26' => ['Kyoto', 'Kyoto', '京都府'], + 'JP27' => ['Osaka', 'Osaka', '大阪府'], + 'JP28' => ['Hyogo', 'Hyogo', '兵庫県'], + 'JP29' => ['Nara', 'Nara', '奈良県'], + 'JP30' => ['Wakayama', 'Wakayama', '和歌山県'], + 'JP31' => ['Tottori', 'Tottori', '鳥取県'], + 'JP32' => ['Shimane', 'Shimane', '島根県'], + 'JP33' => ['Okayama', 'Okayama', '岡山県'], + 'JP34' => ['Hiroshima', 'Hiroshima', '広島県'], + 'JP35' => ['Yamaguchi', 'Yamaguchi', '山口県'], + 'JP36' => ['Tokushima', 'Tokushima', '徳島県'], + 'JP37' => ['Kagawa', 'Kagawa', '香川県'], + 'JP38' => ['Ehime', 'Ehime', '愛媛県'], + 'JP39' => ['Kochi', 'Kochi', '高知県'], + 'JP40' => ['Fukuoka', 'Fukuoka', '福岡県'], + 'JP41' => ['Saga', 'Saga', '佐賀県'], + 'JP42' => ['Nagasaki', 'Nagasaki', '長崎県'], + 'JP43' => ['Kumamoto', 'Kumamoto', '熊本県'], + 'JP44' => ['Oita', 'Oita', '大分県'], + 'JP45' => ['Miyazaki', 'Miyazaki', '宮崎県'], + 'JP46' => ['Kagoshima', 'Kagoshima', '鹿児島県'], + 'JP47' => ['Okinawa', 'Okinawa', '沖縄県'], + ], + // Kenya. + 'KE' => [], + // South Korea. + 'KR' => [], + // Kuwait. + 'KW' => [], + // Laos. + 'LA' => [], + // Lebanon. + 'LB' => [], + // Sri Lanka. + 'LK' => [], + // Liberia. + 'LR' => [], + // Luxembourg. + 'LU' => [], + // Moldova. + 'MD' => [], + // Martinique. + 'MQ' => [], + // Malta. + 'MT' => [], + // Mexico. + 'MX' => [ + 'DF' => ['CDMX', 'Ciudad de México', NULL], + 'JA' => ['Jal.', 'Jalisco', NULL], + 'NL' => ['N.L.', 'Nuevo León', NULL], + 'AG' => ['Ags.', 'Aguascalientes', NULL], + 'BC' => ['B.C.', 'Baja California', NULL], + 'BS' => ['B.C.S.', 'Baja California Sur', NULL], + 'CM' => ['Camp.', 'Campeche', NULL], + 'CS' => ['Chis.', 'Chiapas', NULL], + 'CH' => ['Chih.', 'Chihuahua', NULL], + 'CO' => ['Coah.', 'Coahuila de Zaragoza', NULL], + 'CL' => ['Col.', 'Colima', NULL], + 'DG' => ['Dgo.', 'Durango', NULL], + 'GT' => ['Gto.', 'Guanajuato', NULL], + 'GR' => ['Gro.', 'Guerrero', NULL], + 'HG' => ['Hgo.', 'Hidalgo', NULL], + 'MX' => ['Méx.', 'Estado de México', NULL], + 'MI' => ['Mich.', 'Michoacán', NULL], + 'MO' => ['Mor.', 'Morelos', NULL], + 'NA' => ['Nay.', 'Nayarit', NULL], + 'OA' => ['Oax.', 'Oaxaca', NULL], + 'PU' => ['Pue.', 'Puebla', NULL], + 'QT' => ['Qro.', 'Querétaro', NULL], + 'QR' => ['Q.R.', 'Quintana Roo', NULL], + 'SL' => ['S.L.P.', 'San Luis Potosí', NULL], + 'SI' => ['Sin.', 'Sinaloa', NULL], + 'SO' => ['Son.', 'Sonora', NULL], + 'TB' => ['Tab.', 'Tabasco', NULL], + 'TM' => ['Tamps.', 'Tamaulipas', NULL], + 'TL' => ['Tlax.', 'Tlaxcala', NULL], + 'VE' => ['Ver.', 'Veracruz', NULL], + 'YU' => ['Yuc.', 'Yucatán', NULL], + 'ZA' => ['Zac.', 'Zacatecas', NULL], + ], + // Malaysia. + 'MY' => [ + 'JHR' => ['Johor', 'Johor', NULL], + 'KDH' => ['Kedah', 'Kedah', NULL], + 'KTN' => ['Kelantan', 'Kelantan', NULL], + 'LBN' => ['Labuan', 'Labuan', NULL], + 'MLK' => ['Melaka', 'Melaka', NULL], + 'NSN' => ['Negeri Sembilan', 'Negeri Sembilan', NULL], + 'PHG' => ['Pahang', 'Pahang', NULL], + 'PNG' => ['Pulau Pinang', 'Pulau Pinang', NULL], + 'PRK' => ['Perak', 'Perak', NULL], + 'PLS' => ['Perlis', 'Perlis', NULL], + 'SBH' => ['Sabah', 'Sabah', NULL], + 'SWK' => ['Sarawak', 'Sarawak', NULL], + 'SGR' => ['Selangor', 'Selangor', NULL], + 'TRG' => ['Terengganu', 'Terengganu', NULL], + 'PJY' => ['Putrajaya', 'Putrajaya', NULL], + 'KUL' => ['Kuala Lumpur', 'Kuala Lumpur', NULL], + ], + // Mozambique. + 'MZ' => [ + 'MZP' => ['Cabo Delgado', 'Cabo Delgado', NULL], + 'MZG' => ['Gaza', 'Gaza', NULL], + 'MZI' => ['Inhambane', 'Inhambane', NULL], + 'MZB' => ['Manica', 'Manica', NULL], + 'MZL' => ['Maputo', 'Maputo', NULL], + 'MZMPM' => ['Cidade de Maputo', 'Cidade de Maputo', NULL], + 'MZN' => ['Nampula', 'Nampula', NULL], + 'MZA' => ['Niassa', 'Niassa', NULL], + 'MZS' => ['Sofala', 'Sofala', NULL], + 'MZT' => ['Tete', 'Tete', NULL], + 'MZQ' => ['Zambezia', 'Zambezia', NULL], + ], + // Namibia. + 'NA' => [], + // Nigeria. + 'NG' => [ + 'AB' => ['Abia', 'Abia', NULL], + 'FC' => ['Federal Capital Territory', 'Federal Capital Territory', NULL], + 'AD' => ['Adamawa', 'Adamawa', NULL], + 'AK' => ['Akwa Ibom', 'Akwa Ibom', NULL], + 'AN' => ['Anambra', 'Anambra', NULL], + 'BA' => ['Bauchi', 'Bauchi', NULL], + 'BY' => ['Bayelsa', 'Bayelsa', NULL], + 'BE' => ['Benue', 'Benue', NULL], + 'BO' => ['Borno', 'Borno', NULL], + 'CR' => ['Cross River', 'Cross River', NULL], + 'DE' => ['Delta', 'Delta', NULL], + 'EB' => ['Ebonyi', 'Ebonyi', NULL], + 'ED' => ['Edo', 'Edo', NULL], + 'EK' => ['Ekiti', 'Ekiti', NULL], + 'EN' => ['Enugu', 'Enugu', NULL], + 'GO' => ['Gombe', 'Gombe', NULL], + 'IM' => ['Imo', 'Imo', NULL], + 'JI' => ['Jigawa', 'Jigawa', NULL], + 'KD' => ['Kaduna', 'Kaduna', NULL], + 'KN' => ['Kano', 'Kano', NULL], + 'KT' => ['Katsina', 'Katsina', NULL], + 'KE' => ['Kebbi', 'Kebbi', NULL], + 'KO' => ['Kogi', 'Kogi', NULL], + 'KW' => ['Kwara', 'Kwara', NULL], + 'LA' => ['Lagos', 'Lagos', NULL], + 'NA' => ['Nasarawa', 'Nasarawa', NULL], + 'NI' => ['Niger', 'Niger', NULL], + 'OG' => ['Ogun State', 'Ogun State', NULL], + 'ON' => ['Ondo', 'Ondo', NULL], + 'OS' => ['Osun', 'Osun', NULL], + 'OY' => ['Oyo', 'Oyo', NULL], + 'PL' => ['Plateau', 'Plateau', NULL], + 'RI' => ['Rivers', 'Rivers', NULL], + 'SO' => ['Sokoto', 'Sokoto', NULL], + 'TA' => ['Taraba', 'Taraba', NULL], + 'YO' => ['Yobe', 'Yobe', NULL], + 'ZA' => ['Zamfara', 'Zamfara', NULL], + ], + // Netherlands. + 'NL' => [], + // Norway. + 'NO' => [], + // Nepal. + 'NP' => [], + // New Zealand. + 'NZ' => [], + // Peru. + 'PE' => [ + 'CAL' => ['Callao', 'Callao', NULL], + 'LMA' => ['Municipalidad Metropolitana de Lima', 'Municipalidad Metropolitana de Lima', NULL], + 'AMA' => ['Amazonas', 'Amazonas', NULL], + 'ANC' => ['Áncash', 'Áncash', NULL], + 'APU' => ['Apurímac', 'Apurímac', NULL], + 'ARE' => ['Arequipa', 'Arequipa', NULL], + 'AYA' => ['Ayacucho', 'Ayacucho', NULL], + 'CAJ' => ['Cajamarca', 'Cajamarca', NULL], + 'CUS' => ['Cuzco', 'Cuzco', NULL], + 'HUV' => ['Huancavelica', 'Huancavelica', NULL], + 'HUC' => ['Huánuco', 'Huánuco', NULL], + 'ICA' => ['Ica', 'Ica', NULL], + 'JUN' => ['Junín', 'Junín', NULL], + 'LAL' => ['La Libertad', 'La Libertad', NULL], + 'LAM' => ['Lambayeque', 'Lambayeque', NULL], + 'LIM' => ['Gobierno Regional de Lima', 'Gobierno Regional de Lima', NULL], + 'LOR' => ['Loreto', 'Loreto', NULL], + 'MDD' => ['Madre de Dios', 'Madre de Dios', NULL], + 'MOQ' => ['Moquegua', 'Moquegua', NULL], + 'PAS' => ['Pasco', 'Pasco', NULL], + 'PIU' => ['Piura', 'Piura', NULL], + 'PUN' => ['Puno', 'Puno', NULL], + 'SAM' => ['San Martín', 'San Martín', NULL], + 'TAC' => ['Tacna', 'Tacna', NULL], + 'TUM' => ['Tumbes', 'Tumbes', NULL], + 'UCA' => ['Ucayali', 'Ucayali', NULL], + ], + // Philippines. + 'PH' => [ + 'ABR' => ['Abra', 'Abra', NULL], + 'AGN' => ['Agusan del Norte', 'Agusan del Norte', NULL], + 'AGS' => ['Agusan del Sur', 'Agusan del Sur', NULL], + 'AKL' => ['Aklan', 'Aklan', NULL], + 'ALB' => ['Albay', 'Albay', NULL], + 'ANT' => ['Antique', 'Antique', NULL], + 'APA' => ['Apayao', 'Apayao', NULL], + 'AUR' => ['Aurora', 'Aurora', NULL], + 'BAS' => ['Basilan', 'Basilan', NULL], + 'BAN' => ['Bataan', 'Bataan', NULL], + 'BTN' => ['Batanes', 'Batanes', NULL], + 'BTG' => ['Batangas', 'Batangas', NULL], + 'BEN' => ['Benguet', 'Benguet', NULL], + 'BIL' => ['Biliran', 'Biliran', NULL], + 'BOH' => ['Bohol', 'Bohol', NULL], + 'BUK' => ['Bukidnon', 'Bukidnon', NULL], + 'BUL' => ['Bulacan', 'Bulacan', NULL], + 'CAG' => ['Cagayan', 'Cagayan', NULL], + 'CAN' => ['Camarines Norte', 'Camarines Norte', NULL], + 'CAS' => ['Camarines Sur', 'Camarines Sur', NULL], + 'CAM' => ['Camiguin', 'Camiguin', NULL], + 'CAP' => ['Capiz', 'Capiz', NULL], + 'CAT' => ['Catanduanes', 'Catanduanes', NULL], + 'CAV' => ['Cavite', 'Cavite', NULL], + 'CEB' => ['Cebu', 'Cebu', NULL], + 'COM' => ['Compostela Valley', 'Compostela Valley', NULL], + 'NCO' => ['Cotabato', 'Cotabato', NULL], + 'DAV' => ['Davao del Norte', 'Davao del Norte', NULL], + 'DAS' => ['Davao del Sur', 'Davao del Sur', NULL], + 'DAC' => ['Davao Occidental', 'Davao Occidental', NULL], + 'DAO' => ['Davao Oriental', 'Davao Oriental', NULL], + 'DIN' => ['Dinagat Islands', 'Dinagat Islands', NULL], + 'EAS' => ['Eastern Samar', 'Eastern Samar', NULL], + 'GUI' => ['Guimaras', 'Guimaras', NULL], + 'IFU' => ['Ifugao', 'Ifugao', NULL], + 'ILN' => ['Ilocos Norte', 'Ilocos Norte', NULL], + 'ILS' => ['Ilocos Sur', 'Ilocos Sur', NULL], + 'ILI' => ['Iloilo', 'Iloilo', NULL], + 'ISA' => ['Isabela', 'Isabela', NULL], + 'KAL' => ['Kalinga', 'Kalinga', NULL], + 'LUN' => ['La Union', 'La Union', NULL], + 'LAG' => ['Laguna', 'Laguna', NULL], + 'LAN' => ['Lanao del Norte', 'Lanao del Norte', NULL], + 'LAS' => ['Lanao del Sur', 'Lanao del Sur', NULL], + 'LEY' => ['Leyte', 'Leyte', NULL], + 'MAG' => ['Maguindanao', 'Maguindanao', NULL], + 'MAD' => ['Marinduque', 'Marinduque', NULL], + 'MAS' => ['Masbate', 'Masbate', NULL], + 'MSC' => ['Misamis Occidental', 'Misamis Occidental', NULL], + 'MSR' => ['Misamis Oriental', 'Misamis Oriental', NULL], + 'MOU' => ['Mountain Province', 'Mountain Province', NULL], + 'NEC' => ['Negros Occidental', 'Negros Occidental', NULL], + 'NER' => ['Negros Oriental', 'Negros Oriental', NULL], + 'NSA' => ['Northern Samar', 'Northern Samar', NULL], + 'NUE' => ['Nueva Ecija', 'Nueva Ecija', NULL], + 'NUV' => ['Nueva Vizcaya', 'Nueva Vizcaya', NULL], + 'MDC' => ['Mindoro Occidental', 'Mindoro Occidental', NULL], + 'MDR' => ['Mindoro Oriental', 'Mindoro Oriental', NULL], + 'PLW' => ['Palawan', 'Palawan', NULL], + 'PAM' => ['Pampanga', 'Pampanga', NULL], + 'PAN' => ['Pangasinan', 'Pangasinan', NULL], + 'QUE' => ['Quezon Province', 'Quezon Province', NULL], + 'QUI' => ['Quirino', 'Quirino', NULL], + 'RIZ' => ['Rizal', 'Rizal', NULL], + 'ROM' => ['Romblon', 'Romblon', NULL], + 'WSA' => ['Samar', 'Samar', NULL], + 'SAR' => ['Sarangani', 'Sarangani', NULL], + 'SIQ' => ['Siquijor', 'Siquijor', NULL], + 'SOR' => ['Sorsogon', 'Sorsogon', NULL], + 'SCO' => ['South Cotabato', 'South Cotabato', NULL], + 'SLE' => ['Southern Leyte', 'Southern Leyte', NULL], + 'SUK' => ['Sultan Kudarat', 'Sultan Kudarat', NULL], + 'SLU' => ['Sulu', 'Sulu', NULL], + 'SUN' => ['Surigao del Norte', 'Surigao del Norte', NULL], + 'SUR' => ['Surigao del Sur', 'Surigao del Sur', NULL], + 'TAR' => ['Tarlac', 'Tarlac', NULL], + 'TAW' => ['Tawi-Tawi', 'Tawi-Tawi', NULL], + 'ZMB' => ['Zambales', 'Zambales', NULL], + 'ZAN' => ['Zamboanga del Norte', 'Zamboanga del Norte', NULL], + 'ZAS' => ['Zamboanga del Sur', 'Zamboanga del Sur', NULL], + 'ZSI' => ['Zamboanga Sibuguey', 'Zamboanga Sibuguey', NULL], + '00' => ['Metro Manila', 'Metro Manila', NULL], + ], + // Pakistan. + 'PK' => [], + // Poland. + 'PL' => [], + // Puerto Rico. + 'PR' => [], + // Portugal. + 'PT' => [], + // Paraguay. + 'PY' => [], + // Reunion. + 'RE' => [], + // Romania. + 'RO' => [], + // Serbia. + 'RS' => [], + // Sweden. + 'SE' => [], + // Singapore. + 'SG' => [], + // Slovenia. + 'SI' => [], + // Slovakia. + 'SK' => [], + // Thailand. + 'TH' => [ + 'TH-37' => ['Amnat Charoen', 'Amnat Charoen', 'อำนาจเจริญ'], + 'TH-15' => ['Ang Thong', 'Ang Thong', 'อ่างทอง'], + 'TH-14' => ['Phra Nakhon Si Ayutthaya', 'Phra Nakhon Si Ayutthaya', 'พระนครศรีอยุธยา'], + 'TH-10' => ['Bangkok', 'Bangkok', 'กรุงเทพมหานคร'], + 'TH-38' => ['Bueng Kan', 'Bueng Kan', 'จังหวัด บึงกาฬ'], + 'TH-31' => ['Buri Ram', 'Buri Ram', 'บุรีรัมย์'], + 'TH-24' => ['Chachoengsao', 'Chachoengsao', 'ฉะเชิงเทรา'], + 'TH-18' => ['Chai Nat', 'Chai Nat', 'ชัยนาท'], + 'TH-36' => ['Chaiyaphum', 'Chaiyaphum', 'ชัยภูมิ'], + 'TH-22' => ['Chanthaburi', 'Chanthaburi', 'จันทบุรี'], + 'TH-50' => ['Chiang Rai', 'Chiang Rai', 'เชียงราย'], + 'TH-57' => ['Chiang Mai', 'Chiang Mai', 'เชียงใหม่'], + 'TH-20' => ['Chon Buri', 'Chon Buri', 'ชลบุรี'], + 'TH-86' => ['Chumpon', 'Chumpon', 'ชุมพร'], + 'TH-46' => ['Kalasin', 'Kalasin', 'กาฬสินธุ์'], + 'TH-62' => ['Kamphaeng Phet', 'Kamphaeng Phet', 'กำแพงเพชร'], + 'TH-71' => ['Kanchanaburi', 'Kanchanaburi', 'กาญจนบุรี'], + 'TH-40' => ['Khon Kaen', 'Khon Kaen', 'ขอนแก่น'], + 'TH-81' => ['Krabi', 'Krabi', 'กระบี่'], + 'TH-52' => ['Lampang', 'Lampang', 'ลำปาง'], + 'TH-51' => ['Lamphun', 'Lamphun', 'ลำพูน'], + 'TH-42' => ['Loei', 'Loei', 'เลย'], + 'TH-16' => ['Lop Buri', 'Lop Buri', 'ลพบุรี'], + 'TH-58' => ['Mae Hong Son', 'Mae Hong Son', 'แม่ฮ่องสอน'], + 'TH-44' => ['Maha Sarakham', 'Maha Sarakham', 'มหาสารคาม'], + 'TH-49' => ['Mukdahan', 'Mukdahan', 'มุกดาหาร'], + 'TH-26' => ['Nakhon Nayok', 'Nakhon Nayok', 'นครนายก'], + 'TH-73' => ['Nakhon Pathom', 'Nakhon Pathom', 'นครปฐม'], + 'TH-48' => ['Nakhon Phanom', 'Nakhon Phanom', 'นครพนม'], + 'TH-30' => ['Nakhon Ratchasima', 'Nakhon Ratchasima', 'นครราชสีมา'], + 'TH-60' => ['Nakhon Sawan', 'Nakhon Sawan', 'นครสวรรค์'], + 'TH-80' => ['Nakhon Si Thammarat', 'Nakhon Si Thammarat', 'นครศรีธรรมราช'], + 'TH-55' => ['Nan', 'Nan', 'น่าน'], + 'TH-96' => ['Narathiwat', 'Narathiwat', 'นราธิวาส'], + 'TH-39' => ['Nong Bua Lam Phu', 'Nong Bua Lam Phu', 'หนองบัวลำภู'], + 'TH-43' => ['Nong Khai', 'Nong Khai', 'หนองคาย'], + 'TH-12' => ['Nonthaburi', 'Nonthaburi', 'นนทบุรี'], + 'TH-13' => ['Pathum Thani', 'Pathum Thani', 'ปทุมธานี'], + 'TH-94' => ['Pattani', 'Pattani', 'ปัตตานี'], + 'TH-82' => ['Phang Nga', 'Phang Nga', 'พังงา'], + 'TH-93' => ['Phattalung', 'Phattalung', 'พัทลุง'], + 'TH-56' => ['Phayao', 'Phayao', 'พะเยา'], + 'TH-67' => ['Phetchabun', 'Phetchabun', 'เพชรบูรณ์'], + 'TH-76' => ['Phetchaburi', 'Phetchaburi', 'เพชรบุรี'], + 'TH-66' => ['Phichit', 'Phichit', 'พิจิตร'], + 'TH-65' => ['Phitsanulok', 'Phitsanulok', 'พิษณุโลก'], + 'TH-54' => ['Phrae', 'Phrae', 'แพร่'], + 'TH-83' => ['Phuket', 'Phuket', 'ภูเก็ต'], + 'TH-25' => ['Prachin Buri', 'Prachin Buri', 'ปราจีนบุรี'], + 'TH-77' => ['Prachuap Khiri Khan', 'Prachuap Khiri Khan', 'ประจวบคีรีขันธ์'], + 'TH-85' => ['Ranong', 'Ranong', 'ระนอง'], + 'TH-70' => ['Ratchaburi', 'Ratchaburi', 'ราชบุรี'], + 'TH-21' => ['Rayong', 'Rayong', 'ระยอง'], + 'TH-45' => ['Roi Et', 'Roi Et', 'ร้อยเอ็ด'], + 'TH-27' => ['Sa Kaeo', 'Sa Kaeo', 'สระแก้ว'], + 'TH-47' => ['Sakon Nakhon', 'Sakon Nakhon', 'สกลนคร'], + 'TH-11' => ['Samut Prakan', 'Samut Prakan', 'สมุทรปราการ'], + 'TH-74' => ['Samut Sakhon', 'Samut Sakhon', 'สมุทรสาคร'], + 'TH-75' => ['Samut Songkhram', 'Samut Songkhram', 'สมุทรสงคราม'], + 'TH-19' => ['Saraburi', 'Saraburi', 'สระบุรี'], + 'TH-91' => ['Satun', 'Satun', 'สตูล'], + 'TH-17' => ['Sing Buri', 'Sing Buri', 'สิงห์บุรี'], + 'TH-33' => ['Si Sa Ket', 'Si Sa Ket', 'ศรีสะเกษ'], + 'TH-90' => ['Songkhla', 'Songkhla', 'สงขลา'], + 'TH-64' => ['Sukhothai', 'Sukhothai', 'สุโขทัย'], + 'TH-72' => ['Suphanburi', 'Suphanburi', 'สุพรรณบุรี'], + 'TH-84' => ['Surat Thani', 'Surat Thani', 'สุราษฎร์ธานี'], + 'TH-32' => ['Surin', 'Surin', 'สุรินทร์'], + 'TH-63' => ['Tak', 'Tak', 'ตาก'], + 'TH-92' => ['Trang', 'Trang', 'ตรัง'], + 'TH-23' => ['Trat', 'Trat', 'ตราด'], + 'TH-34' => ['Ubon Ratchathani', 'Ubon Ratchathani', 'อุบลราชธานี'], + 'TH-41' => ['Udon Thani', 'Udon Thani', 'อุดรธานี'], + 'TH-61' => ['Uthai Thani', 'Uthai Thani', 'อุทัยธานี'], + 'TH-53' => ['Uttaradit', 'Uttaradit', 'อุตรดิตถ์'], + 'TH-95' => ['Yala', 'Yala', 'ยะลา'], + 'TH-35' => ['Yasothon', 'Yasothon', 'ยโสธร'], + ], + // Turkey. + 'TR' => [ + 'TR01' => ['Adana', 'Adana', NULL], + 'TR02' => ['Adıyaman', 'Adıyaman', NULL], + 'TR03' => ['Afyon', 'Afyon', NULL], + 'TR04' => ['Ağrı', 'Ağrı', NULL], + 'TR05' => ['Amasya', 'Amasya', NULL], + 'TR06' => ['Ankara', 'Ankara', NULL], + 'TR07' => ['Antalya', 'Antalya', NULL], + 'TR08' => ['Artvin', 'Artvin', NULL], + 'TR09' => ['Aydın', 'Aydın', NULL], + 'TR10' => ['Balıkesir', 'Balıkesir', NULL], + 'TR11' => ['Bilecik', 'Bilecik', NULL], + 'TR12' => ['Bingöl', 'Bingöl', NULL], + 'TR13' => ['Bitlis', 'Bitlis', NULL], + 'TR14' => ['Bolu', 'Bolu', NULL], + 'TR15' => ['Burdur', 'Burdur', NULL], + 'TR16' => ['Bursa', 'Bursa', NULL], + 'TR17' => ['Çanakkale', 'Çanakkale', NULL], + 'TR18' => ['Çankırı', 'Çankırı', NULL], + 'TR19' => ['Çorum', 'Çorum', NULL], + 'TR20' => ['Denizli', 'Denizli', NULL], + 'TR21' => ['Diyarbakır', 'Diyarbakır', NULL], + 'TR22' => ['Edirne', 'Edirne', NULL], + 'TR23' => ['Elazığ', 'Elazığ', NULL], + 'TR24' => ['Erzincan', 'Erzincan', NULL], + 'TR25' => ['Erzurum', 'Erzurum', NULL], + 'TR26' => ['Eskişehir', 'Eskişehir', NULL], + 'TR27' => ['Gaziantep', 'Gaziantep', NULL], + 'TR28' => ['Giresun', 'Giresun', NULL], + 'TR29' => ['Gümüşhane', 'Gümüşhane', NULL], + 'TR30' => ['Hakkari', 'Hakkari', NULL], + 'TR31' => ['Hatay', 'Hatay', NULL], + 'TR32' => ['Isparta', 'Isparta', NULL], + 'TR33' => ['Mersin', 'Mersin', NULL], + 'TR34' => ['İstanbul', 'İstanbul', NULL], + 'TR35' => ['İzmir', 'İzmir', NULL], + 'TR36' => ['Kars', 'Kars', NULL], + 'TR37' => ['Kastamonu', 'Kastamonu', NULL], + 'TR38' => ['Kayseri', 'Kayseri', NULL], + 'TR39' => ['Kırklareli', 'Kırklareli', NULL], + 'TR40' => ['Kırşehir', 'Kırşehir', NULL], + 'TR41' => ['Kocaeli', 'Kocaeli', NULL], + 'TR42' => ['Konya', 'Konya', NULL], + 'TR43' => ['Kütahya', 'Kütahya', NULL], + 'TR44' => ['Malatya', 'Malatya', NULL], + 'TR45' => ['Manisa', 'Manisa', NULL], + 'TR46' => ['Kahramanmaraş', 'Kahramanmaraş', NULL], + 'TR47' => ['Mardin', 'Mardin', NULL], + 'TR48' => ['Muğla', 'Muğla', NULL], + 'TR49' => ['Muş', 'Muş', NULL], + 'TR50' => ['Nevşehir', 'Nevşehir', NULL], + 'TR51' => ['Niğde', 'Niğde', NULL], + 'TR52' => ['Ordu', 'Ordu', NULL], + 'TR53' => ['Rize', 'Rize', NULL], + 'TR54' => ['Sakarya', 'Sakarya', NULL], + 'TR55' => ['Samsun', 'Samsun', NULL], + 'TR56' => ['Siirt', 'Siirt', NULL], + 'TR57' => ['Sinop', 'Sinop', NULL], + 'TR58' => ['Sivas', 'Sivas', NULL], + 'TR59' => ['Tekirdağ', 'Tekirdağ', NULL], + 'TR60' => ['Tokat', 'Tokat', NULL], + 'TR61' => ['Trabzon', 'Trabzon', NULL], + 'TR62' => ['Tunceli', 'Tunceli', NULL], + 'TR63' => ['Şanlıurfa', 'Şanlıurfa', NULL], + 'TR64' => ['Uşak', 'Uşak', NULL], + 'TR65' => ['Van', 'Van', NULL], + 'TR66' => ['Yozgat', 'Yozgat', NULL], + 'TR67' => ['Zonguldak', 'Zonguldak', NULL], + 'TR68' => ['Aksaray', 'Aksaray', NULL], + 'TR69' => ['Bayburt', 'Bayburt', NULL], + 'TR70' => ['Karaman', 'Karaman', NULL], + 'TR71' => ['Kırıkkale', 'Kırıkkale', NULL], + 'TR72' => ['Batman', 'Batman', NULL], + 'TR73' => ['Şırnak', 'Şırnak', NULL], + 'TR74' => ['Bartın', 'Bartın', NULL], + 'TR75' => ['Ardahan', 'Ardahan', NULL], + 'TR76' => ['Iğdır', 'Iğdır', NULL], + 'TR77' => ['Yalova', 'Yalova', NULL], + 'TR78' => ['Karabük', 'Karabük', NULL], + 'TR79' => ['Kilis', 'Kilis', NULL], + 'TR80' => ['Osmaniye', 'Osmaniye', NULL], + 'TR81' => ['Düzce', 'Düzce', NULL], + ], + // Tanzania. + 'TZ' => [], + // Uganda. + 'UG' => [], + // United States Minor Outlying Islands. + 'UM' => [], + // United States. + 'US' => [ + 'AL' => ['AL', 'Alabama', NULL], + 'AK' => ['AK', 'Alaska', NULL], + 'AZ' => ['AZ', 'Arizona', NULL], + 'AR' => ['AR', 'Arkansas', NULL], + 'CA' => ['CA', 'California', NULL], + 'CO' => ['CO', 'Colorado', NULL], + 'CT' => ['CT', 'Connecticut', NULL], + 'DE' => ['DE', 'Delaware', NULL], + 'DC' => ['DC', 'District of Columbia', NULL], + 'FL' => ['FL', 'Florida', NULL], + 'GA' => ['GA', 'Georgia', NULL], + 'HI' => ['HI', 'Hawaii', NULL], + 'ID' => ['ID', 'Idaho', NULL], + 'IL' => ['IL', 'Illinois', NULL], + 'IN' => ['IN', 'Indiana', NULL], + 'IA' => ['IA', 'Iowa', NULL], + 'KS' => ['KS', 'Kansas', NULL], + 'KY' => ['KY', 'Kentucky', NULL], + 'LA' => ['LA', 'Louisiana', NULL], + 'ME' => ['ME', 'Maine', NULL], + 'MD' => ['MD', 'Maryland', NULL], + 'MA' => ['MA', 'Massachusetts', NULL], + 'MI' => ['MI', 'Michigan', NULL], + 'MN' => ['MN', 'Minnesota', NULL], + 'MS' => ['MS', 'Mississippi', NULL], + 'MO' => ['MO', 'Missouri', NULL], + 'MT' => ['MT', 'Montana', NULL], + 'NE' => ['NE', 'Nebraska', NULL], + 'NV' => ['NV', 'Nevada', NULL], + 'NH' => ['NH', 'New Hampshire', NULL], + 'NJ' => ['NJ', 'New Jersey', NULL], + 'NM' => ['NM', 'New Mexico', NULL], + 'NY' => ['NY', 'New York', NULL], + 'NC' => ['NC', 'North Carolina', NULL], + 'ND' => ['ND', 'North Dakota', NULL], + 'OH' => ['OH', 'Ohio', NULL], + 'OK' => ['OK', 'Oklahoma', NULL], + 'OR' => ['OR', 'Oregon', NULL], + 'PA' => ['PA', 'Pennsylvania', NULL], + 'RI' => ['RI', 'Rhode Island', NULL], + 'SC' => ['SC', 'South Carolina', NULL], + 'SD' => ['SD', 'South Dakota', NULL], + 'TN' => ['TN', 'Tennessee', NULL], + 'TX' => ['TX', 'Texas', NULL], + 'UT' => ['UT', 'Utah', NULL], + 'VT' => ['VT', 'Vermont', NULL], + 'VA' => ['VA', 'Virginia', NULL], + 'WA' => ['WA', 'Washington', NULL], + 'WV' => ['WV', 'West Virginia', NULL], + 'WI' => ['WI', 'Wisconsin', NULL], + 'WY' => ['WY', 'Wyoming', NULL], + 'AA' => ['AA', 'Armed Forces (AA)', NULL], + 'AE' => ['AE', 'Armed Forces (AE)', NULL], + 'AP' => ['AP', 'Armed Forces (AP)', NULL], + //[ 'AS', 'American Samoa', NULL ], + //[ 'GU', 'Guam', NULL ], + //[ 'MH', 'Marshall Islands', NULL ], + //[ 'FM', 'Micronesia', NULL ], + //[ 'MP', 'Northern Mariana Islands', NULL ], + //[ 'PW', 'Palau', NULL ], + //[ 'PR', 'Puerto Rico', NULL ], + //[ 'VI', 'Virgin Islands', NULL ], + ], + // Vietnam. + 'VN' => [], + // Mayotte. + 'YT' => [], + // South Africa. + 'ZA' => [], + // Zambia. + 'ZM' => [], + ]; + // phpcs:enable +} + +/** + * WC_Stripe_Express_Checkout_Helper class. + */ +class WC_Stripe_Express_Checkout_Helper { + + /** + * Sanitize string for comparison. + * + * @param string $string String to be sanitized. + * + * @return string The sanitized string. + */ + public function sanitize_string( $string ) { + return trim( strtolower( $string ) ); + } + + /** + * Get normalized state from express checkout API dropdown list of states. + * + * @param string $state Full state name or state code. + * @param string $country Two-letter country code. + * + * @return string Normalized state or original state input value. + */ + public function get_normalized_state_from_pr_states( $state, $country ) { + // Include Payment Request API State list for compatibility with WC countries/states. + $pr_states = WC_Stripe_Payment_Request_Button_States::STATES; + + if ( ! isset( $pr_states[ $country ] ) ) { + return $state; + } + + foreach ( $pr_states[ $country ] as $wc_state_abbr => $pr_state ) { + $sanitized_state_string = $this->sanitize_string( $state ); + // Checks if input state matches with Payment Request state code (0), name (1) or localName (2). + if ( + ( ! empty( $pr_state[0] ) && $sanitized_state_string === $this->sanitize_string( $pr_state[0] ) ) || + ( ! empty( $pr_state[1] ) && $sanitized_state_string === $this->sanitize_string( $pr_state[1] ) ) || + ( ! empty( $pr_state[2] ) && $sanitized_state_string === $this->sanitize_string( $pr_state[2] ) ) + ) { + return $wc_state_abbr; + } + } + + return $state; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-12787.php b/tests/PHPStan/Analyser/data/bug-12787.php new file mode 100644 index 00000000000..189d88cc8b6 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-12787.php @@ -0,0 +1,22 @@ + $labels + */ + public function b(array $labels, \stdClass $payment): bool + { + $fullData = ' + { + "additionalData": { + "acquirerAccountCode": "TestPmmAcquirerAccount", + "authorisationMid": "1009", + "cvcResult": "1 Matches", + "avsResult": "4 AVS not supported for this card type", + "authCode": "25595", + "acquirerReference": "acquirerReference", + "expiryDate": "8/2018", + "avsResultRaw": "Y", + "cvcResultRaw": "M", + "refusalReasonRaw": "00 : Approved or completed successfully", + "refusalCodeRaw": "00", + "acquirerCode": "TestPmmAcquirer", + "inferredRefusalReason": "3D Secure Mandated", + "networkTxReference": "MCC123456789012", + "cardHolderName": "Test Cardholder", + "issuerCountry": "NL", + "countryCode": "NL", + "cardBin": "411111", + "issuerBin": "41111101", + "cardSchemeCommercial": "true", + "cardPaymentMethod": "visa", + "cardIssuingBank": "Bank of America", + "cardIssuingCountry": "US", + "cardIssuingCurrency": "USD", + "fundingSource": "PREPAID_RELOADABLE", + "cardSummary": "1111", + "isCardCommercial": "true", + "paymentMethodVariant": "visadebit", + "paymentMethod": "visa", + "coBrandedWith": "visa", + "businessTypeIdentifier": "PP", + "cardProductId": "P", + "bankSummary": "1111", + "bankAccount.ownerName": "A. Klaassen", + "bankAccount.iban": "NL13TEST0123456789", + "cavv": "AQIDBAUGBw", + "xid": "ODgxNDc2MDg2", + "cavvAlgorithm": "3", + "eci": "02", + "dsTransID": "f8062b92-66e9-4c5a-979a-f465e66a6e48", + "threeDSVersion": "2.1.0", + "threeDAuthenticatedResponse": "Y", + "liabilityShift": "true", + "threeDOffered": "true", + "threeDAuthenticated": "false", + "challengeCancel": "01", + "fraudResultType": "FRAUD", + "fraudManualReview": "false" + }, + "fraudResult": { + "accountScore": 10, + "result": { + "fraudCheckResult": { + "accountScore": "10", + "checkId": "26", + "name": "ShopperEmailRefCheck" + } + } + }, + "response": "[cancelOrRefund-received]" + }'; + + $result = json_decode($fullData, true); + + $r = $labels['result_code'] === '' + && $labels['merchant_reference'] === $payment->merchant_reference + && $labels['brand_code'] === $payment->brand_code + && $labels['acquirer_account_code'] === $result['additionalData']['acquirerAccountCode'] + && $labels['authorisation_mid'] === $result['additionalData']['authorisationMid'] + && $labels['cvc_result'] === $result['additionalData']['cvcResult'] + && $labels['auth_code'] === $result['additionalData']['authCode'] + && $labels['acquirer_reference'] === $result['additionalData']['acquirerReference'] + && $labels['expiry_date'] === $result['additionalData']['expiryDate'] + && $labels['avs_result_raw'] === $result['additionalData']['avsResultRaw'] + && $labels['cvc_result_raw'] === $result['additionalData']['cvcResultRaw'] + && $labels['acquirer_code'] === $result['additionalData']['acquirerCode'] + && $labels['inferred_refusal_reason'] === $result['additionalData']['inferredRefusalReason'] + && $labels['network_tx_reference'] === $result['additionalData']['networkTxReference'] + && $labels['issuer_country'] === $result['additionalData']['issuerCountry'] + && $labels['country_code'] === $result['additionalData']['countryCode'] + && $labels['card_bin'] === $result['additionalData']['cardBin'] + && $labels['issuer_bin'] === $result['additionalData']['issuerBin'] + && $labels['card_scheme_commercial'] === $result['additionalData']['cardSchemeCommercial'] + && $labels['card_payment_method'] === $result['additionalData']['cardPaymentMethod'] + && $labels['card_issuing_bank'] === $result['additionalData']['cardIssuingBank'] + && $labels['card_issuing_country'] === $result['additionalData']['cardIssuingCountry'] + && $labels['card_issuing_currency'] === $result['additionalData']['cardIssuingCurrency'] + && $labels['card_summary'] === $result['additionalData']['cardSummary'] + && $labels['payment_method_variant'] === $result['additionalData']['paymentMethodVariant'] + && $labels['payment_method'] === $result['additionalData']['paymentMethod'] + && $labels['co_branded_with'] === $result['additionalData']['coBrandedWith'] + && $labels['business_type_identifier'] === $result['additionalData']['businessTypeIdentifier'] + && $labels['card_product_id'] === $result['additionalData']['cardProductId'] + && $labels['bank_summary'] === $result['additionalData']['bankSummary'] + && $labels['cavv'] === $result['additionalData']['cavv'] + && $labels['xid'] === $result['additionalData']['xid'] + && $labels['cavv_algorithm'] === $result['additionalData']['cavvAlgorithm'] + && $labels['eci'] === $result['additionalData']['eci'] + && $labels['ds_trans_id'] === $result['additionalData']['dsTransID'] + && $labels['liability_shift'] === $result['additionalData']['liabilityShift'] + && $labels['fraud_result_type'] === $result['additionalData']['fraudResultType'] + && $labels['fraud_manual_review'] === $result['additionalData']['fraudManualReview'] + && $labels['fraud_result_account_score'] === $result['fraudResult']['accountScore'] + && $labels['fraud_result_check_id'] === $result['fraudResult']['result']['fraudCheckResult']['checkId'] + && $labels['fraud_result_name'] === $result['fraudResult']['result']['fraudCheckResult']['name'] + && $labels['response'] === $result['response']; + return $r; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-13218.php b/tests/PHPStan/Analyser/data/bug-13218.php new file mode 100644 index 00000000000..cb9a331d4b1 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-13218.php @@ -0,0 +1,27 @@ += 8.0 + +declare(strict_types = 1); + +namespace Bug13218; + +/** + * @template TSteps of iterable|int + */ +class Progress +{ + public mixed $total = 0; + + /** + * Create a new ProgressBar instance. + * + * @param TSteps $steps + */ + public function __construct(public string $label, public iterable|int $steps, public string $hint = '') + { + $this->total = match (true) { + is_int($this->steps) => $this->steps, + is_countable($this->steps) => count($this->steps), + is_iterable($this->steps) => iterator_count($this->steps), + }; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-1388.php b/tests/PHPStan/Analyser/data/bug-1388.php new file mode 100644 index 00000000000..7f85a04c177 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-1388.php @@ -0,0 +1,38 @@ +s; + $sId = $s->id; + + $data[$sId]['1'] = '1'; + $data[$sId]['2'] = '2'; + $data[$sId]['3']['31'] = false; + $data[$sId]['4']['41']['411'] = false; + foreach ($s->c as $c) { + $cId = $c->id; + + $data[$sId]['nodes'][$cId]['1'] = $c->name; + $data[$sId]['nodes'][$cId]['2'] = '2'; + $data[$sId]['nodes'][$cId]['3']['31'] = false; + $data[$sId]['nodes'][$cId]['4']['41']['411'] = false; + foreach ($c->d as $d) { + $dId = $d->id; + + $data[$sId]['nodes'][$cId]['nodes'][$dId]['1'] = $d->name; + $data[$sId]['nodes'][$cId]['nodes'][$dId]['2'] = '2'; + $data[$sId]['nodes'][$cId]['nodes'][$dId]['3']['31'] = false; + $data[$sId]['nodes'][$cId]['nodes'][$dId]['4']['41']['411'] = false; + } + } + } +} diff --git a/tests/PHPStan/Analyser/data/bug-1447.php b/tests/PHPStan/Analyser/data/bug-1447.php new file mode 100644 index 00000000000..53cffc3366b --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-1447.php @@ -0,0 +1,27 @@ + $v) { + if ($v === 'a') $e = true; + else if ($v === 'b') $e = true; + else if ($v === 'c') $e = true; + else if ($v === 'd') $e = true; + else if ($v === 'e') $e = true; + else if ($v === 'f') $e = true; + else if ($v === 'g') $e = true; + else if ($v === 'h') $e = true; + else if ($v === 'i') $e = true; + else if ($v === 'j') $e = true; + else if ($v === 'k') $e = true; + else if ($v === 'l') $e = true; + else if ($v === 'm') $e = true; + else if ($v === 'n') $e = true; + else if ($v === 'o') $e = true; + } + } +} diff --git a/tests/PHPStan/Analyser/data/bug-3686.php b/tests/PHPStan/Analyser/data/bug-3686.php new file mode 100644 index 00000000000..586a62a7711 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-3686.php @@ -0,0 +1,39 @@ + count($column2) ? 2 : 1; + + return $column; + } + +} diff --git a/tests/PHPStan/Analyser/data/bug-4308.php b/tests/PHPStan/Analyser/data/bug-4308.php new file mode 100644 index 00000000000..9584ebaf12f --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-4308.php @@ -0,0 +1,28 @@ += 8.0 + +namespace Bug4308; + +class Test +{ + /** + * @var (string|int|null)[] + * @phpstan-var array{ + * prop1?: string, prop2?: string, prop3?: string, + * prop4?: string, prop5?: string, prop6?: string, + * prop7?: string, prop8?: int, prop9?: int + * } + */ + protected array $updateData = []; + + /** + * @phpstan-param array{ + * prop1?: string, prop2?: string, prop3?: string, + * prop4?: string, prop5?: string, prop6?: string, + * prop7?: string, prop8?: int, prop9?: int + * } $data + */ + public function update(array $data): void + { + $this->updateData = $data + $this->updateData; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-5081.php b/tests/PHPStan/Analyser/data/bug-5081.php new file mode 100644 index 00000000000..25c35dcc2b0 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-5081.php @@ -0,0 +1,506 @@ + Preferences) in the final carrier price.'; +$_LANGADM['AdminCarrierWizard29aa46cc3d2677c7e0f216910df600ff'] = 'Free shipping'; +$_LANGADM['AdminCarrierWizardbafd7322c6e97d25b6299b5d6fe8920b'] = 'No'; +$_LANGADM['AdminCarrierWizard93cba07454f06a4a960172bbd6e2a435'] = 'Yes'; +$_LANGADM['AdminCarrierWizard780c462e85ba4399a5d42e88f69a15ca'] = 'Billing'; +$_LANGADM['AdminCarrierWizard0f696253cf9dacf6079bf5060e60da06'] = 'According to total price.'; +$_LANGADM['AdminCarrierWizarda083cb6637472c81ec701d3342320adf'] = 'According to total weight.'; +$_LANGADM['AdminCarrierWizard4b78ac8eb158840e9638a3aeb26c4a9d'] = 'Tax'; +$_LANGADM['AdminCarrierWizard6f3455d187a23443796efdcbe044096b'] = 'No tax'; +$_LANGADM['AdminCarrierWizard082ebbb29b5ba59c293a00a55581679b'] = 'Out-of-range behavior'; +$_LANGADM['AdminCarrierWizard482836cce404046ca7dc34fb0a6fc526'] = 'Apply the cost of the highest defined range'; +$_LANGADM['AdminCarrierWizard4f890cf6a72112cad95093baecf39831'] = 'Disable carrier'; +$_LANGADM['AdminCarrierWizard885ef9bdb910d1379b853075daf44e43'] = 'Out-of-range behavior occurs when no defined range matches the customer\'s cart (e.g. when the weight of the cart is greater than the highest weight limit defined by the weight ranges).'; +$_LANGADM['AdminCarrierWizard9c3448f86be5ee19015f4ecce4bbd6fe'] = 'Maximum package width (%s)'; +$_LANGADM['AdminCarrierWizard2f79e7f703f8cd0258b0ef7e0237a4be'] = 'Maximum width managed by this carrier. Set the value to "0", or leave this field blank to ignore.'; +$_LANGADM['AdminCarrierWizard497876c111e98a20564817545518f829'] = 'The value must be an integer.'; +$_LANGADM['AdminCarrierWizard65a0cd2bca5d0a980a5582a548d79900'] = 'Maximum package height (%s)'; +$_LANGADM['AdminCarrierWizard5929a4e1d04d4653b6dbe2aac59d8a41'] = 'Maximum height managed by this carrier. Set the value to "0", or leave this field blank to ignore.'; +$_LANGADM['AdminCarrierWizard8317f5bb182c1e92c11221955592b518'] = 'Maximum package depth (%s)'; +$_LANGADM['AdminCarrierWizardaacaecfacce577935cf83eeb01bcac40'] = 'Maximum depth managed by this carrier. Set the value to "0", or leave this field blank to ignore.'; +$_LANGADM['AdminCarrierWizardda5c987cbda47de7a6b09406b0840ec4'] = 'Maximum package weight (%s)'; +$_LANGADM['AdminCarrierWizard82ef5a4b25d9debf587900797b0b9619'] = 'Maximum weight managed by this carrier. Set the value to "0", or leave this field blank to ignore.'; +$_LANGADM['AdminCarrierWizard920bd1fb6d54c93fca528ce941464225'] = 'Group access'; +$_LANGADM['AdminCarrierWizardd7049d8a068769eb32177e404639b8ce'] = 'Mark the groups that are allowed access to this carrier.'; +$_LANGADM['AdminCarrierWizard1c6c9d089ce4b751673e3dd09e97b935'] = 'Enable the carrier in the front office.'; +$_LANGADM['AdminCarrierWizard6305822e6fd3b92120ee6f23552164c4'] = 'You must choose at least one shop or group shop.'; +$_LANGADM['AdminCarrierWizard9ef70769595c35cca03dae49ac1f31d1'] = 'An error occurred while saving this carrier.'; +$_LANGADM['AdminCarrierWizardcfabe09befdc8289f6ca5fbc6887ffe5'] = 'An error occurred while saving carrier groups.'; +$_LANGADM['AdminCarrierWizard2222c64a45d69edbf16dd5fb81db904b'] = 'An error occurred while saving carrier zones.'; +$_LANGADM['AdminCarrierWizardbae6cceb9789ee48445a0ddc8c143f0b'] = 'An error occurred while saving carrier ranges.'; +$_LANGADM['AdminCarrierWizardbe78233fdb6fe537e065a0d8650c0e84'] = 'An error occurred while saving associations of shops.'; +$_LANGADM['AdminCarrierWizard5b26cf06b6165264574bf9e097f062bc'] = 'An error occurred while saving the tax rules group.'; +$_LANGADM['AdminCarrierWizard08c490a8c2d633b012b63dccd00cc719'] = 'An error occurred while saving carrier logo.'; +$_LANGADM['AdminCartRulesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCartRulese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCartRulesb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminCartRules49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_LANGADM['AdminCartRules502996d9790340c5fd7b86a5b93b1c9f'] = 'Priority'; +$_LANGADM['AdminCartRulesca0dbad92a874b2f69b549293387925e'] = 'Code'; +$_LANGADM['AdminCartRules694e8d1f2ee056f98ee488bdc4982d73'] = 'Quantity'; +$_LANGADM['AdminCartRules8c1279db4db86553e4b9682f78cf500e'] = 'Expiration date'; +$_LANGADM['AdminCartRulesec53a8c4f07baed5d8825072c89799be'] = 'Status'; +$_LANGADM['AdminCartRules447da4af35bd09b4d501afb8a2090909'] = 'Add new cart rule'; +$_LANGADM['AdminCartRulesf7de1b71605a10ef04416effa4c6e09e'] = 'Save and Stay'; +$_LANGADM['AdminCartRulesbd0e34e5be6447844e6f262d51f1a9dc'] = 'Payment'; +$_LANGADM['AdminCartRules65b7eaeb9ba4e9903f82297face9f7cd'] = 'Cart Rules'; +$_LANGADM['AdminCarts90855df1b2d1240c62d81bd35d4cfb06'] = 'Non ordered'; +$_LANGADM['AdminCarts121401ccf0e3e23bcefe6a454f0f0601'] = 'Abandoned cart'; +$_LANGADM['AdminCartsb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminCartsd79cf3f429596f77db95c65074663a54'] = 'Order ID'; +$_LANGADM['AdminCartsce26601dac0dea138b7295f02b7620a7'] = 'Customer'; +$_LANGADM['AdminCarts96b0141273eabab320119c467cdcaf17'] = 'Total'; +$_LANGADM['AdminCarts914419aa32f04011357d3b604a86d7eb'] = 'Carrier'; +$_LANGADM['AdminCarts44749712dbec183e983dcd78a7736c41'] = 'Date'; +$_LANGADM['AdminCarts54f664c70c22054ea0d8d26fc3997ce7'] = 'Online'; +$_LANGADM['AdminCartsd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCartse25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCartsf9b01554c32cc580b7380302f22613de'] = 'Export carts'; +$_LANGADM['AdminCartse4c3da18c66c0147144767efeb59198f'] = 'Conversion Rate'; +$_LANGADM['AdminCarts947d8520f04473da621f2718138f3bc6'] = '30 days'; +$_LANGADM['AdminCarts54e85d70ea67acdcc86963b14d6223a8'] = 'Abandoned Carts'; +$_LANGADM['AdminCarts915000b6f3e7bb451a6ed4ffc2839ab6'] = 'From %s to %s'; +$_LANGADM['AdminCartsffbb5322a3702b0d8d9c7f506209c540'] = 'Average Order Value'; +$_LANGADM['AdminCarts0ec8109e3ffa61bcc147c89d9a396cd7'] = '%s tax excl.'; +$_LANGADM['AdminCarts4d9e1e12ad8a61ea2a5554407488d91a'] = 'Net Profit per Visitor'; +$_LANGADM['AdminCartsc595d2957600891ad3063a9b13dda4b0'] = 'Cart #%06d'; +$_LANGADM['AdminCarts0b91ef9198a761459c595de4b12ca109'] = 'Total Cart'; +$_LANGADM['AdminCartsb00b85425e74ed2c85dc3119b78ff2c3'] = 'Free Shipping'; +$_LANGADM['AdminCartsee77ea46b0c548ed60eadf31bdd68613'] = 'Bad SQL query'; +$_LANGADM['AdminCategoriesb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminCategories49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_LANGADM['AdminCategoriesb5a7adde1af5c87d7fd797b6245c2a39'] = 'Description'; +$_LANGADM['AdminCategories52f5e0bc3859bc5f5e25130b6c7e8881'] = 'Position'; +$_LANGADM['AdminCategories86754577897acfb25deb69039d49d9a7'] = 'Displayed'; +$_LANGADM['AdminCategoriesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCategoriese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCategories5f573e91e5eaa092e00a4c4df393c0cb'] = 'Add new root category'; +$_LANGADM['AdminCategoriesd0d4e3688fdaee5afa292083b855e143'] = 'Add new category'; +$_LANGADM['AdminCategoriesde9ced9bf5e9829de4a93ad8c9d7a170'] = 'Add New'; +$_LANGADM['AdminCategories72d6d7a1885885bb55a565fd1070581a'] = 'Import'; +$_LANGADM['AdminCategories7dce122004969d56ae2e0245cb754d35'] = 'Edit'; +$_LANGADM['AdminCategories630f6dc397fe74e52d5189e2c80f282b'] = 'Back to list'; +$_LANGADM['AdminCategories42c9e94e8e5c29861de422525262ff17'] = 'Disabled Categories'; +$_LANGADM['AdminCategories850da4810ae3771d696d504d7346caa6'] = 'Empty Categories'; +$_LANGADM['AdminCategories3b449120fdb2867c000d7bba671aead3'] = 'Top Category'; +$_LANGADM['AdminCategories947d8520f04473da621f2718138f3bc6'] = '30 days'; +$_LANGADM['AdminCategoriesa6398f9bbc9739ed67ca273b82da0a55'] = 'Average number of products per category'; +$_LANGADM['AdminCategories86c34fe1588fab846f096e74c989972f'] = '%s - All people without a valid customer account.'; +$_LANGADM['AdminCategories728b291abe64a8db2e524340d3a5ad4a'] = '%s - Customer who placed an order with the guest checkout.'; +$_LANGADM['AdminCategoriesfe731b8039502b7b8a526edc4e232785'] = '%s - All people who have created an account on this site.'; +$_LANGADM['AdminCategories3adbdb3ac060038aa0e6e6c138ef9873'] = 'Category'; +$_LANGADM['AdminCategories6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Invalid characters'; +$_LANGADM['AdminCategories00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_LANGADM['AdminCategoriesb9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_LANGADM['AdminCategories52b68aaa602d202c340d9e4e9157f276'] = 'Parent category'; +$_LANGADM['AdminCategories2028f52eb6d12dc1814f92f18c7365a0'] = 'Category Cover Image'; +$_LANGADM['AdminCategories42f9ee5026d32792987af851a2ea0343'] = 'This is the main image for your category, displayed in the category page. The category description will overlap this image and appear in its top-left corner.'; +$_LANGADM['AdminCategories4ae362f049719078c429941bed5dd440'] = 'Category thumbnail'; +$_LANGADM['AdminCategories9e11e4b371570340ca07913bc4783a7a'] = 'Meta title'; +$_LANGADM['AdminCategories3e053943605d9e4bf7dd7588ea19e9d2'] = 'Forbidden characters'; +$_LANGADM['AdminCategories3f64b2beede1082fd32ddb0bf11a641f'] = 'Meta description'; +$_LANGADM['AdminCategories7d7559ccac6bc30a4d985db11cb34a3a'] = 'Meta keywords'; +$_LANGADM['AdminCategories7e35726fb991605ab3d0e6406599e6ef'] = 'To add "tags," click in the field, write something, and then press "Enter."'; +$_LANGADM['AdminCategories1dec4f55522b828fe5dacf8478021a9e'] = 'Friendly URL'; +$_LANGADM['AdminCategories09e2683b6b92b326691cd992f6e5684b'] = 'Only letters, numbers, underscore (_) and the minus (-) character are allowed.'; +$_LANGADM['AdminCategories920bd1fb6d54c93fca528ce941464225'] = 'Group access'; +$_LANGADM['AdminCategories53d98bd116f47fdfe15c8eb4525c5e99'] = 'You now have three default customer groups.'; +$_LANGADM['AdminCategories463848257c086c4816d9f4c020a8d19e'] = 'Mark all of the customer groups which you would like to have access to this category.'; +$_LANGADM['AdminCategoriesc9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_LANGADM['AdminCategories154b6e494bf56cc4c787bfee6deac113'] = 'Root Category'; +$_LANGADM['AdminCategories93cba07454f06a4a960172bbd6e2a435'] = 'Yes'; +$_LANGADM['AdminCategoriesbafd7322c6e97d25b6299b5d6fe8920b'] = 'No'; +$_LANGADM['AdminCategories9d55fc80bbb875322aa67fd22fc98469'] = 'Shop association'; +$_LANGADM['AdminCategoriesf86f7b91afe27e79305a6b07bdb0d3c0'] = 'Failed to update the status'; +$_LANGADM['AdminCategoriesde360c8b5dd9a9fdd592b1c08b3b4a62'] = 'The status has been updated successfully'; +$_LANGADM['AdminCmsCategoriesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCmsCategoriese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCmsCategoriesaf1b98adf7f686b84cd0b443e022b7a0'] = 'Categories'; +$_LANGADM['AdminCmsCategoriesb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminCmsCategories49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_LANGADM['AdminCmsCategoriesb5a7adde1af5c87d7fd797b6245c2a39'] = 'Description'; +$_LANGADM['AdminCmsCategories52f5e0bc3859bc5f5e25130b6c7e8881'] = 'Position'; +$_LANGADM['AdminCmsCategories86754577897acfb25deb69039d49d9a7'] = 'Displayed'; +$_LANGADM['AdminCmsCategories789ca3cc9e29e7ef767619e13c6b2f9e'] = 'CMS Category'; +$_LANGADM['AdminCmsCategories6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Invalid characters'; +$_LANGADM['AdminCmsCategories00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_LANGADM['AdminCmsCategoriesb9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_LANGADM['AdminCmsCategories57bd1d8ace15f17054281d1e88336b97'] = 'Parent CMS Category'; +$_LANGADM['AdminCmsCategories9e11e4b371570340ca07913bc4783a7a'] = 'Meta title'; +$_LANGADM['AdminCmsCategories3f64b2beede1082fd32ddb0bf11a641f'] = 'Meta description'; +$_LANGADM['AdminCmsCategories7d7559ccac6bc30a4d985db11cb34a3a'] = 'Meta keywords'; +$_LANGADM['AdminCmsCategories1dec4f55522b828fe5dacf8478021a9e'] = 'Friendly URL'; +$_LANGADM['AdminCmsCategoriesbed3b3133d292db46a0d28c5d91811b9'] = 'Only letters and the minus (-) character are allowed.'; +$_LANGADM['AdminCmsCategoriesc9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_LANGADM['AdminCmsCategories9d55fc80bbb875322aa67fd22fc98469'] = 'Shop association'; +$_LANGADM['AdminCmsContentd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCmsContente25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCmsContentef61fb324d729c341ea8ab9901e23566'] = 'Add new'; +$_LANGADM['AdminCmsContentf7931413dee107ddf5289c8886baf7ec'] = 'Edit: %s'; +$_LANGADM['AdminCmsContentc7da501f54544eba6787960200d9efdb'] = 'CMS'; +$_LANGADM['AdminCmsContentaf83e3b9f5d8398fc7b9e88cd6105bde'] = 'Add new CMS category'; +$_LANGADM['AdminCmsContentd0ce974814566418b6ad509f305f319a'] = 'Add new CMS page'; +$_LANGADM['AdminCmsd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCmse25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCmsb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminCmse6b391a8d2c4d45902a23a8b6585703d'] = 'URL'; +$_LANGADM['AdminCmsb78a3223503896721cca1303f776159b'] = 'Title'; +$_LANGADM['AdminCms52f5e0bc3859bc5f5e25130b6c7e8881'] = 'Position'; +$_LANGADM['AdminCms86754577897acfb25deb69039d49d9a7'] = 'Displayed'; +$_LANGADM['AdminCms7101cb00c6057071c3f5e52bcb31336b'] = 'Pages in category "%s"'; +$_LANGADM['AdminCmsf8825c9f08ff15b5ef6bc3a3898817e8'] = 'Save and preview'; +$_LANGADM['AdminCms9ea67be453eaccf020697b4654fc021a'] = 'Save and stay'; +$_LANGADM['AdminCms87d49200bfc48e0bcfd3bae27d5616f3'] = 'CMS Page'; +$_LANGADM['AdminCms789ca3cc9e29e7ef767619e13c6b2f9e'] = 'CMS Category'; +$_LANGADM['AdminCms9e11e4b371570340ca07913bc4783a7a'] = 'Meta title'; +$_LANGADM['AdminCms6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Invalid characters'; +$_LANGADM['AdminCms3f64b2beede1082fd32ddb0bf11a641f'] = 'Meta description'; +$_LANGADM['AdminCms7d7559ccac6bc30a4d985db11cb34a3a'] = 'Meta keywords'; +$_LANGADM['AdminCms3ed349365d718a59eadb9df9d5c339f2'] = 'To add "tags" click in the field, write something, and then press "Enter."'; +$_LANGADM['AdminCms1dec4f55522b828fe5dacf8478021a9e'] = 'Friendly URL'; +$_LANGADM['AdminCms21f93401134586a6c481422bf01fccfd'] = 'Only letters and the hyphen (-) character are allowed.'; +$_LANGADM['AdminCms45b1bce0ceb1e155fc99d59a21761b9e'] = 'Page content'; +$_LANGADM['AdminCmsce1e51212c9df52777620dc9de246da0'] = 'Indexation by search engines'; +$_LANGADM['AdminCms00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_LANGADM['AdminCmsb9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_LANGADM['AdminCmsc9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_LANGADM['AdminCms9d55fc80bbb875322aa67fd22fc98469'] = 'Shop association'; +$_LANGADM['AdminCmscc4fbd30d676ea2f9994b7063a8ada15'] = 'Pages in this category'; +$_LANGADM['AdminCmsef61fb324d729c341ea8ab9901e23566'] = 'Add new'; +$_LANGADM['AdminCms5ece607071fe59ddc4c88dc6abfe2310'] = 'No items found'; +$_LANGADM['AdminContactsd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminContactse25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminContactsb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminContactsb78a3223503896721cca1303f776159b'] = 'Title'; +$_LANGADM['AdminContactsb357b524e740bc85b9790a0712d84a30'] = 'Email address'; +$_LANGADM['AdminContactsb5a7adde1af5c87d7fd797b6245c2a39'] = 'Description'; +$_LANGADM['AdminContacts9aa698f602b1e5694855cee73a683488'] = 'Contacts'; +$_LANGADM['AdminContacts9cd9efd3eb168071eb0a199972c54aab'] = 'Contact name (e.g. Customer Support).'; +$_LANGADM['AdminContactsdaedf9c5c8f38ac4cf641f3fb3e1bdc4'] = 'Emails will be sent to this address.'; +$_LANGADM['AdminContactsa4cd3191fdeea29906a113c78d4c0e26'] = 'Save messages?'; +$_LANGADM['AdminContacts0f28459fa87b1b3ce6e8b17932f08c3a'] = 'If enabled, all messages will be saved in the "Customer Service" page under the "Customer" menu.'; +$_LANGADM['AdminContacts00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_LANGADM['AdminContactsb9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_LANGADM['AdminContactsa2b086325f59e6c2fbd410511f4fdfb3'] = 'Further information regarding this contact.'; +$_LANGADM['AdminContactsc9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_LANGADM['AdminContacts9d55fc80bbb875322aa67fd22fc98469'] = 'Shop association'; +$_LANGADM['AdminContactsc41f67055a184ed2e895681336572761'] = 'Add new contact'; +$_LANGADM['AdminCountriesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCountriese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCountries10d30c6319cf61386c878e4d9a3e09a2'] = 'Assign to a new zone'; +$_LANGADM['AdminCountriesf52c1ff75f69fa46ae947f0a3f653641'] = 'Country options'; +$_LANGADM['AdminCountriesabb056fd74a8bdf858dbe3e68c5ea97c'] = 'Restrict country selections in front office to those covered by active carriers'; +$_LANGADM['AdminCountriesc9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_LANGADM['AdminCountriesb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminCountries59716c97497eb9694541f7c3d37b1a4d'] = 'Country'; +$_LANGADM['AdminCountriesad68f9bafd9bf2dcf3865dac55662fd5'] = 'ISO code'; +$_LANGADM['AdminCountriesd8ec51bf63378409b1d40cc45c80f926'] = 'Call prefix'; +$_LANGADM['AdminCountriesb3ff996fe5c77610359114835baf9b38'] = 'Zone'; +$_LANGADM['AdminCountries00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_LANGADM['AdminCountries21e6a1298ab4cd040464d67a19d0f957'] = 'Add new country'; +$_LANGADM['AdminCountries790d59ef178acbc75d233bf4211763c6'] = 'Countries'; +$_LANGADM['AdminCountries3be0efaecb3514a14757b8beb4b5dbb3'] = 'Country name'; +$_LANGADM['AdminCountries6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Invalid characters'; +$_LANGADM['AdminCountries3a58c76da4f48aaeb46af20f34caac1b'] = 'Two -- or three -- letter ISO code (e.g. "us for United States).'; +$_LANGADM['AdminCountriesab81f235de173b2d7c0b69009dc6d492'] = 'Two -- or three -- letter ISO code (e.g. U.S. for United States)'; +$_LANGADM['AdminCountriesd3c5d8339f3840b75b4031c2b1e508de'] = 'Official list here'; +$_LANGADM['AdminCountriescd2f7b9409e0f1527766ad35aa8bd3c5'] = 'International call prefix, (e.g. 1 for United States).'; +$_LANGADM['AdminCountries94d7422ba3c5b0f2a35f50b048e51c6d'] = 'Default currency'; +$_LANGADM['AdminCountriesa4f164d8b1b72c87b8ce558827bcd423'] = 'Default store currency'; +$_LANGADM['AdminCountries92de0162cbdfa60f671ba3cad1d392a1'] = 'Geographical region.'; +$_LANGADM['AdminCountriesecefe3def8a2d034d80f6a8876c3d4b1'] = 'Does it need Zip/postal code?'; +$_LANGADM['AdminCountries93cba07454f06a4a960172bbd6e2a435'] = 'Yes'; +$_LANGADM['AdminCountriesbafd7322c6e97d25b6299b5d6fe8920b'] = 'No'; +$_LANGADM['AdminCountries25d176f9d01ba273d1097ca7b298d281'] = 'Zip/postal code format'; +$_LANGADM['AdminCountries3477a6086401c89ab72387673c777af2'] = 'Indicate the format of the postal code: use L for a letter, N for a number, and C for the country\'s ISO 3166-1 alpha-2 code. For example, NNNNN for the United States, France, Poland and many other; LNNNNLLL for Argentina, etc. If you do not want PrestaShop to verify the postal code for this country, leave it blank.'; +$_LANGADM['AdminCountries665e1ad1c6657791cecb5b68008c7c00'] = 'Address format'; +$_LANGADM['AdminCountries4d3d769b812b6faa6b76e1a8abaece2d'] = 'Active'; +$_LANGADM['AdminCountriesb9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_LANGADM['AdminCountriesa2ddbdfb29a0708bd711601f9277435c'] = 'Display this country to your customers (the selected country will always be displayed in the Back Office).'; +$_LANGADM['AdminCountries0bd345b58335589d4c2fa1e50ae38619'] = 'Contains states'; +$_LANGADM['AdminCountries0c750dacc725ba4047374d2efc56ce3a'] = 'Do you need a tax identification number?'; +$_LANGADM['AdminCountries05820ffcf621269347a1c14d81d20b77'] = 'Display tax label (e.g. "Tax incl.")'; +$_LANGADM['AdminCountries9d55fc80bbb875322aa67fd22fc98469'] = 'Shop association'; +$_LANGADM['AdminCountries01e93e9457d86c646965decd586dc5ea'] = 'Address format invalid'; +$_LANGADM['AdminCountriesce26601dac0dea138b7295f02b7620a7'] = 'Customer'; +$_LANGADM['AdminCountries6416e8cb5fc0a208d94fa7f5a300dbc4'] = 'Warehouse'; +$_LANGADM['AdminCountries46a2a41cc6e552044816a2d04634545d'] = 'State'; +$_LANGADM['AdminCountriesdd7bf230fde8d4836917806aff6a6b27'] = 'Address'; +$_LANGADM['AdminCurrenciesb718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_LANGADM['AdminCurrencies386c339d37e737a436499d423a77df0c'] = 'Currency'; +$_LANGADM['AdminCurrenciesad68f9bafd9bf2dcf3865dac55662fd5'] = 'ISO code'; +$_LANGADM['AdminCurrencies5f838bbd088886f09f67b904e414f0e7'] = 'ISO code number'; +$_LANGADM['AdminCurrencies02c86eb2792f3262c21d030a87e19793'] = 'Symbol'; +$_LANGADM['AdminCurrenciese75e316ab3a0a8c0c5fc4b48d1a7033f'] = 'Exchange rate'; +$_LANGADM['AdminCurrencies00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_LANGADM['AdminCurrenciesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected'; +$_LANGADM['AdminCurrenciese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?'; +$_LANGADM['AdminCurrencies77428b04a1847555eb9bc52422a377b0'] = 'Currency rates'; +$_LANGADM['AdminCurrenciesc1eaa657dda2892e5fec322ac710133a'] = 'Use PrestaShop\'s webservice to update your currency\'s exchange rates. However, please use caution: rates are provided as-is.'; +$_LANGADM['AdminCurrencies876ca43ba50351d4e492970f40632661'] = 'Update currency rates'; +$_LANGADM['AdminCurrenciesf6536046d7af41c3f3975868d6963179'] = 'Automatically update currency rates'; +$_LANGADM['AdminCurrenciesae2fce768106a7b6a61e57943b7a2143'] = 'Use PrestaShop\'s webservice to update your currency exchange rates. However, please use caution: rates are provided as-is.'; +$_LANGADM['AdminCurrenciesabe69e8e4b387562a767a6adaf112ed8'] = 'You can place the following URL in your crontab file, or you can click it yourself regularly'; +$_LANGADM['AdminCurrenciesdfcfc43722eef1eab1e4a12e50a068b1'] = 'Currencies'; +$_LANGADM['AdminCurrencies586e27d3575f00e51ad43b66eb34e49f'] = 'Currency name'; +$_LANGADM['AdminCurrencies5f41116581201a5ef32656b7d4a51e88'] = 'Only letters and the minus character are allowed.'; +$_LANGADM['AdminCurrencies4ef5571f164a6a7fcc9f4625d14e260b'] = 'ISO code (e.g. USD for Dollars, EUR for Euros, etc.).'; +$_LANGADM['AdminCurrencies462fdc88328b3c9d31c63fa01b4f00b1'] = 'Numeric ISO code'; +$_LANGADM['AdminCurrenciesf90c17fdefeeca8b0d55b80a7bc3cb34'] = 'Numeric ISO code (e.g. 840 for Dollars, 978 for Euros, etc.).'; +$_LANGADM['AdminCurrencies7559b7b096e0579368ca2ac7c187ba52'] = 'Will appear in front office (e.g. $, €, etc.)'; +$_LANGADM['AdminCurrencies4abafa9686f98e398e29e46fd388fa36'] = 'Exchange rates are calculated from one unit of your shop\'s default currency. For example, if the default currency is euros and your chosen currency is dollars, type "1.20" (1€ = $1.20).'; +$_LANGADM['AdminCurrencies597d44d65d4c76fe8cc8127b5b9b98bc'] = 'Currency format'; +$_LANGADM['AdminCurrencies188b945338e1d6582c845dfebb469a45'] = 'Applies to all prices (e.g. $1,240.15).'; +$_LANGADM['AdminCurrenciesfca4f4976817baa4a25858a3d6d5274d'] = 'Such as with Dollars'; +$_LANGADM['AdminCurrencies05f78b95fd31ed10def4d0c1ef8e4751'] = 'Such as with Euros'; +$_LANGADM['AdminCurrencies2b417805040de3a3df31c8fd3626b57c'] = 'Decimals'; +$_LANGADM['AdminCurrencies9b9e87b59be497e92da8d2208f9914a0'] = 'Display decimals in prices.'; +$_LANGADM['AdminCurrenciesb9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_LANGADM['AdminCurrencies627b24abf27e2d03d38537f84e81cb2e'] = 'Spacing'; +$_LANGADM['AdminCurrencies1d10d84822a63187918311cb3a4e0c87'] = 'Include a space between symbol and price (e.g. $1,240.15 -> $ 1,240.15).'; +$_LANGADM['AdminCurrencies2faec1f9f8cc7f8f40d521c4dd574f49'] = 'Enable'; +$_LANGADM['AdminCurrencies9d55fc80bbb875322aa67fd22fc98469'] = 'Shop association'; +$_LANGADM['AdminCurrenciesc9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_LANGADM['AdminCurrencies8246d0c794e7db090587c4797b2a234f'] = 'You cannot delete the default currency'; +$_LANGADM['AdminCurrencies7c77e53206853cb381e91e037554faa3'] = 'You cannot disable the default currency'; +$_LANGADM['AdminCurrencies076b68505282c6c0654708db343d6673'] = 'Add new currency'; +$_LANGADM['AdminCustomerPreferences9f7a304fd501ed0e4d06b899fed739d0'] = 'Only account creation'; +$_LANGADM['AdminCustomerPreferencesf2c822352f0e0a62e2de6d716475911b'] = 'Standard (account creation and address creation)'; +$_LANGADM['AdminCustomerPreferences0db377921f4ce762c62526131097968f'] = 'General'; +$_LANGADM['AdminCustomerPreferencesbcb9adf1d2347258b5c65483e34cf86f'] = 'Registration process type'; +assertType("non-empty-array<'AdminAddresses1c76cbfe21c6f44c1d1e59d54f3e4420'|'AdminAddresses284b47b0bb63ae2df3b29f0e691d6fcf'|'AdminAddresses3e053943605d9e4bf7dd7588ea19e9d2'|'AdminAddresses41c2fff4867cc204120f001e7af20f7a'|'AdminAddresses46a2a41cc6e552044816a2d04634545d'|'AdminAddresses57d056ed0984166336b7879c2af3657f'|'AdminAddresses59716c97497eb9694541f7c3d37b1a4d'|'AdminAddresses6252c0f2c2ed83b7b06dfca86d4650bb'|'AdminAddresses6311ae17c1ee52b36e68aaf4ad066387'|'AdminAddresses72d6d7a1885885bb55a565fd1070581a'|'AdminAddresses77587239bf4c54ea493c7033e1dbf636'|'AdminAddresses7cb32e708d6b961d476baced73d362bb'|'AdminAddresses919d1ffe6c1855e790a416efa7b4cc4e'|'AdminAddressesb718adec73e04ce3ec720dd11a06a308'|'AdminAddressesbaa31a65f29121c32b637bb845d41acf'|'AdminAddressesbc910f8bdf70f29374f496f05be0330c'|'AdminAddressesbed08e8af70a98c1a8361f13ec477be0'|'AdminAddressesc9cc8cce247e49bae79f15173ce97354'|'AdminAddressesce26601dac0dea138b7295f02b7620a7'|'AdminAddressesd3b206d196cd6be3a2764c1fb90b200f'|'AdminAddressesdd7bf230fde8d4836917806aff6a6b27'|'AdminAddressese25f0ecd41211b01c83e5fec41df4fe7'|'AdminAddressese4eb5dadb6ee84c5c55a8edf53f6e554'|'AdminAddressesea318a4ad37f0c2d2c368e6c958ed551'|'AdminAddresseseeabead01c6c6f25f22bf0b041df58a9'|'AdminAddressesfe66abce284ec8589e7d791185b5c442'|'AdminAdminPreferences0db377921f4ce762c62526131097968f'|'AdminAdminPreferences0f81567617bb8ebc23f48e74d8ae8acf'|'AdminAdminPreferences11b3df1e92b11e2d899494d3cdf4dd13'|'AdminAdminPreferences1b1befcb86d487715da458117710dfeb'|'AdminAdminPreferences20d6b6498eab9f749d55c9b53151e00a'|'AdminAdminPreferences2c111a587b8e6a65856ac7933d76bdce'|'AdminAdminPreferences46f18d3960afc01e5a1a5a0e0e9d571b'|'AdminAdminPreferences4ae386b852a3ee22324e8922e50c9aec'|'AdminAdminPreferences4e7ff7ca556a7ac8329ab27834e9631b'|'AdminAdminPreferences694c63d4a2b60499f7ba524fb639811f'|'AdminAdminPreferences73cdddd7730abfc13a55efb9f5685a3b'|'AdminAdminPreferences8004e61ca76ff500d1e6ee92f7cb7f93'|'AdminAdminPreferences99059a2047f475cdc6428076e3360134'|'AdminAdminPreferencesa274f4d4670213a9045ce258c6c56b80'|'AdminAdminPreferencesa676520f8296be0319ad6268657471ea'|'AdminAdminPreferencesade28d54bcdbc7c4cfd45d84ad517f7b'|'AdminAdminPreferencesb32a8e98434105bcfe4f234aa4c7b28b'|'AdminAdminPreferencesb48de7251c23e4b0eb0975b1c7bf9bc5'|'AdminAdminPreferencesb8a8fa662505e278031049e4990e428a'|'AdminAdminPreferencesc9cc8cce247e49bae79f15173ce97354'|'AdminAdminPreferencescabcb35221054c8ad296eb4e406e2cd7'|'AdminAdminPreferencesdcfba1534995899d2ca36cda978da215'|'AdminAdminPreferencese0853b619fbd24fdabc3ae78beb81193'|'AdminAdminPreferencese0c9f1de766b906e5660ea07af8a02ec'|'AdminAdminPreferencese62d77475fe6318731b4411ba1181dca'|'AdminAdminPreferencese78f32f514dbd49e570066db36343d13'|'AdminAdminPreferencese7fe6b70f4558e23f0254d80f52ae6d8'|'AdminAttachments0b27918290ff5323bea1e3b78a9cf04e'|'AdminAttachments0c6c7ccc80b3bfb8fcb57dc63405f599'|'AdminAttachments1351017ac6423911223bc19a8cb7c653'|'AdminAttachments1f66f9472666b18b19c22fd0f1a6a07b'|'AdminAttachments49ee3087348e8d44e1feda1917443987'|'AdminAttachments5251010ec9e364492c236bf8b9983928'|'AdminAttachments6f6cb72d544962fa333e2e34ce64f719'|'AdminAttachments8a23b9ee3a4502a0de3fc32c5ba7aa65'|'AdminAttachments8ecfb7c46cc91aaa98cc88b3f43cfffc'|'AdminAttachmentsb5a7adde1af5c87d7fd797b6245c2a39'|'AdminAttachmentsb718adec73e04ce3ec720dd11a06a308'|'AdminAttachmentsbdf4f1da184f2dc052c75ad7e1afbd4a'|'AdminAttachmentsc9cc8cce247e49bae79f15173ce97354'|'AdminAttachmentsd3b206d196cd6be3a2764c1fb90b200f'|'AdminAttachmentsd647666a6c4cef994b4fa1a540ba4481'|'AdminAttachmentse25f0ecd41211b01c83e5fec41df4fe7'|'AdminAttachmentse9cb217697088a98b1937d111d936281'|'AdminAttachmentseefad10f0e06ebfb6a27344408e54660'|'AdminAttachmentsfc1ff5390ecc7efd695f697f3d6b7e4b'|'AdminAttributeGenerator402784f5f14c30e7309a135ba6be531f'|'AdminAttributeGenerator81315cfd898aada1e99e0034b4b078c3'|'AdminAttributeGenerator9446a98ad14416153cc4d45ab8b531bf'|'AdminAttributeGeneratorced303d99586792bb560b5e1d35ea220'|'AdminAttributesGroups00039b674d8ced58313546dcab88a032'|'AdminAttributesGroups0e010c6b3fb88bf4277c880d1657787a'|'AdminAttributesGroups170269305ed04c49b26b2d5dbe053dc6'|'AdminAttributesGroups1736c2a3dfbe74f884bf5c9750bd4606'|'AdminAttributesGroups17af8baa9b3f90e936589069e4223280'|'AdminAttributesGroups1f40023e11d8401b0bffadc419135247'|'AdminAttributesGroups22cbf85c41427960736dc10cfec5faf4'|'AdminAttributesGroups287234a1ff35a314b5b6bc4e5828e745'|'AdminAttributesGroups2dce4461e5743f3b01acd4599a38d646'|'AdminAttributesGroups49ee3087348e8d44e1feda1917443987'|'AdminAttributesGroups5204077231fc7164e2269e96b584dd95'|'AdminAttributesGroups52729803b243ea9693a892161d5b8e38'|'AdminAttributesGroups52f5e0bc3859bc5f5e25130b6c7e8881'|'AdminAttributesGroups561f47d9c8a6153b011def4fd72386d5'|'AdminAttributesGroups577cf2cf1be74419ac04093a2b4cd64d'|'AdminAttributesGroups6252c0f2c2ed83b7b06dfca86d4650bb'|'AdminAttributesGroups630f6dc397fe74e52d5189e2c80f282b'|'AdminAttributesGroups689202409e48743b914713f96d93947c'|'AdminAttributesGroups713271e705e5269fc82684445cd063a8'|'AdminAttributesGroups71c476c94d0a0e3dfc0826afd03d2dda'|'AdminAttributesGroups71e8f8a090925f75719dfa0a5eae059e'|'AdminAttributesGroups72d6d7a1885885bb55a565fd1070581a'|'AdminAttributesGroups7d5672f569de406c85249db6f1c99ec0'|'AdminAttributesGroups8bd90a6d76a77fe0b160e8abd85c8590'|'AdminAttributesGroups9446a98ad14416153cc4d45ab8b531bf'|'AdminAttributesGroups9d55fc80bbb875322aa67fd22fc98469'|'AdminAttributesGroupsa3e8ae43188ae76d38f414b2bdb0077b'|'AdminAttributesGroupsb5e6921c2d093fbcb0088c9466ee9983'|'AdminAttributesGroupsb718adec73e04ce3ec720dd11a06a308'|'AdminAttributesGroupsba353198430b2004efeb1ac6d1f410d0'|'AdminAttributesGroupsc82a6100dace2b41087ba6cf99a5976a'|'AdminAttributesGroupsc9cc8cce247e49bae79f15173ce97354'|'AdminAttributesGroupscb5feb1b7314637725a2e73bdc9f7295'|'AdminAttributesGroupsced303d99586792bb560b5e1d35ea220'|'AdminAttributesGroupsd274013ea65428454962a59b7b373a41'|'AdminAttributesGroupsd3b206d196cd6be3a2764c1fb90b200f'|'AdminAttributesGroupsdd24a1142c1070a0efbdf43b4f0167cc'|'AdminAttributesGroupse25f0ecd41211b01c83e5fec41df4fe7'|'AdminAttributesGroupsf2d1c5443636295e9720caac90ea8d93'|'AdminAttributesGroupsf68b27443f6e6f685cce3f9f422a2b84'|'AdminAttributesGroupsf7931413dee107ddf5289c8886baf7ec'|'AdminAttributesGroupsfce2e84f3cce0e5351e85e9f0cb20107'|'AdminBackup03727ac48595a24daed975559c944a44'|'AdminBackup1589ac76f2f88749f51028f09b23f9d4'|'AdminBackup1908624a0bca678cd26b99bfd405324e'|'AdminBackup2c7338ad06a6bb0747b0d432c33464ce'|'AdminBackup2e25562aa49c13b17e979d826fecc25f'|'AdminBackup30c210e0173f2ff607cc84dc01ffc1f0'|'AdminBackup34082694d21dbdcfc31e6e32d9fb2b9f'|'AdminBackup44749712dbec183e983dcd78a7736c41'|'AdminBackup6a7e73161603d87b26a8eac49dab0a9c'|'AdminBackup6afc2b40f9acff2a4d1e67f2dfcd8a30'|'AdminBackup8859ec81a77f2f2b165bf5ea9858ecfc'|'AdminBackup9d8d2d5ab12b515182a505f54db7f538'|'AdminBackupb07ccf1ffff29007509d45dbcc13f923'|'AdminBackupb55e509c697e4cca0e1d160a7806698f'|'AdminBackupc9cc8cce247e49bae79f15173ce97354'|'AdminBackupd3b206d196cd6be3a2764c1fb90b200f'|'AdminBackupe25f0ecd41211b01c83e5fec41df4fe7'|'AdminBackupe807d3ccf8d24c8c1a3d86db5da78da8'|'AdminBackupea4788705e6873b424c65e91c2846b19'|'AdminBackupf36c9a20c2ce51f491c944e41fde5ace'|'AdminCarriers00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminCarriers049de64decc4aa8fa5aa89cf8b17470c'|'AdminCarriers0687bb4ca6cc1c51d79684159f91ff11'|'AdminCarriers082ebbb29b5ba59c293a00a55581679b'|'AdminCarriers0cce6348a3d85f52a44d053f542afcbc'|'AdminCarriers1412292b09d3cd39f32549afb1f5f102'|'AdminCarriers1935671a637346f67b485596b9fcba2c'|'AdminCarriers1c0e287237d8c352c6ead633b019c047'|'AdminCarriers1c6c9d089ce4b751673e3dd09e97b935'|'AdminCarriers1c76cbfe21c6f44c1d1e59d54f3e4420'|'AdminCarriers1d6af794b2599c1407a83029a09d1ecf'|'AdminCarriers3194ebe40c7a8c29c78ea79066b6e05c'|'AdminCarriers324029d06c6bfe85489099f6e69b7637'|'AdminCarriers3e86ececa46af50900510892f94c4ed6'|'AdminCarriers482836cce404046ca7dc34fb0a6fc526'|'AdminCarriers49ee3087348e8d44e1feda1917443987'|'AdminCarriers49fec5c86a3b43821fdf0d9aa7bbd935'|'AdminCarriers4b78ac8eb158840e9638a3aeb26c4a9d'|'AdminCarriers4ca4a355318f45dac9fb0ee632d8dc3c'|'AdminCarriers4e140ba723a03baa6948340bf90e2ef6'|'AdminCarriers4f890cf6a72112cad95093baecf39831'|'AdminCarriers52f5e0bc3859bc5f5e25130b6c7e8881'|'AdminCarriers590f6d9a5885f042982c9a911f76abda'|'AdminCarriers5e6b7c069d71052ffc8c4410c0c46992'|'AdminCarriers6803abe0c8347830d574da8e04fa78e5'|'AdminCarriers6e6fbb3d274ac15210f6b7892c7d24c1'|'AdminCarriers7475ec0d41372a307c497acb7eeea8c4'|'AdminCarriers7589dfa9a5a899e9701335164c9ab520'|'AdminCarriers780c462e85ba4399a5d42e88f69a15ca'|'AdminCarriers7dce122004969d56ae2e0245cb754d35'|'AdminCarriers8a52ca34a90eb8486886815e62958ac1'|'AdminCarriers8c2857a9ad1d8f31659e35e904e20fa6'|'AdminCarriers8f497c1a3d15af9e0c215019f26b887d'|'AdminCarriers91aa2e3b1cd071ba7031bf4263e11821'|'AdminCarriers920bd1fb6d54c93fca528ce941464225'|'AdminCarriers93cba07454f06a4a960172bbd6e2a435'|'AdminCarriers9d55fc80bbb875322aa67fd22fc98469'|'AdminCarriers9e93aab109e30d26aa231a49385c99db'|'AdminCarriersa414ac63c6b29218661d1fa2c6e21b5b'|'AdminCarriersa788f81b3aa0ef9c9efcb1fb67708d82'|'AdminCarriersb00b85425e74ed2c85dc3119b78ff2c3'|'AdminCarriersb3ff996fe5c77610359114835baf9b38'|'AdminCarriersb718adec73e04ce3ec720dd11a06a308'|'AdminCarriersb9f5c797ebbf55adccdd8539a65a0241'|'AdminCarriersbafd7322c6e97d25b6299b5d6fe8920b'|'AdminCarriersc26732c157d7b353c1be9f7ba8962e57'|'AdminCarriersc8b462f779749d2e27abed2e9501b2bd'|'AdminCarriersc9cc8cce247e49bae79f15173ce97354'|'AdminCarrierscdaa245d6e50b5647bfd9fcb77ac9a21'|'AdminCarriersd3b206d196cd6be3a2764c1fb90b200f'|'AdminCarriersd7049d8a068769eb32177e404639b8ce'|'AdminCarriersdde695268ea519ababd83f0ca3d274fc'|'AdminCarrierse1bcd0aa73dbc610f1fc628499244d8f'|'AdminCarrierse25f0ecd41211b01c83e5fec41df4fe7'|'AdminCarrierse29e90d06dc78b1a6b2e5e9d61f2f724'|'AdminCarrierse3d29a6f3d7588301aa04429e686b260'|'AdminCarrierse6b391a8d2c4d45902a23a8b6585703d'|'AdminCarrierse81c4e4f2b7b93b481e13a8553c2ae1b'|'AdminCarriersec53a8c4f07baed5d8825072c89799be'|'AdminCarriersf2a6c498fb90ee345d997f888fce3b18'|'AdminCarriersf8af50e8f2eb39dc8581b4943d6ec59f'|'AdminCarriersff5e2cfc010955358f7ff264d9e58398'|'AdminCarrierWizard00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminCarrierWizard0668ec4bb8d6bcb27d283b2af9bc5888'|'AdminCarrierWizard082ebbb29b5ba59c293a00a55581679b'|'AdminCarrierWizard08c490a8c2d633b012b63dccd00cc719'|'AdminCarrierWizard0979779c4569141b98591d326d343ec2'|'AdminCarrierWizard0f696253cf9dacf6079bf5060e60da06'|'AdminCarrierWizard10ac3d04253ef7e1ddc73e6091c0cd55'|'AdminCarrierWizard1778e0e8555dc044231c1d615b41ddea'|'AdminCarrierWizard1c6c9d089ce4b751673e3dd09e97b935'|'AdminCarrierWizard2222c64a45d69edbf16dd5fb81db904b'|'AdminCarrierWizard290612199861c31d1036b185b4e69b75'|'AdminCarrierWizard29aa46cc3d2677c7e0f216910df600ff'|'AdminCarrierWizard2f79e7f703f8cd0258b0ef7e0237a4be'|'AdminCarrierWizard40fe120d89217e6f04a27723136b8601'|'AdminCarrierWizard482836cce404046ca7dc34fb0a6fc526'|'AdminCarrierWizard497876c111e98a20564817545518f829'|'AdminCarrierWizard4b78ac8eb158840e9638a3aeb26c4a9d'|'AdminCarrierWizard4ca4a355318f45dac9fb0ee632d8dc3c'|'AdminCarrierWizard4f890cf6a72112cad95093baecf39831'|'AdminCarrierWizard5929a4e1d04d4653b6dbe2aac59d8a41'|'AdminCarrierWizard5b26cf06b6165264574bf9e097f062bc'|'AdminCarrierWizard6305822e6fd3b92120ee6f23552164c4'|'AdminCarrierWizard65a0cd2bca5d0a980a5582a548d79900'|'AdminCarrierWizard6f3455d187a23443796efdcbe044096b'|'AdminCarrierWizard756eb8cebeb953f5ae47235ff2e183b5'|'AdminCarrierWizard780c462e85ba4399a5d42e88f69a15ca'|'AdminCarrierWizard7cee91acc888d490e2622f3eca17cd37'|'AdminCarrierWizard81e24bc79af497d9e9c486bfa24742be'|'AdminCarrierWizard829c7cc5ed48e11df7ac9b05e236a12c'|'AdminCarrierWizard82ef5a4b25d9debf587900797b0b9619'|'AdminCarrierWizard8317f5bb182c1e92c11221955592b518'|'AdminCarrierWizard885ef9bdb910d1379b853075daf44e43'|'AdminCarrierWizard8c2857a9ad1d8f31659e35e904e20fa6'|'AdminCarrierWizard920bd1fb6d54c93fca528ce941464225'|'AdminCarrierWizard93cba07454f06a4a960172bbd6e2a435'|'AdminCarrierWizard9c3448f86be5ee19015f4ecce4bbd6fe'|'AdminCarrierWizard9d55fc80bbb875322aa67fd22fc98469'|'AdminCarrierWizard9ef70769595c35cca03dae49ac1f31d1'|'AdminCarrierWizarda083cb6637472c81ec701d3342320adf'|'AdminCarrierWizarda20ddccbb6f808ec42cd66323e6c6061'|'AdminCarrierWizarda788f81b3aa0ef9c9efcb1fb67708d82'|'AdminCarrierWizardaacaecfacce577935cf83eeb01bcac40'|'AdminCarrierWizardb9f5c797ebbf55adccdd8539a65a0241'|'AdminCarrierWizardbae6cceb9789ee48445a0ddc8c143f0b'|'AdminCarrierWizardbafd7322c6e97d25b6299b5d6fe8920b'|'AdminCarrierWizardbe78233fdb6fe537e065a0d8650c0e84'|'AdminCarrierWizardc8b462f779749d2e27abed2e9501b2bd'|'AdminCarrierWizardc91e596246bbf8fdff9dae7b349d71d9'|'AdminCarrierWizardcfabe09befdc8289f6ca5fbc6887ffe5'|'AdminCarrierWizardd7049d8a068769eb32177e404639b8ce'|'AdminCarrierWizardda5c987cbda47de7a6b09406b0840ec4'|'AdminCarrierWizarddd1f775e443ff3b9a89270713580a51b'|'AdminCarrierWizarddde695268ea519ababd83f0ca3d274fc'|'AdminCarrierWizardde62775a71fc2bf7a13d7530ae24a7ed'|'AdminCarrierWizarde0c892f1ca1fb503987c2db8fd250a43'|'AdminCarrierWizarde2fb9fa6091dd9f779b98efdf998a00a'|'AdminCarrierWizardea4788705e6873b424c65e91c2846b19'|'AdminCarrierWizardf1fe3b3625cdded65fc740dd16b978a6'|'AdminCartRules447da4af35bd09b4d501afb8a2090909'|'AdminCartRules49ee3087348e8d44e1feda1917443987'|'AdminCartRules502996d9790340c5fd7b86a5b93b1c9f'|'AdminCartRules65b7eaeb9ba4e9903f82297face9f7cd'|'AdminCartRules694e8d1f2ee056f98ee488bdc4982d73'|'AdminCartRules8c1279db4db86553e4b9682f78cf500e'|'AdminCartRulesb718adec73e04ce3ec720dd11a06a308'|'AdminCartRulesbd0e34e5be6447844e6f262d51f1a9dc'|'AdminCartRulesca0dbad92a874b2f69b549293387925e'|'AdminCartRulesd3b206d196cd6be3a2764c1fb90b200f'|'AdminCartRulese25f0ecd41211b01c83e5fec41df4fe7'|'AdminCartRulesec53a8c4f07baed5d8825072c89799be'|'AdminCartRulesf7de1b71605a10ef04416effa4c6e09e'|'AdminCarts0b91ef9198a761459c595de4b12ca109'|'AdminCarts0ec8109e3ffa61bcc147c89d9a396cd7'|'AdminCarts121401ccf0e3e23bcefe6a454f0f0601'|'AdminCarts44749712dbec183e983dcd78a7736c41'|'AdminCarts4d9e1e12ad8a61ea2a5554407488d91a'|'AdminCarts54e85d70ea67acdcc86963b14d6223a8'|'AdminCarts54f664c70c22054ea0d8d26fc3997ce7'|'AdminCarts90855df1b2d1240c62d81bd35d4cfb06'|'AdminCarts914419aa32f04011357d3b604a86d7eb'|'AdminCarts915000b6f3e7bb451a6ed4ffc2839ab6'|'AdminCarts947d8520f04473da621f2718138f3bc6'|'AdminCarts96b0141273eabab320119c467cdcaf17'|'AdminCartsb00b85425e74ed2c85dc3119b78ff2c3'|'AdminCartsb718adec73e04ce3ec720dd11a06a308'|'AdminCartsc595d2957600891ad3063a9b13dda4b0'|'AdminCartsce26601dac0dea138b7295f02b7620a7'|'AdminCartsd3b206d196cd6be3a2764c1fb90b200f'|'AdminCartsd79cf3f429596f77db95c65074663a54'|'AdminCartse25f0ecd41211b01c83e5fec41df4fe7'|'AdminCartse4c3da18c66c0147144767efeb59198f'|'AdminCartsee77ea46b0c548ed60eadf31bdd68613'|'AdminCartsf9b01554c32cc580b7380302f22613de'|'AdminCartsffbb5322a3702b0d8d9c7f506209c540'|'AdminCategories00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminCategories09e2683b6b92b326691cd992f6e5684b'|'AdminCategories154b6e494bf56cc4c787bfee6deac113'|'AdminCategories1dec4f55522b828fe5dacf8478021a9e'|'AdminCategories2028f52eb6d12dc1814f92f18c7365a0'|'AdminCategories3adbdb3ac060038aa0e6e6c138ef9873'|'AdminCategories3b449120fdb2867c000d7bba671aead3'|'AdminCategories3e053943605d9e4bf7dd7588ea19e9d2'|'AdminCategories3f64b2beede1082fd32ddb0bf11a641f'|'AdminCategories42c9e94e8e5c29861de422525262ff17'|'AdminCategories42f9ee5026d32792987af851a2ea0343'|'AdminCategories463848257c086c4816d9f4c020a8d19e'|'AdminCategories49ee3087348e8d44e1feda1917443987'|'AdminCategories4ae362f049719078c429941bed5dd440'|'AdminCategories52b68aaa602d202c340d9e4e9157f276'|'AdminCategories52f5e0bc3859bc5f5e25130b6c7e8881'|'AdminCategories53d98bd116f47fdfe15c8eb4525c5e99'|'AdminCategories5f573e91e5eaa092e00a4c4df393c0cb'|'AdminCategories6252c0f2c2ed83b7b06dfca86d4650bb'|'AdminCategories630f6dc397fe74e52d5189e2c80f282b'|'AdminCategories728b291abe64a8db2e524340d3a5ad4a'|'AdminCategories72d6d7a1885885bb55a565fd1070581a'|'AdminCategories7d7559ccac6bc30a4d985db11cb34a3a'|'AdminCategories7dce122004969d56ae2e0245cb754d35'|'AdminCategories7e35726fb991605ab3d0e6406599e6ef'|'AdminCategories850da4810ae3771d696d504d7346caa6'|'AdminCategories86754577897acfb25deb69039d49d9a7'|'AdminCategories86c34fe1588fab846f096e74c989972f'|'AdminCategories920bd1fb6d54c93fca528ce941464225'|'AdminCategories93cba07454f06a4a960172bbd6e2a435'|'AdminCategories947d8520f04473da621f2718138f3bc6'|'AdminCategories9d55fc80bbb875322aa67fd22fc98469'|'AdminCategories9e11e4b371570340ca07913bc4783a7a'|'AdminCategoriesa6398f9bbc9739ed67ca273b82da0a55'|'AdminCategoriesb5a7adde1af5c87d7fd797b6245c2a39'|'AdminCategoriesb718adec73e04ce3ec720dd11a06a308'|'AdminCategoriesb9f5c797ebbf55adccdd8539a65a0241'|'AdminCategoriesbafd7322c6e97d25b6299b5d6fe8920b'|'AdminCategoriesc9cc8cce247e49bae79f15173ce97354'|'AdminCategoriesd0d4e3688fdaee5afa292083b855e143'|'AdminCategoriesd3b206d196cd6be3a2764c1fb90b200f'|'AdminCategoriesde360c8b5dd9a9fdd592b1c08b3b4a62'|'AdminCategoriesde9ced9bf5e9829de4a93ad8c9d7a170'|'AdminCategoriese25f0ecd41211b01c83e5fec41df4fe7'|'AdminCategoriesf86f7b91afe27e79305a6b07bdb0d3c0'|'AdminCategoriesfe731b8039502b7b8a526edc4e232785'|'AdminCms00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminCms1dec4f55522b828fe5dacf8478021a9e'|'AdminCms21f93401134586a6c481422bf01fccfd'|'AdminCms3ed349365d718a59eadb9df9d5c339f2'|'AdminCms3f64b2beede1082fd32ddb0bf11a641f'|'AdminCms45b1bce0ceb1e155fc99d59a21761b9e'|'AdminCms52f5e0bc3859bc5f5e25130b6c7e8881'|'AdminCms5ece607071fe59ddc4c88dc6abfe2310'|'AdminCms6252c0f2c2ed83b7b06dfca86d4650bb'|'AdminCms7101cb00c6057071c3f5e52bcb31336b'|'AdminCms789ca3cc9e29e7ef767619e13c6b2f9e'|'AdminCms7d7559ccac6bc30a4d985db11cb34a3a'|'AdminCms86754577897acfb25deb69039d49d9a7'|'AdminCms87d49200bfc48e0bcfd3bae27d5616f3'|'AdminCms9d55fc80bbb875322aa67fd22fc98469'|'AdminCms9e11e4b371570340ca07913bc4783a7a'|'AdminCms9ea67be453eaccf020697b4654fc021a'|'AdminCmsb718adec73e04ce3ec720dd11a06a308'|'AdminCmsb78a3223503896721cca1303f776159b'|'AdminCmsb9f5c797ebbf55adccdd8539a65a0241'|'AdminCmsc9cc8cce247e49bae79f15173ce97354'|'AdminCmsCategories00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminCmsCategories1dec4f55522b828fe5dacf8478021a9e'|'AdminCmsCategories3f64b2beede1082fd32ddb0bf11a641f'|'AdminCmsCategories49ee3087348e8d44e1feda1917443987'|'AdminCmsCategories52f5e0bc3859bc5f5e25130b6c7e8881'|'AdminCmsCategories57bd1d8ace15f17054281d1e88336b97'|'AdminCmsCategories6252c0f2c2ed83b7b06dfca86d4650bb'|'AdminCmsCategories789ca3cc9e29e7ef767619e13c6b2f9e'|'AdminCmsCategories7d7559ccac6bc30a4d985db11cb34a3a'|'AdminCmsCategories86754577897acfb25deb69039d49d9a7'|'AdminCmsCategories9d55fc80bbb875322aa67fd22fc98469'|'AdminCmsCategories9e11e4b371570340ca07913bc4783a7a'|'AdminCmsCategoriesaf1b98adf7f686b84cd0b443e022b7a0'|'AdminCmsCategoriesb5a7adde1af5c87d7fd797b6245c2a39'|'AdminCmsCategoriesb718adec73e04ce3ec720dd11a06a308'|'AdminCmsCategoriesb9f5c797ebbf55adccdd8539a65a0241'|'AdminCmsCategoriesbed3b3133d292db46a0d28c5d91811b9'|'AdminCmsCategoriesc9cc8cce247e49bae79f15173ce97354'|'AdminCmsCategoriesd3b206d196cd6be3a2764c1fb90b200f'|'AdminCmsCategoriese25f0ecd41211b01c83e5fec41df4fe7'|'AdminCmscc4fbd30d676ea2f9994b7063a8ada15'|'AdminCmsce1e51212c9df52777620dc9de246da0'|'AdminCmsContentaf83e3b9f5d8398fc7b9e88cd6105bde'|'AdminCmsContentc7da501f54544eba6787960200d9efdb'|'AdminCmsContentd0ce974814566418b6ad509f305f319a'|'AdminCmsContentd3b206d196cd6be3a2764c1fb90b200f'|'AdminCmsContente25f0ecd41211b01c83e5fec41df4fe7'|'AdminCmsContentef61fb324d729c341ea8ab9901e23566'|'AdminCmsContentf7931413dee107ddf5289c8886baf7ec'|'AdminCmsd3b206d196cd6be3a2764c1fb90b200f'|'AdminCmse25f0ecd41211b01c83e5fec41df4fe7'|'AdminCmse6b391a8d2c4d45902a23a8b6585703d'|'AdminCmsef61fb324d729c341ea8ab9901e23566'|'AdminCmsf8825c9f08ff15b5ef6bc3a3898817e8'|'AdminContacts00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminContacts0f28459fa87b1b3ce6e8b17932f08c3a'|'AdminContacts9aa698f602b1e5694855cee73a683488'|'AdminContacts9cd9efd3eb168071eb0a199972c54aab'|'AdminContacts9d55fc80bbb875322aa67fd22fc98469'|'AdminContactsa2b086325f59e6c2fbd410511f4fdfb3'|'AdminContactsa4cd3191fdeea29906a113c78d4c0e26'|'AdminContactsb357b524e740bc85b9790a0712d84a30'|'AdminContactsb5a7adde1af5c87d7fd797b6245c2a39'|'AdminContactsb718adec73e04ce3ec720dd11a06a308'|'AdminContactsb78a3223503896721cca1303f776159b'|'AdminContactsb9f5c797ebbf55adccdd8539a65a0241'|'AdminContactsc41f67055a184ed2e895681336572761'|'AdminContactsc9cc8cce247e49bae79f15173ce97354'|'AdminContactsd3b206d196cd6be3a2764c1fb90b200f'|'AdminContactsdaedf9c5c8f38ac4cf641f3fb3e1bdc4'|'AdminContactse25f0ecd41211b01c83e5fec41df4fe7'|'AdminCountries00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminCountries01e93e9457d86c646965decd586dc5ea'|'AdminCountries05820ffcf621269347a1c14d81d20b77'|'AdminCountries0bd345b58335589d4c2fa1e50ae38619'|'AdminCountries0c750dacc725ba4047374d2efc56ce3a'|'AdminCountries10d30c6319cf61386c878e4d9a3e09a2'|'AdminCountries21e6a1298ab4cd040464d67a19d0f957'|'AdminCountries25d176f9d01ba273d1097ca7b298d281'|'AdminCountries3477a6086401c89ab72387673c777af2'|'AdminCountries3a58c76da4f48aaeb46af20f34caac1b'|'AdminCountries3be0efaecb3514a14757b8beb4b5dbb3'|'AdminCountries46a2a41cc6e552044816a2d04634545d'|'AdminCountries4d3d769b812b6faa6b76e1a8abaece2d'|'AdminCountries59716c97497eb9694541f7c3d37b1a4d'|'AdminCountries6252c0f2c2ed83b7b06dfca86d4650bb'|'AdminCountries6416e8cb5fc0a208d94fa7f5a300dbc4'|'AdminCountries665e1ad1c6657791cecb5b68008c7c00'|'AdminCountries790d59ef178acbc75d233bf4211763c6'|'AdminCountries92de0162cbdfa60f671ba3cad1d392a1'|'AdminCountries93cba07454f06a4a960172bbd6e2a435'|'AdminCountries94d7422ba3c5b0f2a35f50b048e51c6d'|'AdminCountries9d55fc80bbb875322aa67fd22fc98469'|'AdminCountriesa2ddbdfb29a0708bd711601f9277435c'|'AdminCountriesa4f164d8b1b72c87b8ce558827bcd423'|'AdminCountriesab81f235de173b2d7c0b69009dc6d492'|'AdminCountriesabb056fd74a8bdf858dbe3e68c5ea97c'|'AdminCountriesad68f9bafd9bf2dcf3865dac55662fd5'|'AdminCountriesb3ff996fe5c77610359114835baf9b38'|'AdminCountriesb718adec73e04ce3ec720dd11a06a308'|'AdminCountriesb9f5c797ebbf55adccdd8539a65a0241'|'AdminCountriesbafd7322c6e97d25b6299b5d6fe8920b'|'AdminCountriesc9cc8cce247e49bae79f15173ce97354'|'AdminCountriescd2f7b9409e0f1527766ad35aa8bd3c5'|'AdminCountriesce26601dac0dea138b7295f02b7620a7'|'AdminCountriesd3b206d196cd6be3a2764c1fb90b200f'|'AdminCountriesd3c5d8339f3840b75b4031c2b1e508de'|'AdminCountriesd8ec51bf63378409b1d40cc45c80f926'|'AdminCountriesdd7bf230fde8d4836917806aff6a6b27'|'AdminCountriese25f0ecd41211b01c83e5fec41df4fe7'|'AdminCountriesecefe3def8a2d034d80f6a8876c3d4b1'|'AdminCountriesf52c1ff75f69fa46ae947f0a3f653641'|'AdminCurrencies00d23a76e43b46dae9ec7aa9dcbebb32'|'AdminCurrencies02c86eb2792f3262c21d030a87e19793'|'AdminCurrencies05f78b95fd31ed10def4d0c1ef8e4751'|'AdminCurrencies076b68505282c6c0654708db343d6673'|'AdminCurrencies188b945338e1d6582c845dfebb469a45'|'AdminCurrencies1d10d84822a63187918311cb3a4e0c87'|'AdminCurrencies2b417805040de3a3df31c8fd3626b57c'|'AdminCurrencies2faec1f9f8cc7f8f40d521c4dd574f49'|'AdminCurrencies386c339d37e737a436499d423a77df0c'|'AdminCurrencies462fdc88328b3c9d31c63fa01b4f00b1'|'AdminCurrencies4abafa9686f98e398e29e46fd388fa36'|'AdminCurrencies4ef5571f164a6a7fcc9f4625d14e260b'|'AdminCurrencies586e27d3575f00e51ad43b66eb34e49f'|'AdminCurrencies597d44d65d4c76fe8cc8127b5b9b98bc'|'AdminCurrencies5f41116581201a5ef32656b7d4a51e88'|'AdminCurrencies5f838bbd088886f09f67b904e414f0e7'|'AdminCurrencies627b24abf27e2d03d38537f84e81cb2e'|'AdminCurrencies7559b7b096e0579368ca2ac7c187ba52'|'AdminCurrencies77428b04a1847555eb9bc52422a377b0'|'AdminCurrencies7c77e53206853cb381e91e037554faa3'|'AdminCurrencies8246d0c794e7db090587c4797b2a234f'|'AdminCurrencies876ca43ba50351d4e492970f40632661'|'AdminCurrencies9b9e87b59be497e92da8d2208f9914a0'|'AdminCurrencies9d55fc80bbb875322aa67fd22fc98469'|'AdminCurrenciesabe69e8e4b387562a767a6adaf112ed8'|'AdminCurrenciesad68f9bafd9bf2dcf3865dac55662fd5'|'AdminCurrenciesae2fce768106a7b6a61e57943b7a2143'|'AdminCurrenciesb718adec73e04ce3ec720dd11a06a308'|'AdminCurrenciesb9f5c797ebbf55adccdd8539a65a0241'|'AdminCurrenciesc1eaa657dda2892e5fec322ac710133a'|'AdminCurrenciesc9cc8cce247e49bae79f15173ce97354'|'AdminCurrenciesd3b206d196cd6be3a2764c1fb90b200f'|'AdminCurrenciesdfcfc43722eef1eab1e4a12e50a068b1'|'AdminCurrenciese25f0ecd41211b01c83e5fec41df4fe7'|'AdminCurrenciese75e316ab3a0a8c0c5fc4b48d1a7033f'|'AdminCurrenciesf6536046d7af41c3f3975868d6963179'|'AdminCurrenciesf90c17fdefeeca8b0d55b80a7bc3cb34'|'AdminCurrenciesfca4f4976817baa4a25858a3d6d5274d'|'AdminCustomerPreferences0db377921f4ce762c62526131097968f'|'AdminCustomerPreferences9f7a304fd501ed0e4d06b899fed739d0'|'AdminCustomerPreferencesbcb9adf1d2347258b5c65483e34cf86f'|'AdminCustomerPreferencesf2c822352f0e0a62e2de6d716475911b', '%s - All people who have created an account on this site.'|'%s - All people without a valid customer account.'|'%s - Customer who placed an order with the guest checkout.'|'%s tax excl.'|'(ie. "DROP TABLE IF EXISTS")'|'30 days'|'Abandoned cart'|'Abandoned Carts'|'According to total price'|'According to total price.'|'According to total weight'|'According to total weight.'|'Active'|'Add handling costs'|'Add New'|'Add new'|'Add new address'|'Add new attachment'|'Add New Attribute'|'Add new attribute'|'Add New Attributes'|'Add new carrier'|'Add new cart rule'|'Add new category'|'Add new CMS category'|'Add new CMS page'|'Add new contact'|'Add new country'|'Add new currency'|'Add new root category'|'Add New Value'|'Add new value'|'Add New Values'|'Address'|'Address alias'|'Address format'|'Address format invalid'|'Addresses'|'Age'|'Allowed characters: letters, spaces and %s'|'Allowed characters: letters, spaces and "%s".'|'An error occurred while saving associations of shops.'|'An error occurred while saving carrier groups.'|'An error occurred while saving carrier logo.'|'An error occurred while saving carrier ranges.'|'An error occurred while saving carrier zones.'|'An error occurred while saving the tax rules group.'|'An error occurred while saving this carrier.'|'Applies to all prices (e.g. $1,240.15).'|'Apply both regular shipping cost and product-specific shipping costs.'|'Apply shipping cost'|'Apply the cost of the highest defined range'|'Assign to a new zone'|'Associated with'|'Attachment'|'Attribute group'|'Attribute type'|'Attributes'|'Attributes generator'|'Automatically check for module updates'|'Automatically update currency rates'|'Average number of products per category'|'Average Order Value'|'Back to list'|'Back to the product'|'Backup options'|'Bad SQL query'|'Billing'|'Call prefix'|'Cancel'|'Carrier'|'Carrier name'|'Carrier name displayed during checkout'|'Carriers'|'Cart #%06d'|'Cart Rules'|'Categories'|'Category'|'Category Cover Image'|'Category thumbnail'|'Check the cookie\'s IP address'|'Check the IP address of the cookie in order to prevent your cookie from being stolen.'|'Choose a color with the color picker, or enter an HTML color (e.g. "lightblue", "#CC6600").'|'Choose the attribute group for this value.'|'City'|'CMS'|'CMS Category'|'CMS Page'|'Code'|'Color'|'Color or texture'|'Company'|'Contact name (e.g. Customer Support).'|'Contacts'|'Contains states'|'Conversion Rate'|'Countries'|'Country'|'Country name'|'Country options'|'Currencies'|'Currency'|'Currency format'|'Currency name'|'Currency rates'|'Current texture'|'Customer'|'Date'|'Day'|'Days'|'Decimals'|'Default behavior'|'Default currency'|'Default store currency'|'Define the upload limit for a downloadable product (in megabytes). This value has to be lower or equal to the maximum file upload allotted by your server (currently: %s MB).'|'Define the upload limit for an image (in megabytes). This value has to be lower or equal to the maximum file upload allotted by your server (currently: %s MB).'|'Delay'|'Delete'|'Delete selected'|'Delete selected item?'|'Delete selected items?'|'Delivery tracking URL: Type \'@\' where the tracking number should appear. It will be automatically replaced by the tracking number.'|'Delivery tracking URL: Type \'@\' where the tracking number should appear. It will then be automatically replaced by the tracking number.'|'Description'|'Disable carrier'|'Disabled'|'Disabled Categories'|'Display decimals in prices.'|'Display tax label (e.g. "Tax incl.")'|'Display this country to your customers (the selected country will always be displayed in the Back Office).'|'Displayed'|'DNI / NIF / NIE'|'Do you need a tax identification number?'|'Does it need Zip/postal code?'|'Drop existing tables during import'|'Drop existing tables during import.'|'Drop-down list'|'Edit'|'Edit New Attribute'|'Edit Value'|'Edit: %s'|'Email address'|'Emails will be sent to this address.'|'Empty Categories'|'Enable'|'Enable the carrier in the front office.'|'Enabled'|'Enter "0" for a longest shipping delay, or "9" for the shortest shipping delay.'|'Estimated delivery time will be displayed during checkout.'|'Exchange rate'|'Exchange rates are calculated from one unit of your shop\'s default currency. For example, if the default currency is euros and your chosen currency is dollars, type "1.20" (1€ = $1.20).'|'Expiration date'|'Export carts'|'Failed to copy the file.'|'Failed to update the status'|'File'|'File name'|'File not found'|'File size'|'Filename'|'Finish'|'First Name'|'For example: \'http://example.com/track.php?num=@\' with \'@\' where the tracking number should appear.'|'For in-store pickup, enter 0 to replace the carrier name with your shop name.'|'Forbidden characters'|'Free Shipping'|'Free shipping'|'Friendly URL'|'From %s to %s'|'Further information regarding this contact.'|'General'|'General settings'|'Geographical region.'|'Group access'|'Home phone'|'Hour'|'Hours'|'hours'|'ID'|'Identification Number'|'If enabled, all messages will be saved in the "Customer Service" page under the "Customer" menu.'|'If enabled, the backup script will drop your tables prior to restoring data.'|'Ignore statistics tables'|'Import'|'Include a space between symbol and price (e.g. $1,240.15 -> $ 1,240.15).'|'Include the handling costs (as set in Shipping > Preferences) in the final carrier price.'|'Include the shipping and handling costs in the carrier price.'|'Indexation by search engines'|'Indicate the format of the postal code: use L for a letter, N for a number, and C for the country\'s ISO 3166-1 alpha-2 code. For example, NNNNN for the United States, France, Poland and many other; LNNNNLLL for Argentina, etc. If you do not want PrestaShop to verify the postal code for this country, leave it blank.'|'International call prefix, (e.g. 1 for United States).'|'Invalid characters'|'ISO code'|'ISO code (e.g. USD for Dollars, EUR for Euros, etc.).'|'ISO code number'|'It appears the backup was successful, however you must download and carefully verify the backup file before proceeding.'|'Last Name'|'Lifetime of back office cookies'|'Lifetime of front office cookies'|'Logo'|'Mark all of the customer groups which you would like to have access to this category.'|'Mark the groups that are allowed access to this carrier.'|'Maximum depth managed by this carrier. Set the value to "0", or leave this field blank to ignore.'|'Maximum depth managed by this carrier. Set the value to "0," or leave this field blank to ignore.'|'Maximum height managed by this carrier. Set the value to "0", or leave this field blank to ignore.'|'Maximum height managed by this carrier. Set the value to "0," or leave this field blank to ignore.'|'Maximum package depth'|'Maximum package depth (%s)'|'Maximum package height'|'Maximum package height (%s)'|'Maximum package weight'|'Maximum package weight (%s)'|'Maximum package width'|'Maximum package width (%s)'|'Maximum size for a downloadable product'|'Maximum size for a product\'s image'|'Maximum size for attachment'|'Maximum weight managed by this carrier. Set the value to "0", or leave this field blank to ignore.'|'Maximum weight managed by this carrier. Set the value to "0," or leave this field blank to ignore.'|'Maximum width managed by this carrier. Set the value to "0", or leave this field blank to ignore.'|'Maximum width managed by this carrier. Set the value to "0," or leave this field blank to ignore.'|'megabytes'|'Meta description'|'Meta keywords'|'Meta title'|'Mobile phone'|'MultiStore'|'Name'|'Net Profit per Visitor'|'New modules and updates are displayed on the modules page.'|'Next'|'No'|'No items found'|'No Tax'|'No tax'|'Non ordered'|'Notifications'|'Notifications are numbered bubbles displayed at the very top of your back office, right next to the shop\'s name. They display the number of new items since you last clicked on them.'|'Numeric ISO code'|'Numeric ISO code (e.g. 840 for Dollars, 978 for Euros, etc.).'|'Official list here'|'Online'|'Only account creation'|'Only letters and the hyphen (-) character are allowed.'|'Only letters and the minus (-) character are allowed.'|'Only letters and the minus character are allowed.'|'Only letters, numbers, underscore (_) and the minus (-) character are allowed.'|'or'|'Order ID'|'Other'|'Out-of-range behavior'|'Out-of-range behavior occurs when no defined range matches the customer\'s cart (e.g. when the weight of the cart is greater than the highest weight limit defined by the weight ranges).'|'Out-of-range behavior occurs when none is defined (e.g. when a customer\'s cart weight is greater than the highest range limit).'|'Page content'|'Pages in category "%s"'|'Pages in this category'|'Parent category'|'Parent CMS Category'|'Payment'|'Performance'|'Please set another carrier as default before deleting this one.'|'Position'|'Previous'|'Priority'|'product(s)'|'Public name'|'Quantity'|'Radio buttons'|'Registration process type'|'Restrict country selections in front office to those covered by active carriers'|'Root Category'|'Save'|'Save and preview'|'Save and Stay'|'Save and stay'|'Save messages?'|'Save then add another value'|'Set the amount of hours during which the back office cookies are valid. After that amount of time, the PrestaShop user will have to log in again.'|'Set the amount of hours during which the front office cookies are valid. After that amount of time, the customer will have to log in again.'|'Set the maximum size allowed for attachment files (in megabytes). This value has to be lower or equal to the maximum file upload allotted by your server (currently: %s MB).'|'Shipping and handling'|'Shipping locations and costs'|'Shop association'|'Show notifications for new customers'|'Show notifications for new messages'|'Show notifications for new orders'|'Size'|'Size, weight, and group access'|'Spacing'|'Speed grade'|'Standard (account creation and address creation)'|'State'|'Status'|'Such as with Dollars'|'Such as with Euros'|'Summary'|'Symbol'|'Tax'|'Texture'|'The "Backups" directory located in the admin directory must be writable (CHMOD 755 / 777).'|'The carrier\'s name will be displayed during checkout.'|'The estimated delivery time will be displayed during checkout.'|'The file %1dollars exceeds the size allowed by the server. The limit is set to %2dollard MB.'|'The file is too large. Maximum size allowed is: %1dollard kB. The file you are trying to upload is %2dollard kB.'|'The public name for this attribute, displayed to the customers.'|'The status has been updated successfully'|'The value must be an integer.'|'The way the attribute\'s values will be presented to the customers in the product\'s page.'|'The zones in which this carrier will be used.'|'This attachment is associated with the following products, do you really want to delete it?'|'This feature has been disabled. You can activate it here: %s.'|'This is the main image for your category, displayed in the category page. The category description will overlap this image and appear in its top-left corner.'|'This will display notifications every time a new customer registers in your shop.'|'This will display notifications when new messages are posted in your shop.'|'This will display notifications when new orders are made in your shop.'|'This will override the HTML color!'|'Title'|'To add "tags" click in the field, write something, and then press "Enter."'|'To add "tags," click in the field, write something, and then press "Enter."'|'Top Category'|'Total'|'Total Cart'|'Tracking URL'|'Transit time'|'Two -- or three -- letter ISO code (e.g. "us for United States).'|'Two -- or three -- letter ISO code (e.g. U.S. for United States)'|'Update currency rates'|'Upload a logo from your computer.'|'Upload an image file containing the color texture from your computer.'|'Upload error. Please check your server configurations for the maximum upload size allowed.'|'Upload quota'|'URL'|'Use one of our recommended carrier modules'|'Use PrestaShop\'s webservice to update your currency exchange rates. However, please use caution: rates are provided as-is.'|'Use PrestaShop\'s webservice to update your currency\'s exchange rates. However, please use caution: rates are provided as-is.'|'Value'|'Values'|'Values count'|'VAT number'|'Warehouse'|'Will appear in front office (e.g. $, €, etc.)'|'Yes'|'You can place the following URL in your crontab file, or you can click it yourself regularly'|'You cannot delete the default currency'|'You cannot disable the default currency'|'You must choose at least one shop or group shop.'|'You must register at least one phone number.'|'You now have three default customer groups.'|'Your internal name for this attribute.'|'Zip/Postal Code'|'Zip/postal code format'|'Zone'>&oversized-array", $_LANGADM); diff --git a/tests/PHPStan/Analyser/data/bug-5231.php b/tests/PHPStan/Analyser/data/bug-5231.php new file mode 100644 index 00000000000..f42aebe125a --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-5231.php @@ -0,0 +1,78 @@ +collection as $item) { + if ((string)$item === $name) { + return $item; + } + } + + return null; + } + + // must be exists! + public function existsByKey(string $name): bool + { + return $this->findByName($name) !== null; + } + + public function getSorted(callable $comparator): self + { + $sortedCollection = $this->collection; + usort($sortedCollection, $comparator); + + $filtered = array_values($sortedCollection); + + return new static(...$filtered); + } + + public function rewind(): void + { + reset($this->collection); + } + + public function current() + { + return current($this->collection); + } + + /** + * @return bool|float|int|string|null + */ + public function key() + { + return key($this->collection); + } + + /** + * @return mixed|void + */ + public function next() + { + return next($this->collection); + } + + public function valid(): bool + { + return isset($this->collection[key($this->collection)]); + } +} diff --git a/tests/PHPStan/Analyser/data/bug-5231_2.php b/tests/PHPStan/Analyser/data/bug-5231_2.php new file mode 100644 index 00000000000..07e65e5b267 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-5231_2.php @@ -0,0 +1,78 @@ +collection as $item) { + if ((string)$item === $name) { + return $item; + } + } + + return null; + } + + // must be exists! + public function existsByKey(string $name): bool + { + return $this->findByName($name) !== null; + } + + public function getSorted(callable $comparator): self + { + $sortedCollection = $this->collection; + usort($sortedCollection, $comparator); + + $filtered = array_values($sortedCollection); + + return new static(...$filtered); + } + + public function rewind(): void + { + reset($this->collection); + } + + public function current() + { + return current($this->collection); + } + + /** + * @return bool|float|int|string|null + */ + public function key() + { + return key($this->collection); + } + + /** + * @return mixed|void + */ + public function next() + { + return next($this->collection); + } + + public function valid(): bool + { + return isset($this->collection[key($this->collection)]); + } +} diff --git a/tests/PHPStan/Analyser/data/bug-5390.php b/tests/PHPStan/Analyser/data/bug-5390.php new file mode 100644 index 00000000000..57332bebe3b --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-5390.php @@ -0,0 +1,19 @@ +b->someMethod(); + } +} +/** @mixin A */ +class B +{ + +} diff --git a/tests/PHPStan/Analyser/data/bug-6265.php b/tests/PHPStan/Analyser/data/bug-6265.php new file mode 100644 index 00000000000..a50d962c3f9 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-6265.php @@ -0,0 +1,67 @@ +comments['#' . $comment['thread_parentid']])) + { + if (in_array('#' . $comment['parentid'], $lv1_keys)) + { + if (!$match) + { + for ($ii = 0;$ii < count($lv2_keys);$ii++) + { + if (!$match3) + { + for ($iii = 0;$iii < count($lv3_keys_all);$iii++) + { + if (!$match4) + { + for ($iiii = 0;$iiii < count($lv4_keys_all);$iiii++) + { + if (!$match5) + { + for ($i6 = 0;$i6 < count($lv5_keys_all);$i6++) + { + if (!$match6) + { + for ($i7 = 0;$i7 < count($lv6_keys_all);$i7++) + { + if (!$match7) + { + for ($i8 = 0;$i8 < count($lv7_keys_all);$i8++) + { + if (!$match8) + { + for ($i9 = 0;$i9 < count($lv8_keys_all);$i9++) + { + if (!$match9) + { + + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return true; + } + } + } + +} diff --git a/tests/PHPStan/Analyser/data/bug-6442.php b/tests/PHPStan/Analyser/data/bug-6442.php new file mode 100644 index 00000000000..2bcd2309ff4 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-6442.php @@ -0,0 +1,24 @@ + $adansch) { + $aktueller_endkunde = new x(); + $avk = new avk(); + $change = 0; + $col = []; + if ($adansch['telefon'] != $aktueller_endkunde->telefon && '' != $adansch['telefon']) { + $col['telefon'] = $adansch['telefon']; + $change = 1; + } + if ($adansch['email'] != $aktueller_endkunde->email && '' != $adansch['email']) { + $col['email'] = $adansch['email']; + $change = 1; + } + if ($adansch['fa_gruendungsjahr'] != $aktueller_endkunde->fa_gruendungsjahr) { + $col['fa_gruendungsjahr'] = $adansch['fa_gruendungsjahr']; + $change = 1; + } + if ($adansch['fa_geschaeftsfuehrer'] != $aktueller_endkunde->fa_geschaeftsfuehrer) { + $col['fa_geschaeftsfuehrer'] = $adansch['fa_geschaeftsfuehrer']; + $change = 1; + } + if ($adansch['handelregnr'] != $aktueller_endkunde->handelregnr) { + $col['handelregnr'] = $adansch['handelregnr']; + $change = 1; + } + if ($adansch['amtsgericht'] != $aktueller_endkunde->amtsgericht) { + $col['amtsgericht'] = $adansch['amtsgericht']; + $change = 1; + } + if ($adansch['ustid'] != $aktueller_endkunde->ustid) { + $col['ustid'] = $adansch['ustid']; + $change = 1; + } + if ($adansch['ustnr'] != $aktueller_endkunde->ustnr) { + $col['ustnr'] = $adansch['ustnr']; + $change = 1; + } + + if ($adansch['firma'] != $aktueller_endkunde->firma) { + $col['firma'] = $adansch['firma']; + $change = 1; + } + + if (1 == $change) { + // MobisHelper::createXmlDataJob("ada",(int)$aktueller_endkunde->adaid, $col); + if (!isset($_SENDJOB[$avk->avkid]['ada'][$aktueller_endkunde->adaid])) { + $_SENDJOB[$avk->avkid]['ada'][$aktueller_endkunde->adaid] = []; + } + + $_SENDJOB[$avk->avkid]['ada'][$aktueller_endkunde->adaid] = $_SENDJOB[$avk->avkid]['ada'][$aktueller_endkunde->adaid] + $col; + } + } + } +} + + +class x { + /** + * @var int + */ + public $adaid; + /** + * @var string + */ + public $telefon; + /** + * @var string + */ + public $email; + /** + * @var string + */ + public $fa_gruendungsjahr; + /** + * @var string + */ + public $fa_geschaeftsfuehrer; + /** + * @var string + */ + public $handelregnr; + /** + * @var string + */ + public $amtsgericht; + /** + * @var string + */ + public $ustid; + /** + * @var string + */ + public $ustnr; + /** + * @var string + */ + public $firma; +} +class avk { + /** + * @var int + */ + public $avkid; +} diff --git a/tests/PHPStan/Analyser/data/bug-6948.php b/tests/PHPStan/Analyser/data/bug-6948.php new file mode 100644 index 00000000000..592f0af7520 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-6948.php @@ -0,0 +1,64 @@ +getFoo()->getFoo()); +}; diff --git a/tests/PHPStan/Analyser/data/bug-7581.php b/tests/PHPStan/Analyser/data/bug-7581.php new file mode 100644 index 00000000000..53b18b12527 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-7581.php @@ -0,0 +1,115 @@ + $val): + switch ($tag): + case 'A0': + $data['A0'] = ''; + break; + case 'A1': + $data['A1'] = ''; + break; + case 'A2': + $data['A2'] = ''; + break; + case 'A3': + $data['A3'] = ''; + break; + case 'A4': + $data['A4'] = ''; + break; + case 'A5': + $data['A5'] = ''; + break; + case 'A6': + $data['A6'] = ''; + break; + case 'A7': + $data['A7'] = ''; + break; + case 'A8': + $data['A8'] = ''; + break; + case 'A9': + $data['A9'] = ''; + break; + case 'A10': + $data['A10'] = ''; + break; + case 'A11': + $data['A11'] = ''; + break; + case 'A12': + $data['A12'] = ''; + break; + case 'A13': + $data['A13'] = ''; + break; + case 'A14': + $data['A14'] = ''; + break; + case 'A15': + $data['A15'] = ''; + break; + case 'A16': + $data['A16'] = ''; + break; + case 'A17': + $data['A17'] = ''; + break; + case 'A18': + $data['A18'] = ''; + break; + case 'A19': + $data['A19'] = ''; + break; + case 'A20': + $data['A20'] = ''; + break; + case 'A21': + $data['A21'] = ''; + break; + case 'A22': + $data['A22'] = ''; + break; + case 'A23': + $data['A23'] = ''; + break; + case 'A24': + $data['A24'] = ''; + break; + case 'A25': + $data['A25'] = ''; + break; + case 'A26': + $data['A26'] = ''; + break; + case 'A27': + $data['A27'] = ''; + break; + case 'A28': + $data['A28'] = ''; + break; + case 'A29': + $data['A29'] = ''; + break; + case 'A30': + $data['A30'] = ''; + break; + case 'A31': + $data['A31'] = ''; + break; + case 'A32': + $data['A32'] = ''; + break; + endswitch; + endforeach; + + echo 'test'; +} diff --git a/tests/PHPStan/Analyser/data/bug-7637.php b/tests/PHPStan/Analyser/data/bug-7637.php new file mode 100644 index 00000000000..16e12dcfe4b --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-7637.php @@ -0,0 +1,71 @@ + : + * ($key is 'editor' ? string|null : + * ($key is 'editor_basepath' ? string|null : + * ($key is 'timer' ? rex_timer : + * ($key is 'timezone' ? string : + * ($key is 'table_prefix' ? non-empty-string : + * ($key is 'temp_prefix' ? non-empty-string : + * ($key is 'version' ? string : + * ($key is 'server' ? string : + * ($key is 'servername' ? string : + * ($key is 'error_email' ? string : + * ($key is 'lang' ? non-empty-string : + * ($key is 'instname' ? non-empty-string : + * ($key is 'theme' ? non-empty-string : + * ($key is 'start_page' ? non-empty-string : + * ($key is 'socket_proxy' ? non-empty-string|null : + * ($key is 'password_policy' ? array : + * ($key is 'backend_login_policy' ? array : + * ($key is 'db' ? array : + * ($key is 'setup' ? bool|array : + * ($key is 'system_addons' ? non-empty-string[] : + * ($key is 'setup_addons' ? non-empty-string[] : + * mixed|null + * ))))))))))))))))))))))))) + * ) + */ + public static function getProperty($key, $default = null) + { + /** @psalm-suppress TypeDoesNotContainType **/ + if (!is_string($key)) { + throw new InvalidArgumentException('Expecting $key to be string, but ' . gettype($key) . ' given!'); + } + /** @psalm-suppress MixedReturnStatement **/ + if (isset(self::$properties[$key])) { + return self::$properties[$key]; + } + /** @psalm-suppress MixedReturnStatement **/ + return $default; + } +} + +function () { + assertType('array>', HelloWorld::getProperty('db')); +}; diff --git a/tests/PHPStan/Analyser/data/bug-7901.php b/tests/PHPStan/Analyser/data/bug-7901.php new file mode 100644 index 00000000000..bf3244b5afe --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-7901.php @@ -0,0 +1,15007 @@ + 0, + 'ccccc_yyyy' => 0, + 'oooo_rrrrr' => 0, + 'oooo_yyyy' => 0, + 'ssss' => 0, + 'ssss_next' => 0, + ]; + + $jjjjjjxxxx = [ + 'ccccc' => 0, + 'ccccc_eur' => 0, + 'oooo' => 0, + 'oooo_eur' => 0, + ]; + + $resultsTemplate = [ + 'ccccc' => 0, + 'oooo' => 0, + ]; + + $vvvvTemplate = [ + 0 => $jjjjjjxxxx, + self::F => $jjjjjjxxxx, + self::I => $jjjjjjxxxx, + self::H => $jjjjjjxxxx, + self::G => $jjjjjjxxxx, + ]; + + $kkkkkkkTemplate = [ + 0 => $ggggxxxx, + self::C => $ggggxxxx, + self::D => $ggggxxxx, + self::E => $ggggxxxx, + ]; + + $results = [ + 'ddddd' => [ + 'bbbbb' => [0 => $kkkkkkkTemplate], + 'eeeee' => [0 => $kkkkkkkTemplate], + 'zzzz' => [0 => $kkkkkkkTemplate], + ], + 'qqqqq' => [ + 'bbbbb' => $kkkkkkkTemplate, + 'eeeee' => $kkkkkkkTemplate, + 'zzzz' => $kkkkkkkTemplate, + ], + 'jjjjjj' => [ + 'bbbbb' => [ + 0 => $vvvvTemplate, + self::A => $vvvvTemplate, + self::B => $vvvvTemplate, + ], + 'eeeee' => $jjjjjjxxxx, + 'zzzz' => $jjjjjjxxxx, + ], + 'aaaaaaa' => [ + 'bbbbb' => $resultsTemplate, + 'eeeee' => $resultsTemplate, + 'wwww' => $resultsTemplate, + 'nnnnn' => $resultsTemplate, + ], + 'iiiii' => $resultsTemplate, + ]; + + /** @var mixed[] $llllllgggg */ + $llllllgggg = []; + + foreach ($llllllgggg as $llllllmmmmmm) { + if ((bool)$llllllmmmmmm['a']) { + $results['aaaaaaa']['wwww']['oooo'] += (float)$llllllmmmmmm['b']; + + continue; + } + + if ((bool)$llllllmmmmmm['c']) { + $results['aaaaaaa']['nnnnn']['oooo'] += (float)$llllllmmmmmm['d']; + + continue; + } + + $tttttId = $llllllmmmmmm['e']; + + $tttttuuuuu = (float)$llllllmmmmmm['b']; + $tttttuuuuuNet = (float)$llllllmmmmmm['f']; + $ssss = (float)$llllllmmmmmm['g']; + $ssssNext = (float)$llllllmmmmmm['h']; + $kkkkkkkId = (int)$llllllmmmmmm['i']; + $isbbbbb = (bool)$llllllmmmmmm['j']; + $key = $isbbbbb ? 'bbbbb' : 'eeeee'; + + if ((bool)$llllllmmmmmm['k']) { + $results['ddddd']['zzzz'][0][0]['oooo_rrrrr'] += $tttttuuuuu; + $results['ddddd']['zzzz'][0][0]['oooo_yyyy'] += $tttttuuuuuNet; + $results['ddddd']['zzzz'][0][0]['ssss'] += $ssss; + $results['ddddd']['zzzz'][0][0]['ssss_next'] += $ssssNext; + + $results['ddddd']['zzzz'][0][$tttttId]['oooo_rrrrr'] += $tttttuuuuu; + $results['ddddd']['zzzz'][0][$tttttId]['oooo_yyyy'] += $tttttuuuuuNet; + $results['ddddd']['zzzz'][0][$tttttId]['ssss'] += $ssss; + $results['ddddd']['zzzz'][0][$tttttId]['ssss_next'] += $ssssNext; + + $results['ddddd'][$key][0][0]['oooo_rrrrr'] += $tttttuuuuu; + $results['ddddd'][$key][0][0]['oooo_yyyy'] += $tttttuuuuuNet; + $results['ddddd'][$key][0][0]['ssss'] += $ssss; + $results['ddddd'][$key][0][0]['ssss_next'] += $ssssNext; + + $results['ddddd'][$key][0][$tttttId]['oooo_rrrrr'] += $tttttuuuuu; + $results['ddddd'][$key][0][$tttttId]['oooo_yyyy'] += $tttttuuuuuNet; + $results['ddddd'][$key][0][$tttttId]['ssss'] += $ssss; + $results['ddddd'][$key][0][$tttttId]['ssss_next'] += $ssssNext; + + $results['ddddd'][$key][$kkkkkkkId][0]['oooo_rrrrr'] += $tttttuuuuu; + $results['ddddd'][$key][$kkkkkkkId][0]['oooo_yyyy'] += $tttttuuuuuNet; + $results['ddddd'][$key][$kkkkkkkId][0]['ssss'] += $ssss; + $results['ddddd'][$key][$kkkkkkkId][0]['ssss_next'] += $ssssNext; + + $results['ddddd'][$key][$kkkkkkkId][$tttttId]['oooo_rrrrr'] = $tttttuuuuu; + $results['ddddd'][$key][$kkkkkkkId][$tttttId]['oooo_yyyy'] = $tttttuuuuuNet; + $results['ddddd'][$key][$kkkkkkkId][$tttttId]['ssss'] = $ssss; + $results['ddddd'][$key][$kkkkkkkId][$tttttId]['ssss_next'] = $ssssNext; + } elseif ((bool)$llllllmmmmmm['l']) { + if (!$isbbbbb) { + continue; + } + + $results['qqqqq']['zzzz'][0]['oooo_yyyy'] += $tttttuuuuu; + $results['qqqqq']['zzzz'][$tttttId]['oooo_yyyy'] += $tttttuuuuu; + $results['qqqqq']['bbbbb'][0]['oooo_yyyy'] += $tttttuuuuu; + $results['qqqqq']['bbbbb'][$tttttId]['oooo_yyyy'] = $tttttuuuuu; + } else { + throw new \LogicException(''); + } + } + + /** @var mixed[] $aaa */ + $aaa = []; + + foreach ($aaa as $row) { + $tttttId = $row['tttttId']; + $kkkkkkkId = $row['kkkkkkkId']; + $key = $row['key']; + + $tttttuuuuu = (float)$row['tttttuuuuuggggEurorrrrr']; + $tttttuuuuuNet = (float)$row['tttttuuuuuggggEuroNet']; + + if ($row['isddddd']) { + $results['ddddd']['zzzz'][0][0]['ccccc_rrrrr'] += $tttttuuuuu; + $results['ddddd']['zzzz'][0][0]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['ddddd']['zzzz'][0][$tttttId]['ccccc_rrrrr'] += $tttttuuuuu; + $results['ddddd']['zzzz'][0][$tttttId]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['ddddd'][$key][0][0]['ccccc_rrrrr'] += $tttttuuuuu; + $results['ddddd'][$key][0][0]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['ddddd'][$key][0][$tttttId]['ccccc_rrrrr'] += $tttttuuuuu; + $results['ddddd'][$key][0][$tttttId]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['ddddd'][$key][$kkkkkkkId][0]['ccccc_rrrrr'] += $tttttuuuuu; + $results['ddddd'][$key][$kkkkkkkId][0]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['ddddd'][$key][$kkkkkkkId][$tttttId]['ccccc_rrrrr'] = $tttttuuuuu; + $results['ddddd'][$key][$kkkkkkkId][$tttttId]['ccccc_yyyy'] = $tttttuuuuuNet; + } else { + $results['qqqqq']['zzzz'][0]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['qqqqq']['zzzz'][$tttttId]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['qqqqq']['bbbbb'][0]['ccccc_yyyy'] += $tttttuuuuuNet; + $results['qqqqq']['bbbbb'][$tttttId]['ccccc_yyyy'] += $tttttuuuuuNet; + } + } + + $results['jjjjjj']['zzzz']['ccccc_eur'] = $results['jjjjjj']['bbbbb'][0][0]['ccccc_eur'] + + $results['jjjjjj']['eeeee']['ccccc_eur']; + $results['jjjjjj']['zzzz']['oooo_eur'] = $results['jjjjjj']['bbbbb'][0][0]['oooo_eur'] + + $results['jjjjjj']['eeeee']['oooo_eur']; + + $bbbbbggggccccc = $results['ddddd']['bbbbb'][0][0]['ccccc_yyyy'] + + $results['qqqqq']['bbbbb'][0]['ccccc_yyyy']; + $bbbbbjjjjjjccccc = $results['jjjjjj']['bbbbb'][0][0]['ccccc_eur']; + + $bbbbbggggoooo = $results['ddddd']['bbbbb'][0][0]['oooo_yyyy'] + + $results['ddddd']['bbbbb'][0][0]['ssss_next'] + + $results['qqqqq']['bbbbb'][0]['oooo_yyyy']; + $bbbbbjjjjjjoooo = $results['jjjjjj']['bbbbb'][0][0]['oooo_eur']; + + $ffffffggggccccc = $results['ddddd']['eeeee'][0][0]['ccccc_yyyy'] + + $results['qqqqq']['eeeee'][0]['ccccc_yyyy']; + $ffffffjjjjjjccccc = $results['jjjjjj']['eeeee']['ccccc_eur']; + + $ffffffggggoooo = $results['ddddd']['eeeee'][0][0]['oooo_yyyy'] + + $results['ddddd']['eeeee'][0][0]['ssss_next'] + + $results['qqqqq']['eeeee'][0]['oooo_yyyy']; + $ffffffjjjjjjoooo = $results['jjjjjj']['eeeee']['oooo_eur']; + + $results['aaaaaaa']['bbbbbbbbbbbb']['ccccc'] = $bbbbbjjjjjjccccc > 0 ? $bbbbbggggccccc - $bbbbbjjjjjjccccc : 0; + $results['aaaaaaa']['bbbbb']['oooo'] = $bbbbbjjjjjjoooo > 0 ? $bbbbbggggoooo - $bbbbbjjjjjjoooo : 0; + $results['aaaaaaa']['eeeee']['ccccc'] = $ffffffjjjjjjccccc > 0 ? $ffffffggggccccc - $ffffffjjjjjjccccc : 0; + $results['aaaaaaa']['eeeee']['oooo'] = $ffffffjjjjjjoooo > 0 ? $ffffffggggoooo - $ffffffjjjjjjoooo : 0; + + $results['aaaaaaa']['zzzz']['ccccc'] = + $results['aaaaaaa']['bbbbb']['ccccc'] + + $results['aaaaaaa']['eeeee']['ccccc'] + + $results['aaaaaaa']['wwww']['oooo'] + + $results['aaaaaaa']['nnnnn']['oooo']; + + $results['aaaaaaa']['zzzz']['oooo'] = + $results['aaaaaaa']['bbbbb']['oooo'] + + $results['aaaaaaa']['eeeee']['oooo'] + + $results['aaaaaaa']['wwww']['oooo'] + + $results['aaaaaaa']['nnnnn']['oooo']; + + $results['iiiii']['ccccc'] = $bbbbbjjjjjjccccc > 0 ? ($bbbbbggggccccc / $bbbbbjjjjjjccccc * 100) - 100 : 0; + $results['iiiii']['oooo'] = $bbbbbjjjjjjoooo > 0 ? ($bbbbbggggoooo / $bbbbbjjjjjjoooo * 100) - 100 : 0; + + return $results; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-8146a.php b/tests/PHPStan/Analyser/data/bug-8146a.php new file mode 100644 index 00000000000..3d0e10a65f2 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-8146a.php @@ -0,0 +1,152 @@ +session = $session; + $this->object = $object; + } + + public function sayHello(): void + { + $changeLog = []; + + $firstname = $this->session->get('firstname'); + if ($firstname !== $this->object->getFirstname()) { + $changelog['firstname_old'] = $this->object->getFirstname(); + $changelog['firstname_new'] = $firstname; + } + + $lastname = $this->session->get('lastname'); + if ($lastname !== $this->object->getLastname()) { + $changelog['lastname_old'] = $this->object->getLastname(); + $changelog['lastname_new'] = $lastname; + } + + $street = $this->session->get('street'); + if ($street !== $this->object->getStreet()) { + $changelog['street_old'] = $this->object->getStreet(); + $changelog['street_new'] = $street; + } + + $zip = $this->session->get('zip'); + if ($zip !== $this->object->getZip()) { + $changelog['zip_old'] = $this->object->getZip(); + $changelog['zip_new'] = $zip; + } + + $city = $this->session->get('city'); + if ($city !== $this->object->getCity()) { + $changelog['city_old'] = $this->object->getCity(); + $changelog['city_new'] = $city; + } + + $phonenumber = $this->session->get('phonenumber'); + if ($phonenumber !== $this->object->getPhonenumber()) { + $changelog['phonenumber_old'] = $this->object->getPhonenumber(); + $changelog['phonenumber_new'] = $phonenumber; + } + + $email = $this->session->get('email'); + if ($email !== $this->object->getEmail()) { + $changelog['email_old'] = $this->object->getEmail(); + $changelog['email_new'] = $email; + } + + $deliveryFirstname = $this->session->get('deliveryFirstname'); + if ($deliveryFirstname !== $this->object->getDeliveryFirstname()) { + $changelog['deliveryFirstname_old'] = $this->object->getDeliveryFirstname(); + $changelog['deliveryFirstname_new'] = $deliveryFirstname; + } + + $deliveryLastname = $this->session->get('deliveryLastname'); + if ($deliveryLastname !== $this->object->getDeliveryLastname()) { + $changelog['deliveryLastname_old'] = $this->object->getDeliveryLastname(); + $changelog['deliveryLastname_new'] = $deliveryLastname; + } + $deliveryStreet = $this->session->get('deliveryStreet'); + if ($deliveryStreet !== $this->object->getDeliveryStreet()) { + $changelog['deliveryStreet_old'] = $this->object->getDeliveryStreet(); + $changelog['deliveryStreet_new'] = $deliveryStreet; + } + $deliveryZip = $this->session->get('deliveryZip'); + if ($deliveryZip !== $this->object->getDeliveryZip()) { + $changelog['deliveryZip_old'] = $this->object->getDeliveryZip(); + $changelog['deliveryZip_new'] = $deliveryZip; + } + $deliveryCity = $this->session->get('deliveryCity'); + if ($deliveryCity !== $this->object->getDeliveryCity()) { + $changelog['deliveryCity_old'] = $this->object->getDeliveryCity(); + $changelog['deliveryCity_new'] = $deliveryCity; + } + + } +} + +interface SessionInterface +{ + /** + * @return mixed + */ + public function get(string $key); +} + +interface DataObject +{ + /** + * @return string|null + */ + public function getFirstname(); + /** + * @return string|null + */ + public function getLastname(); + /** + * @return string|null + */ + public function getStreet(); + /** + * @return string|null + */ + public function getZip(); + /** + * @return string|null + */ + public function getCity(); + /** + * @return string|null + */ + public function getPhonenumber(); + /** + * @return string|null + */ + public function getEmail(); + /** + * @return string|null + */ + public function getDeliveryFirstname(); + /** + * @return string|null + */ + public function getDeliveryLastname(); + /** + * @return string|null + */ + public function getDeliveryStreet(); + /** + * @return string|null + */ + public function getDeliveryZip(); + /** + * @return string|null + */ + public function getDeliveryCity(); +} diff --git a/tests/PHPStan/Analyser/data/bug-8146b.php b/tests/PHPStan/Analyser/data/bug-8146b.php new file mode 100644 index 00000000000..6d3ed342901 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-8146b.php @@ -0,0 +1,5544 @@ +, coordinates: array{lat: float, lng: float}}>> */ + public function getData(): array + { + return [ + 'Bács-Kiskun' => [ + 'Ágasegyháza' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.8386043, 'lng' => 19.4502899], + ], + 'Akasztó' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6898175, 'lng' => 19.205086], + ], + 'Apostag' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.8812652, 'lng' => 18.9648478], + ], + 'Bácsalmás' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.1250396, 'lng' => 19.3357509], + ], + 'Bácsbokod' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1234737, 'lng' => 19.155708], + ], + 'Bácsborsód' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.0989373, 'lng' => 19.1566725], + ], + 'Bácsszentgyörgy' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 45.9746039, 'lng' => 19.0398066], + ], + 'Bácsszőlős' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.1352003, 'lng' => 19.4215997], + ], + 'Baja' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1817951, 'lng' => 18.9543051], + ], + 'Ballószög' => [ + 'constituencies' => ['Bács-Kiskun 2.'], + 'coordinates' => ['lat' => 46.8619947, 'lng' => 19.5726144], + ], + 'Balotaszállás' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.3512041, 'lng' => 19.5403558], + ], + 'Bátmonostor' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1057304, 'lng' => 18.9238311], + ], + 'Bátya' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.4891741, 'lng' => 18.9579127], + ], + 'Bócsa' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.6113504, 'lng' => 19.4826419], + ], + 'Borota' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.2657107, 'lng' => 19.2233598], + ], + 'Bugac' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.6883076, 'lng' => 19.6833655], + ], + 'Bugacpusztaháza' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.7022143, 'lng' => 19.6356538], + ], + 'Császártöltés' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.4222869, 'lng' => 19.1815532], + ], + 'Csátalja' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.0363238, 'lng' => 18.9469006], + ], + 'Csávoly' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1912599, 'lng' => 19.1451178], + ], + 'Csengőd' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.71532, 'lng' => 19.2660933], + ], + 'Csikéria' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.121679, 'lng' => 19.473777], + ], + 'Csólyospálos' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.4180837, 'lng' => 19.8402638], + ], + 'Dávod' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 45.9976187, 'lng' => 18.9176479], + ], + 'Drágszél' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.4653889, 'lng' => 19.0382659], + ], + 'Dunaegyháza' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.8383215, 'lng' => 18.9605216], + ], + 'Dunafalva' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.081562, 'lng' => 18.7782526], + ], + 'Dunapataj' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6422106, 'lng' => 18.9989393], + ], + 'Dunaszentbenedek' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.593856, 'lng' => 18.8935322], + ], + 'Dunatetétlen' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.7578624, 'lng' => 19.0932563], + ], + 'Dunavecse' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.9133047, 'lng' => 18.9731873], + ], + 'Dusnok' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.3893659, 'lng' => 18.960842], + ], + 'Érsekcsanád' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.2541554, 'lng' => 18.9835293], + ], + 'Érsekhalma' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.3472701, 'lng' => 19.1247379], + ], + 'Fajsz' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.4157936, 'lng' => 18.9191954], + ], + 'Felsőlajos' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 47.0647473, 'lng' => 19.4944348], + ], + 'Felsőszentiván' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1966179, 'lng' => 19.1873616], + ], + 'Foktő' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.5268759, 'lng' => 18.9196874], + ], + 'Fülöpháza' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 46.8914016, 'lng' => 19.4432493], + ], + 'Fülöpjakab' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.742058, 'lng' => 19.7227232], + ], + 'Fülöpszállás' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.8195701, 'lng' => 19.2372115], + ], + 'Gara' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.0349999, 'lng' => 19.0393411], + ], + 'Gátér' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.680435, 'lng' => 19.9596412], + ], + 'Géderlak' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6072512, 'lng' => 18.9135762], + ], + 'Hajós' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.4001409, 'lng' => 19.1193255], + ], + 'Harkakötöny' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.4634053, 'lng' => 19.6069951], + ], + 'Harta' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6960997, 'lng' => 19.0328195], + ], + 'Helvécia' => [ + 'constituencies' => ['Bács-Kiskun 2.'], + 'coordinates' => ['lat' => 46.8360977, 'lng' => 19.620438], + ], + 'Hercegszántó' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 45.9482057, 'lng' => 18.9389127], + ], + 'Homokmégy' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.4892762, 'lng' => 19.0730421], + ], + 'Imrehegy' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.4867668, 'lng' => 19.3056372], + ], + 'Izsák' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.8020009, 'lng' => 19.3546225], + ], + 'Jakabszállás' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.7602785, 'lng' => 19.6055301], + ], + 'Jánoshalma' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.2974544, 'lng' => 19.3250656], + ], + 'Jászszentlászló' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.5672659, 'lng' => 19.7590541], + ], + 'Kalocsa' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.5281229, 'lng' => 18.9840376], + ], + 'Kaskantyú' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6711891, 'lng' => 19.3895391], + ], + 'Katymár' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.0344636, 'lng' => 19.2087609], + ], + 'Kecel' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.5243135, 'lng' => 19.2451963], + ], + 'Kecskemét' => [ + 'constituencies' => ['Bács-Kiskun 2.', 'Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 46.8963711, 'lng' => 19.6896861], + ], + 'Kelebia' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.1958608, 'lng' => 19.6066291], + ], + 'Kéleshalom' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.3641795, 'lng' => 19.2831241], + ], + 'Kerekegyháza' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 46.9385747, 'lng' => 19.4770208], + ], + 'Kiskőrös' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6224967, 'lng' => 19.2874568], + ], + 'Kiskunfélegyháza' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.7112802, 'lng' => 19.8515196], + ], + 'Kiskunhalas' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.4354409, 'lng' => 19.4834284], + ], + 'Kiskunmajsa' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.4904848, 'lng' => 19.7366569], + ], + 'Kisszállás' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.2791272, 'lng' => 19.4908079], + ], + 'Kömpöc' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.4640167, 'lng' => 19.8665681], + ], + 'Kunadacs' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 46.956503, 'lng' => 19.2880496], + ], + 'Kunbaja' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.0848391, 'lng' => 19.4213713], + ], + 'Kunbaracs' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 46.9891493, 'lng' => 19.3999584], + ], + 'Kunfehértó' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.362671, 'lng' => 19.4141949], + ], + 'Kunpeszér' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 47.0611502, 'lng' => 19.2753764], + ], + 'Kunszállás' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.7627801, 'lng' => 19.7532925], + ], + 'Kunszentmiklós' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 47.0244473, 'lng' => 19.1235997], + ], + 'Ladánybene' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 47.0344239, 'lng' => 19.456807], + ], + 'Lajosmizse' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 47.0248225, 'lng' => 19.5559232], + ], + 'Lakitelek' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.8710339, 'lng' => 19.9930216], + ], + 'Madaras' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.0554833, 'lng' => 19.2633403], + ], + 'Mátételke' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1614675, 'lng' => 19.2802263], + ], + 'Mélykút' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.2132295, 'lng' => 19.3814176], + ], + 'Miske' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.4434918, 'lng' => 19.0315752], + ], + 'Móricgát' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.6233704, 'lng' => 19.6885382], + ], + 'Nagybaracska' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.0444015, 'lng' => 18.9048387], + ], + 'Nemesnádudvar' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.3348444, 'lng' => 19.0542114], + ], + 'Nyárlőrinc' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.8611255, 'lng' => 19.8773125], + ], + 'Ordas' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6364524, 'lng' => 18.9504602], + ], + 'Öregcsertő' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.515272, 'lng' => 19.1090595], + ], + 'Orgovány' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.7497582, 'lng' => 19.4746024], + ], + 'Páhi' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.7136232, 'lng' => 19.3856937], + ], + 'Pálmonostora' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.6265115, 'lng' => 19.9425525], + ], + 'Petőfiszállás' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.6243457, 'lng' => 19.8596537], + ], + 'Pirtó' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.5139604, 'lng' => 19.4301958], + ], + 'Rém' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.2470804, 'lng' => 19.1416684], + ], + 'Solt' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.8021967, 'lng' => 19.0108147], + ], + 'Soltszentimre' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.769786, 'lng' => 19.2840433], + ], + 'Soltvadkert' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.5789287, 'lng' => 19.3938029], + ], + 'Sükösd' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.2832039, 'lng' => 18.9942907], + ], + 'Szabadszállás' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 46.8763076, 'lng' => 19.2232539], + ], + 'Szakmár' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.5543652, 'lng' => 19.0742847], + ], + 'Szalkszentmárton' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 46.9754928, 'lng' => 19.0171018], + ], + 'Szank' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.5557842, 'lng' => 19.6668956], + ], + 'Szentkirály' => [ + 'constituencies' => ['Bács-Kiskun 2.'], + 'coordinates' => ['lat' => 46.9169398, 'lng' => 19.9175371], + ], + 'Szeremle' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1436504, 'lng' => 18.8810207], + ], + 'Tabdi' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.6818019, 'lng' => 19.3042672], + ], + 'Tass' => [ + 'constituencies' => ['Bács-Kiskun 1.'], + 'coordinates' => ['lat' => 47.0184485, 'lng' => 19.0281253], + ], + 'Tataháza' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.173167, 'lng' => 19.3024716], + ], + 'Tázlár' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.5509533, 'lng' => 19.5159844], + ], + 'Tiszaalpár' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.8140236, 'lng' => 19.9936556], + ], + 'Tiszakécske' => [ + 'constituencies' => ['Bács-Kiskun 2.'], + 'coordinates' => ['lat' => 46.9358726, 'lng' => 20.0969279], + ], + 'Tiszaug' => [ + 'constituencies' => ['Bács-Kiskun 4.'], + 'coordinates' => ['lat' => 46.8537215, 'lng' => 20.052921], + ], + 'Tompa' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.2060507, 'lng' => 19.5389553], + ], + 'Újsolt' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.8706098, 'lng' => 19.1186222], + ], + 'Újtelek' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.5911716, 'lng' => 19.0564597], + ], + 'Uszód' => [ + 'constituencies' => ['Bács-Kiskun 3.'], + 'coordinates' => ['lat' => 46.5704972, 'lng' => 18.9038275], + ], + 'Városföld' => [ + 'constituencies' => ['Bács-Kiskun 2.'], + 'coordinates' => ['lat' => 46.8174844, 'lng' => 19.7597893], + ], + 'Vaskút' => [ + 'constituencies' => ['Bács-Kiskun 6.'], + 'coordinates' => ['lat' => 46.1080968, 'lng' => 18.9861524], + ], + 'Zsana' => [ + 'constituencies' => ['Bács-Kiskun 5.'], + 'coordinates' => ['lat' => 46.3802847, 'lng' => 19.6600846], + ], + ], + 'Baranya' => [ + 'Abaliget' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1428711, 'lng' => 18.1152298], + ], + 'Adorjás' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8509119, 'lng' => 18.0617924], + ], + 'Ág' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2962836, 'lng' => 18.2023275], + ], + 'Almamellék' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1603198, 'lng' => 17.8765681], + ], + 'Almáskeresztúr' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1199547, 'lng' => 17.8958453], + ], + 'Alsómocsolád' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.313518, 'lng' => 18.2481993], + ], + 'Alsószentmárton' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.7912208, 'lng' => 18.3065816], + ], + 'Apátvarasd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1856469, 'lng' => 18.47932], + ], + 'Aranyosgadány' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.007757, 'lng' => 18.1195466], + ], + 'Áta' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9367366, 'lng' => 18.2985608], + ], + 'Babarc' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0042229, 'lng' => 18.5527511], + ], + 'Babarcszőlős' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.898699, 'lng' => 18.1360284], + ], + 'Bakóca' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2074891, 'lng' => 18.0002016], + ], + 'Bakonya' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0850942, 'lng' => 18.082286], + ], + 'Baksa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9554293, 'lng' => 18.0909794], + ], + 'Bánfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.994691, 'lng' => 17.8798792], + ], + 'Bár' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0482419, 'lng' => 18.7119502], + ], + 'Baranyahídvég' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8461886, 'lng' => 18.0229597], + ], + 'Baranyajenő' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2734519, 'lng' => 18.0469416], + ], + 'Baranyaszentgyörgy' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2461345, 'lng' => 18.0119839], + ], + 'Basal' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0734372, 'lng' => 17.7832659], + ], + 'Belvárdgyula' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9750659, 'lng' => 18.4288438], + ], + 'Beremend' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.7877528, 'lng' => 18.4322322], + ], + 'Berkesd' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0766759, 'lng' => 18.4078442], + ], + 'Besence' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8956421, 'lng' => 17.9654588], + ], + 'Bezedek' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8653948, 'lng' => 18.5854023], + ], + 'Bicsérd' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0216488, 'lng' => 18.0779429], + ], + 'Bikal' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.3329154, 'lng' => 18.2845332], + ], + 'Birján' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0007461, 'lng' => 18.3739733], + ], + 'Bisse' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9082449, 'lng' => 18.2603363], + ], + 'Boda' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0796449, 'lng' => 18.0477749], + ], + 'Bodolyabér' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.196906, 'lng' => 18.1189705], + ], + 'Bogád' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0858618, 'lng' => 18.3215439], + ], + 'Bogádmindszent' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9069292, 'lng' => 18.0382456], + ], + 'Bogdása' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8756825, 'lng' => 17.7892759], + ], + 'Boldogasszonyfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1826055, 'lng' => 17.8379176], + ], + 'Bóly' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9654045, 'lng' => 18.5166166], + ], + 'Borjád' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9356423, 'lng' => 18.4708549], + ], + 'Bosta' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9500492, 'lng' => 18.2104193], + ], + 'Botykapeterd' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0499466, 'lng' => 17.8662441], + ], + 'Bükkösd' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1100188, 'lng' => 17.9925218], + ], + 'Bürüs' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9653278, 'lng' => 17.7591739], + ], + 'Csányoszró' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8810774, 'lng' => 17.9101381], + ], + 'Csarnóta' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8949174, 'lng' => 18.2163121], + ], + 'Csebény' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1893582, 'lng' => 17.9275209], + ], + 'Cserdi' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0808529, 'lng' => 17.9911191], + ], + 'Cserkút' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0756664, 'lng' => 18.1340119], + ], + 'Csertő' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.093457, 'lng' => 17.8034587], + ], + 'Csonkamindszent' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0518017, 'lng' => 17.9658056], + ], + 'Cún' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8122974, 'lng' => 18.0678543], + ], + 'Dencsháza' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.993512, 'lng' => 17.8347772], + ], + 'Dinnyeberki' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0972962, 'lng' => 17.9563165], + ], + 'Diósviszló' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8774861, 'lng' => 18.1640495], + ], + 'Drávacsehi' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8130167, 'lng' => 18.1666181], + ], + 'Drávacsepely' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8308297, 'lng' => 18.1352308], + ], + 'Drávafok' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8860365, 'lng' => 17.7636317], + ], + 'Drávaiványi' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8470684, 'lng' => 17.8159164], + ], + 'Drávakeresztúr' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8386967, 'lng' => 17.7580104], + ], + 'Drávapalkonya' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8033438, 'lng' => 18.1790753], + ], + 'Drávapiski' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8396577, 'lng' => 18.0989657], + ], + 'Drávaszabolcs' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.803275, 'lng' => 18.2093234], + ], + 'Drávaszerdahely' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8363562, 'lng' => 18.1638527], + ], + 'Drávasztára' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8230964, 'lng' => 17.8220692], + ], + 'Dunaszekcső' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0854783, 'lng' => 18.7542203], + ], + 'Egerág' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9834452, 'lng' => 18.3039561], + ], + 'Egyházasharaszti' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8097356, 'lng' => 18.3314381], + ], + 'Egyházaskozár' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.3319023, 'lng' => 18.3178591], + ], + 'Ellend' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0580138, 'lng' => 18.3760682], + ], + 'Endrőc' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9296401, 'lng' => 17.7621758], + ], + 'Erdősmárok' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.055568, 'lng' => 18.5458091], + ], + 'Erdősmecske' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1768439, 'lng' => 18.5109755], + ], + 'Erzsébet' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1004339, 'lng' => 18.4587621], + ], + 'Fazekasboda' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1230108, 'lng' => 18.4850924], + ], + 'Feked' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1626797, 'lng' => 18.5588015], + ], + 'Felsőegerszeg' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2539122, 'lng' => 18.1335751], + ], + 'Felsőszentmárton' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8513101, 'lng' => 17.7034033], + ], + 'Garé' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9180881, 'lng' => 18.1956808], + ], + 'Gerde' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9904428, 'lng' => 18.0255496], + ], + 'Gerényes' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.3070289, 'lng' => 18.1848981], + ], + 'Geresdlak' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1107897, 'lng' => 18.5268599], + ], + 'Gilvánfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9184356, 'lng' => 17.9622098], + ], + 'Gödre' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2899579, 'lng' => 17.9723779], + ], + 'Görcsöny' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9709725, 'lng' => 18.133486], + ], + 'Görcsönydoboka' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0709275, 'lng' => 18.6275109], + ], + 'Gordisa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.7970748, 'lng' => 18.2354868], + ], + 'Gyód' => [ + 'constituencies' => ['Baranya 1.'], + 'coordinates' => ['lat' => 45.9979549, 'lng' => 18.1781638], + ], + 'Gyöngyfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9601196, 'lng' => 17.9506649], + ], + 'Gyöngyösmellék' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9868644, 'lng' => 17.7014751], + ], + 'Harkány' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8534053, 'lng' => 18.2348372], + ], + 'Hásságy' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0330172, 'lng' => 18.388848], + ], + 'Hegyhátmaróc' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.3109929, 'lng' => 18.3362487], + ], + 'Hegyszentmárton' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9036373, 'lng' => 18.086797], + ], + 'Helesfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0894523, 'lng' => 17.9770167], + ], + 'Hetvehely' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1332155, 'lng' => 18.0432466], + ], + 'Hidas' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2574631, 'lng' => 18.4937015], + ], + 'Himesháza' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0797595, 'lng' => 18.5805933], + ], + 'Hirics' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8247516, 'lng' => 17.9934259], + ], + 'Hobol' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0197823, 'lng' => 17.7724266], + ], + 'Homorúd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.981847, 'lng' => 18.7887766], + ], + 'Horváthertelend' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1751748, 'lng' => 17.9272893], + ], + 'Hosszúhetény' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1583167, 'lng' => 18.3520974], + ], + 'Husztót' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1711511, 'lng' => 18.0932139], + ], + 'Ibafa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1552456, 'lng' => 17.9179873], + ], + 'Illocska' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.800591, 'lng' => 18.5233576], + ], + 'Ipacsfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8345382, 'lng' => 18.2055561], + ], + 'Ivánbattyán' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9077809, 'lng' => 18.4176354], + ], + 'Ivándárda' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.831643, 'lng' => 18.5922589], + ], + 'Kacsóta' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0390809, 'lng' => 17.9544689], + ], + 'Kákics' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9028359, 'lng' => 17.8568313], + ], + 'Kárász' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2667559, 'lng' => 18.3188548], + ], + 'Kásád' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.7793743, 'lng' => 18.3991912], + ], + 'Katádfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9970924, 'lng' => 17.8692171], + ], + 'Kátoly' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0634292, 'lng' => 18.4496796], + ], + 'Kékesd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1007579, 'lng' => 18.4720006], + ], + 'Kémes' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8241919, 'lng' => 18.1031607], + ], + 'Kemse' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8237775, 'lng' => 17.9119613], + ], + 'Keszü' => [ + 'constituencies' => ['Baranya 1.'], + 'coordinates' => ['lat' => 46.0160053, 'lng' => 18.1918765], + ], + 'Kétújfalu' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9643465, 'lng' => 17.7128738], + ], + 'Királyegyháza' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9975029, 'lng' => 17.9670799], + ], + 'Kisasszonyfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9467478, 'lng' => 18.0062386], + ], + 'Kisbeszterce' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2054937, 'lng' => 18.033257], + ], + 'Kisbudmér' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9132933, 'lng' => 18.4468642], + ], + 'Kisdér' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9397014, 'lng' => 18.1280256], + ], + 'Kisdobsza' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0279686, 'lng' => 17.654966], + ], + 'Kishajmás' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2000972, 'lng' => 18.0807394], + ], + 'Kisharsány' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8597428, 'lng' => 18.3628602], + ], + 'Kisherend' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9657006, 'lng' => 18.3308199], + ], + 'Kisjakabfalva' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8961294, 'lng' => 18.4347874], + ], + 'Kiskassa' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9532763, 'lng' => 18.3984025], + ], + 'Kislippó' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8309942, 'lng' => 18.5387451], + ], + 'Kisnyárád' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0369956, 'lng' => 18.5642298], + ], + 'Kisszentmárton' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8245119, 'lng' => 18.0223384], + ], + 'Kistamási' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0118086, 'lng' => 17.7210893], + ], + 'Kistapolca' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8215113, 'lng' => 18.383003], + ], + 'Kistótfalu' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9080691, 'lng' => 18.3097841], + ], + 'Kisvaszar' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2748571, 'lng' => 18.2126962], + ], + 'Köblény' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2948258, 'lng' => 18.303697], + ], + 'Kökény' => [ + 'constituencies' => ['Baranya 1.'], + 'coordinates' => ['lat' => 45.9995372, 'lng' => 18.2057648], + ], + 'Kölked' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9489796, 'lng' => 18.7058024], + ], + 'Komló' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.1929788, 'lng' => 18.2512139], + ], + 'Kórós' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8666591, 'lng' => 18.0818986], + ], + 'Kovácshida' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8322528, 'lng' => 18.1852847], + ], + 'Kovácsszénája' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1714525, 'lng' => 18.1099753], + ], + 'Kővágószőlős' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0824433, 'lng' => 18.1242335], + ], + 'Kővágótöttös' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0859181, 'lng' => 18.1005597], + ], + 'Kozármisleny' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0412574, 'lng' => 18.2872228], + ], + 'Lánycsók' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0073964, 'lng' => 18.624077], + ], + 'Lapáncsa' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8187417, 'lng' => 18.4965793], + ], + 'Liget' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2346633, 'lng' => 18.1924669], + ], + 'Lippó' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.863493, 'lng' => 18.5702136], + ], + 'Liptód' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.044203, 'lng' => 18.5153709], + ], + 'Lothárd' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0015129, 'lng' => 18.3534664], + ], + 'Lovászhetény' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1573687, 'lng' => 18.4736022], + ], + 'Lúzsok' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8386895, 'lng' => 17.9448893], + ], + 'Mágocs' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.3507989, 'lng' => 18.2282954], + ], + 'Magyarbóly' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8424536, 'lng' => 18.4905327], + ], + 'Magyaregregy' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2497645, 'lng' => 18.3080926], + ], + 'Magyarhertelend' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1887919, 'lng' => 18.1496193], + ], + 'Magyarlukafa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1692382, 'lng' => 17.7566367], + ], + 'Magyarmecske' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9444333, 'lng' => 17.963957], + ], + 'Magyarsarlós' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0412482, 'lng' => 18.3527956], + ], + 'Magyarszék' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1966719, 'lng' => 18.1955889], + ], + 'Magyartelek' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9438384, 'lng' => 17.9834231], + ], + 'Majs' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9090894, 'lng' => 18.59764], + ], + 'Mánfa' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.1620219, 'lng' => 18.2424376], + ], + 'Maráza' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0767639, 'lng' => 18.5102704], + ], + 'Márfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8597093, 'lng' => 18.184506], + ], + 'Máriakéménd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0275242, 'lng' => 18.4616888], + ], + 'Markóc' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8633597, 'lng' => 17.7628134], + ], + 'Marócsa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9143499, 'lng' => 17.8155625], + ], + 'Márok' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8776725, 'lng' => 18.5052153], + ], + 'Martonfa' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1162762, 'lng' => 18.373108], + ], + 'Matty' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.7959854, 'lng' => 18.2646823], + ], + 'Máza' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2674701, 'lng' => 18.3987184], + ], + 'Mecseknádasd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.22466, 'lng' => 18.4653855], + ], + 'Mecsekpölöske' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2232838, 'lng' => 18.2117379], + ], + 'Mekényes' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.3905907, 'lng' => 18.3338629], + ], + 'Merenye' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.069313, 'lng' => 17.6981454], + ], + 'Meződ' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2898147, 'lng' => 18.1028572], + ], + 'Mindszentgodisa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2270491, 'lng' => 18.070952], + ], + 'Mohács' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0046295, 'lng' => 18.6794304], + ], + 'Molvány' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0294158, 'lng' => 17.7455964], + ], + 'Monyoród' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0115276, 'lng' => 18.4781726], + ], + 'Mozsgó' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1148249, 'lng' => 17.8457585], + ], + 'Nagybudmér' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9378397, 'lng' => 18.4443309], + ], + 'Nagycsány' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.871837, 'lng' => 17.9441308], + ], + 'Nagydobsza' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0290366, 'lng' => 17.6672107], + ], + 'Nagyhajmás' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.372206, 'lng' => 18.2898052], + ], + 'Nagyharsány' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8466947, 'lng' => 18.3947776], + ], + 'Nagykozár' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.067814, 'lng' => 18.316561], + ], + 'Nagynyárád' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9447148, 'lng' => 18.578055], + ], + 'Nagypall' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1474016, 'lng' => 18.4539234], + ], + 'Nagypeterd' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0459728, 'lng' => 17.8979423], + ], + 'Nagytótfalu' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8638406, 'lng' => 18.3426767], + ], + 'Nagyváty' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0617075, 'lng' => 17.93209], + ], + 'Nemeske' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.020198, 'lng' => 17.7129695], + ], + 'Nyugotszenterzsébet' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0747959, 'lng' => 17.9096635], + ], + 'Óbánya' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2220338, 'lng' => 18.4084838], + ], + 'Ócsárd' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9341296, 'lng' => 18.1533436], + ], + 'Ófalu' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2210918, 'lng' => 18.534029], + ], + 'Okorág' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9262423, 'lng' => 17.8761913], + ], + 'Okorvölgy' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.15235, 'lng' => 18.0600392], + ], + 'Olasz' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0128298, 'lng' => 18.4122965], + ], + 'Old' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.7893924, 'lng' => 18.3526547], + ], + 'Orfű' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.1504207, 'lng' => 18.1423992], + ], + 'Oroszló' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2201904, 'lng' => 18.122659], + ], + 'Ózdfalu' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9288431, 'lng' => 18.0210679], + ], + 'Palé' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2603608, 'lng' => 18.0690432], + ], + 'Palkonya' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8968607, 'lng' => 18.3899099], + ], + 'Palotabozsok' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1275672, 'lng' => 18.6416844], + ], + 'Páprád' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8927275, 'lng' => 18.0103745], + ], + 'Patapoklosi' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0753051, 'lng' => 17.7415323], + ], + 'Pécs' => [ + 'constituencies' => ['Baranya 2.', 'Baranya 1.'], + 'coordinates' => ['lat' => 46.0727345, 'lng' => 18.232266], + ], + 'Pécsbagota' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9906469, 'lng' => 18.0728758], + ], + 'Pécsdevecser' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9585177, 'lng' => 18.3839237], + ], + 'Pécsudvard' => [ + 'constituencies' => ['Baranya 1.'], + 'coordinates' => ['lat' => 46.0108323, 'lng' => 18.2750737], + ], + 'Pécsvárad' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1591341, 'lng' => 18.4185199], + ], + 'Pellérd' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.034172, 'lng' => 18.1551531], + ], + 'Pereked' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0940085, 'lng' => 18.3768639], + ], + 'Peterd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9726228, 'lng' => 18.3606704], + ], + 'Pettend' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0001576, 'lng' => 17.7011535], + ], + 'Piskó' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8112973, 'lng' => 17.9384454], + ], + 'Pócsa' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9100922, 'lng' => 18.4699792], + ], + 'Pogány' => [ + 'constituencies' => ['Baranya 1.'], + 'coordinates' => ['lat' => 45.9827333, 'lng' => 18.2568939], + ], + 'Rádfalva' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8598624, 'lng' => 18.1252323], + ], + 'Regenye' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.969783, 'lng' => 18.1685228], + ], + 'Romonya' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0871177, 'lng' => 18.3391112], + ], + 'Rózsafa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0227215, 'lng' => 17.8889708], + ], + 'Sámod' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8536384, 'lng' => 18.0384521], + ], + 'Sárok' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8414254, 'lng' => 18.6119412], + ], + 'Sásd' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2563232, 'lng' => 18.1024778], + ], + 'Sátorhely' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9417452, 'lng' => 18.6330768], + ], + 'Sellye' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.873291, 'lng' => 17.8494986], + ], + 'Siklós' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8555814, 'lng' => 18.2979721], + ], + 'Siklósbodony' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9105251, 'lng' => 18.1202589], + ], + 'Siklósnagyfalu' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.820428, 'lng' => 18.3636246], + ], + 'Somberek' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0812348, 'lng' => 18.6586781], + ], + 'Somogyapáti' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0920041, 'lng' => 17.7506787], + ], + 'Somogyhárságy' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1623103, 'lng' => 17.7731873], + ], + 'Somogyhatvan' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1120284, 'lng' => 17.7126553], + ], + 'Somogyviszló' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1146313, 'lng' => 17.7636375], + ], + 'Sósvertike' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8340815, 'lng' => 17.8614028], + ], + 'Sumony' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9675435, 'lng' => 17.9146319], + ], + 'Szabadszentkirály' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0059012, 'lng' => 18.0435247], + ], + 'Szágy' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2244706, 'lng' => 17.9469817], + ], + 'Szajk' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9921175, 'lng' => 18.5328986], + ], + 'Szalánta' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9471908, 'lng' => 18.2376181], + ], + 'Szalatnak' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2903675, 'lng' => 18.2809735], + ], + 'Szaporca' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8135724, 'lng' => 18.1045054], + ], + 'Szárász' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.3487743, 'lng' => 18.3727487], + ], + 'Szászvár' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2739639, 'lng' => 18.3774781], + ], + 'Szava' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9024581, 'lng' => 18.1738569], + ], + 'Szebény' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1296283, 'lng' => 18.5879918], + ], + 'Szederkény' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9986735, 'lng' => 18.4530663], + ], + 'Székelyszabar' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0471326, 'lng' => 18.6012321], + ], + 'Szellő' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.0744167, 'lng' => 18.4609549], + ], + 'Szemely' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.0083381, 'lng' => 18.3256717], + ], + 'Szentdénes' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0079644, 'lng' => 17.9271651], + ], + 'Szentegát' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9754975, 'lng' => 17.8244079], + ], + 'Szentkatalin' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.174384, 'lng' => 18.0505714], + ], + 'Szentlászló' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1540417, 'lng' => 17.8331512], + ], + 'Szentlőrinc' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0403123, 'lng' => 17.9897756], + ], + 'Szigetvár' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0487727, 'lng' => 17.7983466], + ], + 'Szilágy' => [ + 'constituencies' => ['Baranya 2.'], + 'coordinates' => ['lat' => 46.1009525, 'lng' => 18.4065405], + ], + 'Szilvás' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9616358, 'lng' => 18.1981701], + ], + 'Szőke' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9604273, 'lng' => 18.1867423], + ], + 'Szőkéd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9645154, 'lng' => 18.2884592], + ], + 'Szörény' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9683861, 'lng' => 17.6819713], + ], + 'Szulimán' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1264433, 'lng' => 17.805449], + ], + 'Szűr' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.099254, 'lng' => 18.5809615], + ], + 'Tarrós' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2806564, 'lng' => 18.1425225], + ], + 'Tékes' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2866262, 'lng' => 18.1744149], + ], + 'Teklafalu' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9493136, 'lng' => 17.7287585], + ], + 'Tengeri' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9263477, 'lng' => 18.087938], + ], + 'Tésenfa' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8127763, 'lng' => 18.1178921], + ], + 'Téseny' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9515499, 'lng' => 18.0479966], + ], + 'Tófű' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.3094872, 'lng' => 18.3576794], + ], + 'Tormás' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2309543, 'lng' => 17.9937201], + ], + 'Tótszentgyörgy' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0521798, 'lng' => 17.7178541], + ], + 'Töttös' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9150433, 'lng' => 18.5407584], + ], + 'Túrony' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9054082, 'lng' => 18.2309533], + ], + 'Udvar' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.900472, 'lng' => 18.6594842], + ], + 'Újpetre' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.934779, 'lng' => 18.3636323], + ], + 'Vajszló' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8592442, 'lng' => 17.9868205], + ], + 'Várad' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9743574, 'lng' => 17.7456586], + ], + 'Varga' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2475508, 'lng' => 18.1424694], + ], + 'Vásárosbéc' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.1825351, 'lng' => 17.7246441], + ], + 'Vásárosdombó' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.3064752, 'lng' => 18.1334675], + ], + 'Vázsnok' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.2653395, 'lng' => 18.1253751], + ], + 'Vejti' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8096089, 'lng' => 17.9682522], + ], + 'Vékény' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.2695945, 'lng' => 18.3423454], + ], + 'Velény' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9807601, 'lng' => 18.0514344], + ], + 'Véménd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1551161, 'lng' => 18.6190866], + ], + 'Versend' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9953039, 'lng' => 18.5115869], + ], + 'Villány' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8700399, 'lng' => 18.453201], + ], + 'Villánykövesd' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.8823189, 'lng' => 18.425812], + ], + 'Vokány' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 45.9133714, 'lng' => 18.3364685], + ], + 'Zádor' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.9623692, 'lng' => 17.6579278], + ], + 'Zaláta' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 45.8111976, 'lng' => 17.8901202], + ], + 'Zengővárkony' => [ + 'constituencies' => ['Baranya 3.'], + 'coordinates' => ['lat' => 46.1728638, 'lng' => 18.4320077], + ], + 'Zók' => [ + 'constituencies' => ['Baranya 4.'], + 'coordinates' => ['lat' => 46.0104261, 'lng' => 18.0965422], + ], + ], + 'Békés' => [ + 'Almáskamarás' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4617785, 'lng' => 21.092448], + ], + 'Battonya' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.2902462, 'lng' => 21.0199215], + ], + 'Békés' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.6704899, 'lng' => 21.0434996], + ], + 'Békéscsaba' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.6735939, 'lng' => 21.0877309], + ], + 'Békéssámson' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4208677, 'lng' => 20.6176498], + ], + 'Békésszentandrás' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.8715996, 'lng' => 20.48336], + ], + 'Bélmegyer' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.8726019, 'lng' => 21.1832832], + ], + 'Biharugra' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.9691009, 'lng' => 21.5987651], + ], + 'Bucsa' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 47.2047017, 'lng' => 20.9970391], + ], + 'Csabacsűd' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.8244161, 'lng' => 20.6485242], + ], + 'Csabaszabadi' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.574811, 'lng' => 20.951145], + ], + 'Csanádapáca' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.5409397, 'lng' => 20.8852553], + ], + 'Csárdaszállás' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.8647568, 'lng' => 20.9374853], + ], + 'Csorvás' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.6308376, 'lng' => 20.8340929], + ], + 'Dévaványa' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 47.0313217, 'lng' => 20.9595443], + ], + 'Doboz' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.7343152, 'lng' => 21.2420659], + ], + 'Dombegyház' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.3415879, 'lng' => 21.1342664], + ], + 'Dombiratos' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4195218, 'lng' => 21.1178789], + ], + 'Ecsegfalva' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 47.14789, 'lng' => 20.9239261], + ], + 'Elek' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.5291929, 'lng' => 21.2487556], + ], + 'Füzesgyarmat' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 47.1051107, 'lng' => 21.2108329], + ], + 'Gádoros' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.6667476, 'lng' => 20.5961159], + ], + 'Gerendás' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.5969212, 'lng' => 20.8593687], + ], + 'Geszt' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.8831763, 'lng' => 21.5794915], + ], + 'Gyomaendrőd' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.9317797, 'lng' => 20.8113125], + ], + 'Gyula' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.6473027, 'lng' => 21.2784255], + ], + 'Hunya' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.812869, 'lng' => 20.8458337], + ], + 'Kamut' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.7619186, 'lng' => 20.9798143], + ], + 'Kardos' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.7941712, 'lng' => 20.715629], + ], + 'Kardoskút' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.498573, 'lng' => 20.7040158], + ], + 'Kaszaper' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4598817, 'lng' => 20.8251944], + ], + 'Kertészsziget' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 47.1542945, 'lng' => 21.0610234], + ], + 'Kétegyháza' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.5417887, 'lng' => 21.1810736], + ], + 'Kétsoprony' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.7208319, 'lng' => 20.8870273], + ], + 'Kevermes' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4167579, 'lng' => 21.1818484], + ], + 'Kisdombegyház' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.3693244, 'lng' => 21.0996778], + ], + 'Kondoros' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.7574628, 'lng' => 20.7972363], + ], + 'Körösladány' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.9607513, 'lng' => 21.0767574], + ], + 'Körösnagyharsány' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 47.0080391, 'lng' => 21.6417355], + ], + 'Köröstarcsa' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.8780314, 'lng' => 21.02402], + ], + 'Körösújfalu' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.9659419, 'lng' => 21.3988486], + ], + 'Kötegyán' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.738284, 'lng' => 21.481692], + ], + 'Kunágota' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4234015, 'lng' => 21.0467553], + ], + 'Lőkösháza' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4297019, 'lng' => 21.2318793], + ], + 'Magyarbánhegyes' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4577279, 'lng' => 20.968734], + ], + 'Magyardombegyház' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.3794548, 'lng' => 21.0743712], + ], + 'Medgyesbodzás' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.5186797, 'lng' => 20.9596371], + ], + 'Medgyesegyháza' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4967576, 'lng' => 21.0271996], + ], + 'Méhkerék' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.7735176, 'lng' => 21.4435935], + ], + 'Mezőberény' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.825687, 'lng' => 21.0243614], + ], + 'Mezőgyán' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.8709809, 'lng' => 21.5257366], + ], + 'Mezőhegyes' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.3172449, 'lng' => 20.8173892], + ], + 'Mezőkovácsháza' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4093003, 'lng' => 20.9112692], + ], + 'Murony' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.760463, 'lng' => 21.0411739], + ], + 'Nagybánhegyes' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.460095, 'lng' => 20.902578], + ], + 'Nagykamarás' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4727168, 'lng' => 21.1213871], + ], + 'Nagyszénás' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.6722161, 'lng' => 20.6734381], + ], + 'Okány' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.8982798, 'lng' => 21.3467384], + ], + 'Örménykút' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.830573, 'lng' => 20.7344497], + ], + 'Orosháza' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.5684222, 'lng' => 20.6544927], + ], + 'Pusztaföldvár' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.5251751, 'lng' => 20.8024526], + ], + 'Pusztaottlaka' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.5386606, 'lng' => 21.0060316], + ], + 'Sarkad' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.7374245, 'lng' => 21.3810771], + ], + 'Sarkadkeresztúr' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.8107081, 'lng' => 21.3841932], + ], + 'Szabadkígyós' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.601522, 'lng' => 21.0753003], + ], + 'Szarvas' => [ + 'constituencies' => ['Békés 2.'], + 'coordinates' => ['lat' => 46.8635641, 'lng' => 20.5526535], + ], + 'Szeghalom' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 47.0239347, 'lng' => 21.1666571], + ], + 'Tarhos' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.8132012, 'lng' => 21.2109597], + ], + 'Telekgerendás' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.6566167, 'lng' => 20.9496242], + ], + 'Tótkomlós' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.4107596, 'lng' => 20.7363644], + ], + 'Újkígyós' => [ + 'constituencies' => ['Békés 1.'], + 'coordinates' => ['lat' => 46.5899757, 'lng' => 21.0242728], + ], + 'Újszalonta' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.8128247, 'lng' => 21.4908762], + ], + 'Végegyháza' => [ + 'constituencies' => ['Békés 4.'], + 'coordinates' => ['lat' => 46.3882623, 'lng' => 20.8699923], + ], + 'Vésztő' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.9244546, 'lng' => 21.2628502], + ], + 'Zsadány' => [ + 'constituencies' => ['Békés 3.'], + 'coordinates' => ['lat' => 46.9230248, 'lng' => 21.4873156], + ], + ], + 'Borsod-Abaúj-Zemplén' => [ + 'Abaújalpár' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3065157, 'lng' => 21.232147], + ], + 'Abaújkér' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3033478, 'lng' => 21.2013068], + ], + 'Abaújlak' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4051818, 'lng' => 20.9548056], + ], + 'Abaújszántó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2792184, 'lng' => 21.1874523], + ], + 'Abaújszolnok' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3730791, 'lng' => 20.9749255], + ], + 'Abaújvár' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5266538, 'lng' => 21.3150208], + ], + 'Abod' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3928646, 'lng' => 20.7923344], + ], + 'Aggtelek' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4686657, 'lng' => 20.5040699], + ], + 'Alacska' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2157484, 'lng' => 20.6502945], + ], + 'Alsóberecki' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3437614, 'lng' => 21.6905164], + ], + 'Alsódobsza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1799523, 'lng' => 21.0026817], + ], + 'Alsógagy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4052855, 'lng' => 21.0255485], + ], + 'Alsóregmec' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4634336, 'lng' => 21.6181953], + ], + 'Alsószuha' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3726027, 'lng' => 20.5044038], + ], + 'Alsótelekes' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4105212, 'lng' => 20.6547156], + ], + 'Alsóvadász' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2401438, 'lng' => 20.9043765], + ], + 'Alsózsolca' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 1.'], + 'coordinates' => ['lat' => 48.0748263, 'lng' => 20.8850624], + ], + 'Arka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3562385, 'lng' => 21.252529], + ], + 'Arló' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1746548, 'lng' => 20.2560308], + ], + 'Arnót' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 1.'], + 'coordinates' => ['lat' => 48.1319962, 'lng' => 20.859401], + ], + 'Ároktő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.7284812, 'lng' => 20.9423131], + ], + 'Aszaló' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.2177554, 'lng' => 20.9624804], + ], + 'Baktakék' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3675199, 'lng' => 21.0288911], + ], + 'Balajt' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3210349, 'lng' => 20.7866111], + ], + 'Bánhorváti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2260139, 'lng' => 20.504815], + ], + 'Bánréve' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2986902, 'lng' => 20.3560194], + ], + 'Baskó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3326787, 'lng' => 21.336418], + ], + 'Becskeháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5294979, 'lng' => 20.8354743], + ], + 'Bekecs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1534102, 'lng' => 21.1762263], + ], + 'Berente' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2385836, 'lng' => 20.6700776], + ], + 'Beret' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3458722, 'lng' => 21.0235103], + ], + 'Berzék' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0240535, 'lng' => 20.9528886], + ], + 'Bőcs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0442332, 'lng' => 20.9683874], + ], + 'Bodroghalom' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3009977, 'lng' => 21.707044], + ], + 'Bodrogkeresztúr' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1630176, 'lng' => 21.3595899], + ], + 'Bodrogkisfalud' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1789303, 'lng' => 21.3617788], + ], + 'Bodrogolaszi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2867085, 'lng' => 21.5160527], + ], + 'Bódvalenke' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5424028, 'lng' => 20.8041838], + ], + 'Bódvarákó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5111514, 'lng' => 20.7358047], + ], + 'Bódvaszilas' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5377629, 'lng' => 20.7312757], + ], + 'Bogács' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9030764, 'lng' => 20.5312356], + ], + 'Boldogkőújfalu' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3193629, 'lng' => 21.242022], + ], + 'Boldogkőváralja' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3380634, 'lng' => 21.2367554], + ], + 'Boldva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.218091, 'lng' => 20.7886144], + ], + 'Borsodbóta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2121829, 'lng' => 20.3960602], + ], + 'Borsodgeszt' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9559428, 'lng' => 20.6944004], + ], + 'Borsodivánka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.701045, 'lng' => 20.6547148], + ], + 'Borsodnádasd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1191717, 'lng' => 20.2529566], + ], + 'Borsodszentgyörgy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1892068, 'lng' => 20.2073894], + ], + 'Borsodszirák' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2610318, 'lng' => 20.7676252], + ], + 'Bózsva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4743356, 'lng' => 21.468268], + ], + 'Bükkábrány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8884157, 'lng' => 20.6810544], + ], + 'Bükkaranyos' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9866329, 'lng' => 20.7794609], + ], + 'Bükkmogyorósd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1291531, 'lng' => 20.3563552], + ], + 'Bükkszentkereszt' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0668164, 'lng' => 20.6324773], + ], + 'Bükkzsérc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9587559, 'lng' => 20.5025627], + ], + 'Büttös' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4783127, 'lng' => 21.0110122], + ], + 'Cigánd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2558937, 'lng' => 21.8889241], + ], + 'Csenyéte' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4345165, 'lng' => 21.0412334], + ], + 'Cserépfalu' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9413093, 'lng' => 20.5347083], + ], + 'Cserépváralja' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9325883, 'lng' => 20.5598918], + ], + 'Csernely' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1438586, 'lng' => 20.3390005], + ], + 'Csincse' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8883234, 'lng' => 20.768705], + ], + 'Csobád' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2796877, 'lng' => 21.0269782], + ], + 'Csobaj' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0485163, 'lng' => 21.3382189], + ], + 'Csokvaomány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1666711, 'lng' => 20.3744746], + ], + 'Damak' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3168034, 'lng' => 20.8216124], + ], + 'Dámóc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3748294, 'lng' => 22.0336128], + ], + 'Debréte' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.5000066, 'lng' => 20.8661035], + ], + 'Dédestapolcsány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.1804582, 'lng' => 20.4850166], + ], + 'Detek' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3336841, 'lng' => 21.0176305], + ], + 'Domaháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1836193, 'lng' => 20.1055583], + ], + 'Dövény' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3469512, 'lng' => 20.5431344], + ], + 'Dubicsány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2837745, 'lng' => 20.4940325], + ], + 'Edelény' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2934391, 'lng' => 20.7385817], + ], + 'Egerlövő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.7203221, 'lng' => 20.6175935], + ], + 'Égerszög' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.442896, 'lng' => 20.5875195], + ], + 'Emőd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9380038, 'lng' => 20.8154444], + ], + 'Encs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3259442, 'lng' => 21.1133006], + ], + 'Erdőbénye' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2662769, 'lng' => 21.3547995], + ], + 'Erdőhorváti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3158739, 'lng' => 21.4272709], + ], + 'Fáj' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4219028, 'lng' => 21.0747972], + ], + 'Fancsal' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3552347, 'lng' => 21.064671], + ], + 'Farkaslyuk' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1876627, 'lng' => 20.3086509], + ], + 'Felsőberecki' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3595718, 'lng' => 21.6950761], + ], + 'Felsődobsza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2555859, 'lng' => 21.0764245], + ], + 'Felsőgagy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4289932, 'lng' => 21.0128468], + ], + 'Felsőkelecsény' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3600051, 'lng' => 20.5939689], + ], + 'Felsőnyárád' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3299583, 'lng' => 20.5995966], + ], + 'Felsőregmec' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4915243, 'lng' => 21.6056225], + ], + 'Felsőtelekes' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4058831, 'lng' => 20.6352386], + ], + 'Felsővadász' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3709811, 'lng' => 20.9195765], + ], + 'Felsőzsolca' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 1.'], + 'coordinates' => ['lat' => 48.1041265, 'lng' => 20.8595396], + ], + 'Filkeháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4960919, 'lng' => 21.4888024], + ], + 'Fony' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3910341, 'lng' => 21.2865504], + ], + 'Forró' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3233535, 'lng' => 21.0880493], + ], + 'Fulókércs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4308674, 'lng' => 21.1049891], + ], + 'Füzér' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.539654, 'lng' => 21.4547936], + ], + 'Füzérkajata' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5182556, 'lng' => 21.5000318], + ], + 'Füzérkomlós' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5126205, 'lng' => 21.4532344], + ], + 'Füzérradvány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.483741, 'lng' => 21.530474], + ], + 'Gadna' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4006289, 'lng' => 20.9296444], + ], + 'Gagyapáti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.409096, 'lng' => 21.0017182], + ], + 'Gagybátor' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.433303, 'lng' => 20.94859], + ], + 'Gagyvendégi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4285166, 'lng' => 20.972405], + ], + 'Galvács' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4190767, 'lng' => 20.7767621], + ], + 'Garadna' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4174625, 'lng' => 21.17463], + ], + 'Gelej' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.828655, 'lng' => 20.7755503], + ], + 'Gesztely' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1026673, 'lng' => 20.9654647], + ], + 'Gibárt' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3153245, 'lng' => 21.1603909], + ], + 'Girincs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.9691368, 'lng' => 20.9846965], + ], + 'Golop' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2374312, 'lng' => 21.1893372], + ], + 'Gömörszőlős' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3730427, 'lng' => 20.4276758], + ], + 'Gönc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4727097, 'lng' => 21.2735417], + ], + 'Göncruszka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4488786, 'lng' => 21.239774], + ], + 'Györgytarló' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2053902, 'lng' => 21.6316333], + ], + 'Halmaj' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.2464584, 'lng' => 20.9983349], + ], + 'Hangács' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2896949, 'lng' => 20.8314625], + ], + 'Hangony' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2290868, 'lng' => 20.198029], + ], + 'Háromhuta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3780662, 'lng' => 21.4283347], + ], + 'Harsány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9679177, 'lng' => 20.7418041], + ], + 'Hegymeg' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3314259, 'lng' => 20.8614048], + ], + 'Hejce' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4234865, 'lng' => 21.2816978], + ], + 'Hejőbába' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9059201, 'lng' => 20.9452436], + ], + 'Hejőkeresztúr' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9610209, 'lng' => 20.8772681], + ], + 'Hejőkürt' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8564708, 'lng' => 20.9930661], + ], + 'Hejőpapi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8972354, 'lng' => 20.9054713], + ], + 'Hejőszalonta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9388389, 'lng' => 20.8822344], + ], + 'Hercegkút' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3340476, 'lng' => 21.5301233], + ], + 'Hernádbűd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2966038, 'lng' => 21.137896], + ], + 'Hernádcéce' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3587807, 'lng' => 21.1976117], + ], + 'Hernádkak' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0892117, 'lng' => 20.9635617], + ], + 'Hernádkércs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.2420151, 'lng' => 21.0501362], + ], + 'Hernádnémeti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0716822, 'lng' => 20.9742345], + ], + 'Hernádpetri' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4815086, 'lng' => 21.1622472], + ], + 'Hernádszentandrás' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2890724, 'lng' => 21.0949074], + ], + 'Hernádszurdok' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.48169, 'lng' => 21.2071561], + ], + 'Hernádvécse' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4406714, 'lng' => 21.1687099], + ], + 'Hét' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.282992, 'lng' => 20.3875674], + ], + 'Hidasnémeti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5029778, 'lng' => 21.2293013], + ], + 'Hidvégardó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5598883, 'lng' => 20.8395348], + ], + 'Hollóháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5393716, 'lng' => 21.4144474], + ], + 'Homrogd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2834505, 'lng' => 20.9125329], + ], + 'Igrici' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8673926, 'lng' => 20.8831705], + ], + 'Imola' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4201572, 'lng' => 20.5516409], + ], + 'Ináncs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2861362, 'lng' => 21.0681971], + ], + 'Irota' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3964482, 'lng' => 20.8752667], + ], + 'Izsófalva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3087892, 'lng' => 20.6536072], + ], + 'Jákfalva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3316408, 'lng' => 20.569496], + ], + 'Járdánháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1551033, 'lng' => 20.2477262], + ], + 'Jósvafő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4826254, 'lng' => 20.5504479], + ], + 'Kács' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9574786, 'lng' => 20.6145847], + ], + 'Kánó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4276397, 'lng' => 20.5991681], + ], + 'Kány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.5151651, 'lng' => 21.0143542], + ], + 'Karcsa' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3131571, 'lng' => 21.7953512], + ], + 'Karos' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3312141, 'lng' => 21.7406654], + ], + 'Kazincbarcika' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2489437, 'lng' => 20.6189771], + ], + 'Kázsmárk' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2728658, 'lng' => 20.9760294], + ], + 'Kéked' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5447244, 'lng' => 21.3500526], + ], + 'Kelemér' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3551802, 'lng' => 20.4296357], + ], + 'Kenézlő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2004193, 'lng' => 21.5311235], + ], + 'Keresztéte' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4989547, 'lng' => 20.950696], + ], + 'Kesznyéten' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.9694339, 'lng' => 21.0413905], + ], + 'Királd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2393694, 'lng' => 20.3764361], + ], + 'Kiscsécs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.9678112, 'lng' => 21.011133], + ], + 'Kisgyőr' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0096251, 'lng' => 20.6874073], + ], + 'Kishuta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4503449, 'lng' => 21.4814089], + ], + 'Kiskinizs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2508135, 'lng' => 21.0345918], + ], + 'Kisrozvágy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3491303, 'lng' => 21.9390758], + ], + 'Kissikátor' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1946631, 'lng' => 20.1302306], + ], + 'Kistokaj' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0397115, 'lng' => 20.8410079], + ], + 'Komjáti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5452009, 'lng' => 20.7618268], + ], + 'Komlóska' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3404486, 'lng' => 21.4622875], + ], + 'Kondó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.1880491, 'lng' => 20.6438586], + ], + 'Korlát' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3779667, 'lng' => 21.2457327], + ], + 'Köröm' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9842491, 'lng' => 20.9545886], + ], + 'Kovácsvágás' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.45352, 'lng' => 21.5283164], + ], + 'Krasznokvajda' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4705256, 'lng' => 20.9714153], + ], + 'Kupa' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3316226, 'lng' => 20.9145594], + ], + 'Kurityán' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.310505, 'lng' => 20.62573], + ], + 'Lácacséke' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3664002, 'lng' => 21.9934562], + ], + 'Ládbesenyő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3432268, 'lng' => 20.7859308], + ], + 'Lak' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3480907, 'lng' => 20.8662135], + ], + 'Legyesbénye' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1564545, 'lng' => 21.1530692], + ], + 'Léh' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2906948, 'lng' => 20.9807054], + ], + 'Lénárddaróc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1486722, 'lng' => 20.3728301], + ], + 'Litka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4544802, 'lng' => 21.0584273], + ], + 'Mád' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1922445, 'lng' => 21.2759773], + ], + 'Makkoshotyka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3571928, 'lng' => 21.5164187], + ], + 'Mályi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0175678, 'lng' => 20.8292414], + ], + 'Mályinka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.1545567, 'lng' => 20.4958901], + ], + 'Martonyi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4702379, 'lng' => 20.7660532], + ], + 'Megyaszó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1875185, 'lng' => 21.0547033], + ], + 'Méra' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3565901, 'lng' => 21.1469291], + ], + 'Meszes' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.438651, 'lng' => 20.7950688], + ], + 'Mezőcsát' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8207081, 'lng' => 20.9051607], + ], + 'Mezőkeresztes' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8262301, 'lng' => 20.6884043], + ], + 'Mezőkövesd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8074617, 'lng' => 20.5698525], + ], + 'Mezőnagymihály' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8062776, 'lng' => 20.7308177], + ], + 'Mezőnyárád' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8585625, 'lng' => 20.6764688], + ], + 'Mezőzombor' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1501209, 'lng' => 21.2575954], + ], + 'Mikóháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4617944, 'lng' => 21.592572], + ], + 'Miskolc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 1.', 'Borsod-Abaúj-Zemplén 2.'], + 'coordinates' => ['lat' => 48.1034775, 'lng' => 20.7784384], + ], + 'Mogyoróska' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3759799, 'lng' => 21.3296401], + ], + 'Monaj' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3061021, 'lng' => 20.9348205], + ], + 'Monok' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.2099439, 'lng' => 21.149252], + ], + 'Múcsony' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2758139, 'lng' => 20.6716209], + ], + 'Muhi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9778997, 'lng' => 20.9293321], + ], + 'Nagybarca' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2476865, 'lng' => 20.5280319], + ], + 'Nagycsécs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9601505, 'lng' => 20.9482798], + ], + 'Nagyhuta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4290026, 'lng' => 21.492424], + ], + 'Nagykinizs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.2344766, 'lng' => 21.0335706], + ], + 'Nagyrozvágy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3404683, 'lng' => 21.9228458], + ], + 'Négyes' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.7013, 'lng' => 20.7040224], + ], + 'Nekézseny' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1689694, 'lng' => 20.4291357], + ], + 'Nemesbikk' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8876867, 'lng' => 20.9661155], + ], + 'Novajidrány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.396674, 'lng' => 21.1688256], + ], + 'Nyékládháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9933002, 'lng' => 20.8429935], + ], + 'Nyésta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3702622, 'lng' => 20.9514276], + ], + 'Nyíri' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4986982, 'lng' => 21.440883], + ], + 'Nyomár' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.275559, 'lng' => 20.8198353], + ], + 'Olaszliszka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2419377, 'lng' => 21.4279754], + ], + 'Onga' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1194769, 'lng' => 20.9065655], + ], + 'Ónod' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0024425, 'lng' => 20.9146535], + ], + 'Ormosbánya' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3322064, 'lng' => 20.6493181], + ], + 'Oszlár' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.8740321, 'lng' => 21.0332202], + ], + 'Ózd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2241439, 'lng' => 20.2888698], + ], + 'Pácin' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3306334, 'lng' => 21.8337743], + ], + 'Pálháza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4717353, 'lng' => 21.507078], + ], + 'Pamlény' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.493024, 'lng' => 20.9282949], + ], + 'Pányok' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5298401, 'lng' => 21.3478472], + ], + 'Parasznya' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 2.'], + 'coordinates' => ['lat' => 48.1688229, 'lng' => 20.6402064], + ], + 'Pere' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2845544, 'lng' => 21.1211586], + ], + 'Perecse' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.5027869, 'lng' => 20.9845634], + ], + 'Perkupa' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4712725, 'lng' => 20.6862819], + ], + 'Prügy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0824191, 'lng' => 21.2428751], + ], + 'Pusztafalu' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5439277, 'lng' => 21.4860599], + ], + 'Pusztaradvány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4679248, 'lng' => 21.1338715], + ], + 'Putnok' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2939007, 'lng' => 20.4333508], + ], + 'Radostyán' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 2.'], + 'coordinates' => ['lat' => 48.1787774, 'lng' => 20.6532017], + ], + 'Ragály' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4041753, 'lng' => 20.5211463], + ], + 'Rakaca' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4617206, 'lng' => 20.8848555], + ], + 'Rakacaszend' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4611034, 'lng' => 20.8378744], + ], + 'Rásonysápberencs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.304802, 'lng' => 20.9934828], + ], + 'Rátka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2156932, 'lng' => 21.2267141], + ], + 'Regéc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.392191, 'lng' => 21.3436481], + ], + 'Répáshuta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0507939, 'lng' => 20.5254934], + ], + 'Révleányvár' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3230427, 'lng' => 22.0416695], + ], + 'Ricse' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3251432, 'lng' => 21.9687588], + ], + 'Rudabánya' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3747405, 'lng' => 20.6206118], + ], + 'Rudolftelep' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3092868, 'lng' => 20.6711602], + ], + 'Sajóbábony' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 2.'], + 'coordinates' => ['lat' => 48.1742691, 'lng' => 20.734572], + ], + 'Sajóecseg' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.190065, 'lng' => 20.772827], + ], + 'Sajógalgóc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2929878, 'lng' => 20.5323886], + ], + 'Sajóhídvég' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0026817, 'lng' => 20.9495863], + ], + 'Sajóivánka' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2654174, 'lng' => 20.5799268], + ], + 'Sajókápolna' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.1952827, 'lng' => 20.6848853], + ], + 'Sajókaza' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2864119, 'lng' => 20.5851277], + ], + 'Sajókeresztúr' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 1.'], + 'coordinates' => ['lat' => 48.1694996, 'lng' => 20.7768886], + ], + 'Sajólád' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0402765, 'lng' => 20.9024513], + ], + 'Sajólászlófalva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 2.'], + 'coordinates' => ['lat' => 48.1848765, 'lng' => 20.6736002], + ], + 'Sajómercse' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2461305, 'lng' => 20.414773], + ], + 'Sajónémeti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.270659, 'lng' => 20.3811845], + ], + 'Sajóörös' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.9515653, 'lng' => 21.0219599], + ], + 'Sajópálfala' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.163139, 'lng' => 20.8458093], + ], + 'Sajópetri' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 48.0351497, 'lng' => 20.8878767], + ], + 'Sajópüspöki' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.280186, 'lng' => 20.3400614], + ], + 'Sajósenye' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.1960682, 'lng' => 20.8185281], + ], + 'Sajószentpéter' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2188772, 'lng' => 20.7092248], + ], + 'Sajószöged' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.9458004, 'lng' => 20.9946112], + ], + 'Sajóvámos' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.1802021, 'lng' => 20.8298154], + ], + 'Sajóvelezd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2714818, 'lng' => 20.4593985], + ], + 'Sály' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9527979, 'lng' => 20.6597197], + ], + 'Sárazsadány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2684871, 'lng' => 21.497789], + ], + 'Sárospatak' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3196929, 'lng' => 21.5687308], + ], + 'Sáta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.1876567, 'lng' => 20.3914051], + ], + 'Sátoraljaújhely' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3960601, 'lng' => 21.6551122], + ], + 'Selyeb' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3381582, 'lng' => 20.9541317], + ], + 'Semjén' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3521396, 'lng' => 21.9671011], + ], + 'Serényfalva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3071589, 'lng' => 20.3852844], + ], + 'Sima' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2996969, 'lng' => 21.3030527], + ], + 'Sóstófalva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.156243, 'lng' => 20.9870638], + ], + 'Szakácsi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3820531, 'lng' => 20.8614571], + ], + 'Szakáld' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9431182, 'lng' => 20.908997], + ], + 'Szalaszend' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3859709, 'lng' => 21.1243501], + ], + 'Szalonna' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4500484, 'lng' => 20.7394926], + ], + 'Szászfa' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4704359, 'lng' => 20.9418168], + ], + 'Szegi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.1953737, 'lng' => 21.3795562], + ], + 'Szegilong' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2162488, 'lng' => 21.3965639], + ], + 'Szemere' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4661495, 'lng' => 21.099542], + ], + 'Szendrő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4046962, 'lng' => 20.7282046], + ], + 'Szendrőlád' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3433366, 'lng' => 20.7419436], + ], + 'Szentistván' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.7737632, 'lng' => 20.6579694], + ], + 'Szentistvánbaksa' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.2227558, 'lng' => 21.0276456], + ], + 'Szerencs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1590429, 'lng' => 21.2048872], + ], + 'Szikszó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1989312, 'lng' => 20.9298039], + ], + 'Szin' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4972791, 'lng' => 20.6601922], + ], + 'Szinpetri' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4847097, 'lng' => 20.625043], + ], + 'Szirmabesenyő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 1.'], + 'coordinates' => ['lat' => 48.1509585, 'lng' => 20.7957903], + ], + 'Szögliget' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5215045, 'lng' => 20.6770697], + ], + 'Szőlősardó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.443484, 'lng' => 20.6278686], + ], + 'Szomolya' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8919105, 'lng' => 20.4949334], + ], + 'Szuhafő' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4082703, 'lng' => 20.4515974], + ], + 'Szuhakálló' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2835218, 'lng' => 20.6523991], + ], + 'Szuhogy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3842029, 'lng' => 20.6731282], + ], + 'Taktabáj' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0621903, 'lng' => 21.3112131], + ], + 'Taktaharkány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0876121, 'lng' => 21.129918], + ], + 'Taktakenéz' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0508677, 'lng' => 21.2167146], + ], + 'Taktaszada' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1103437, 'lng' => 21.1735733], + ], + 'Tállya' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2352295, 'lng' => 21.2260996], + ], + 'Tarcal' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1311328, 'lng' => 21.3418021], + ], + 'Tard' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8784711, 'lng' => 20.598937], + ], + 'Tardona' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.1699442, 'lng' => 20.531454], + ], + 'Telkibánya' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4854061, 'lng' => 21.3574907], + ], + 'Teresztenye' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4463436, 'lng' => 20.6031689], + ], + 'Tibolddaróc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9206758, 'lng' => 20.6355357], + ], + 'Tiszabábolna' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.689752, 'lng' => 20.813906], + ], + 'Tiszacsermely' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2336812, 'lng' => 21.7945686], + ], + 'Tiszadorogma' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.6839826, 'lng' => 20.8661184], + ], + 'Tiszakarád' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2061184, 'lng' => 21.7213149], + ], + 'Tiszakeszi' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.7879554, 'lng' => 20.9904672], + ], + 'Tiszaladány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0621067, 'lng' => 21.4101619], + ], + 'Tiszalúc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0358262, 'lng' => 21.0648204], + ], + 'Tiszapalkonya' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.8849204, 'lng' => 21.0557818], + ], + 'Tiszatardos' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.0406385, 'lng' => 21.379655], + ], + 'Tiszatarján' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.8329217, 'lng' => 21.0014346], + ], + 'Tiszaújváros' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 47.9159846, 'lng' => 21.0427447], + ], + 'Tiszavalk' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.6888504, 'lng' => 20.751499], + ], + 'Tokaj' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1172148, 'lng' => 21.4089015], + ], + 'Tolcsva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2841513, 'lng' => 21.4488452], + ], + 'Tomor' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.3258904, 'lng' => 20.8823733], + ], + 'Tornabarakony' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4922432, 'lng' => 20.8192157], + ], + 'Tornakápolna' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4616855, 'lng' => 20.617706], + ], + 'Tornanádaska' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5611186, 'lng' => 20.7846392], + ], + 'Tornaszentandrás' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.5226438, 'lng' => 20.7790226], + ], + 'Tornaszentjakab' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.5244312, 'lng' => 20.8729813], + ], + 'Tornyosnémeti' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.5202757, 'lng' => 21.2506927], + ], + 'Trizs' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4251253, 'lng' => 20.4958645], + ], + 'Újcsanálos' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 6.'], + 'coordinates' => ['lat' => 48.1380468, 'lng' => 21.0036907], + ], + 'Uppony' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.2155013, 'lng' => 20.434654], + ], + 'Vadna' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2733247, 'lng' => 20.5552218], + ], + 'Vágáshuta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4264605, 'lng' => 21.545222], + ], + 'Vajdácska' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3196383, 'lng' => 21.6541401], + ], + 'Vámosújfalu' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2575496, 'lng' => 21.4524394], + ], + 'Varbó' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 2.'], + 'coordinates' => ['lat' => 48.1631678, 'lng' => 20.6217693], + ], + 'Varbóc' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.4644075, 'lng' => 20.6450152], + ], + 'Vatta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 7.'], + 'coordinates' => ['lat' => 47.9228447, 'lng' => 20.7389995], + ], + 'Vilmány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4166062, 'lng' => 21.2302229], + ], + 'Vilyvitány' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4952223, 'lng' => 21.5589737], + ], + 'Viss' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.2176861, 'lng' => 21.5069652], + ], + 'Viszló' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.4939386, 'lng' => 20.8862569], + ], + 'Vizsoly' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.3845496, 'lng' => 21.2158416], + ], + 'Zádorfalva' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3860789, 'lng' => 20.4852484], + ], + 'Zalkod' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.1857296, 'lng' => 21.4592752], + ], + 'Zemplénagárd' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.36024, 'lng' => 22.0709646], + ], + 'Ziliz' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 4.'], + 'coordinates' => ['lat' => 48.2511796, 'lng' => 20.7922106], + ], + 'Zsujta' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 5.'], + 'coordinates' => ['lat' => 48.4997896, 'lng' => 21.2789138], + ], + 'Zubogy' => [ + 'constituencies' => ['Borsod-Abaúj-Zemplén 3.'], + 'coordinates' => ['lat' => 48.3792388, 'lng' => 20.5758141], + ], + ], + 'Budapest' => [ + 'Budapest I. ker.' => [ + 'constituencies' => ['Budapest 01.'], + 'coordinates' => ['lat' => 47.4968219, 'lng' => 19.037458], + ], + 'Budapest II. ker.' => [ + 'constituencies' => ['Budapest 03.', 'Budapest 04.'], + 'coordinates' => ['lat' => 47.5393329, 'lng' => 18.986934], + ], + 'Budapest III. ker.' => [ + 'constituencies' => ['Budapest 04.', 'Budapest 10.'], + 'coordinates' => ['lat' => 47.5671768, 'lng' => 19.0368517], + ], + 'Budapest IV. ker.' => [ + 'constituencies' => ['Budapest 11.', 'Budapest 12.'], + 'coordinates' => ['lat' => 47.5648915, 'lng' => 19.0913149], + ], + 'Budapest V. ker.' => [ + 'constituencies' => ['Budapest 01.'], + 'coordinates' => ['lat' => 47.5002319, 'lng' => 19.0520181], + ], + 'Budapest VI. ker.' => [ + 'constituencies' => ['Budapest 05.'], + 'coordinates' => ['lat' => 47.509863, 'lng' => 19.0625813], + ], + 'Budapest VII. ker.' => [ + 'constituencies' => ['Budapest 05.'], + 'coordinates' => ['lat' => 47.5027289, 'lng' => 19.073376], + ], + 'Budapest VIII. ker.' => [ + 'constituencies' => ['Budapest 01.', 'Budapest 06.'], + 'coordinates' => ['lat' => 47.4894184, 'lng' => 19.070668], + ], + 'Budapest IX. ker.' => [ + 'constituencies' => ['Budapest 01.', 'Budapest 06.'], + 'coordinates' => ['lat' => 47.4649279, 'lng' => 19.0916229], + ], + 'Budapest X. ker.' => [ + 'constituencies' => ['Budapest 09.', 'Budapest 14.'], + 'coordinates' => ['lat' => 47.4820909, 'lng' => 19.1575028], + ], + 'Budapest XI. ker.' => [ + 'constituencies' => ['Budapest 02.', 'Budapest 18.'], + 'coordinates' => ['lat' => 47.4593099, 'lng' => 19.0187389], + ], + 'Budapest XII. ker.' => [ + 'constituencies' => ['Budapest 03.'], + 'coordinates' => ['lat' => 47.4991199, 'lng' => 18.990459], + ], + 'Budapest XIII. ker.' => [ + 'constituencies' => ['Budapest 11.', 'Budapest 07.'], + 'coordinates' => ['lat' => 47.5355105, 'lng' => 19.0709266], + ], + 'Budapest XIV. ker.' => [ + 'constituencies' => ['Budapest 08.', 'Budapest 13.'], + 'coordinates' => ['lat' => 47.5224569, 'lng' => 19.114709], + ], + 'Budapest XV. ker.' => [ + 'constituencies' => ['Budapest 12.'], + 'coordinates' => ['lat' => 47.5589, 'lng' => 19.1193], + ], + 'Budapest XVI. ker.' => [ + 'constituencies' => ['Budapest 13.'], + 'coordinates' => ['lat' => 47.5183029, 'lng' => 19.191941], + ], + 'Budapest XVII. ker.' => [ + 'constituencies' => ['Budapest 14.'], + 'coordinates' => ['lat' => 47.4803, 'lng' => 19.2667001], + ], + 'Budapest XVIII. ker.' => [ + 'constituencies' => ['Budapest 15.'], + 'coordinates' => ['lat' => 47.4281229, 'lng' => 19.2098429], + ], + 'Budapest XIX. ker.' => [ + 'constituencies' => ['Budapest 09.', 'Budapest 16.'], + 'coordinates' => ['lat' => 47.4457289, 'lng' => 19.1430149], + ], + 'Budapest XX. ker.' => [ + 'constituencies' => ['Budapest 16.'], + 'coordinates' => ['lat' => 47.4332879, 'lng' => 19.1193169], + ], + 'Budapest XXI. ker.' => [ + 'constituencies' => ['Budapest 17.'], + 'coordinates' => ['lat' => 47.4243579, 'lng' => 19.066142], + ], + 'Budapest XXII. ker.' => [ + 'constituencies' => ['Budapest 18.'], + 'coordinates' => ['lat' => 47.425, 'lng' => 19.031667], + ], + 'Budapest XXIII. ker.' => [ + 'constituencies' => ['Budapest 17.'], + 'coordinates' => ['lat' => 47.3939599, 'lng' => 19.122523], + ], + ], + 'Csongrád-Csanád' => [ + 'Algyő' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.3329625, 'lng' => 20.207889], + ], + 'Ambrózfalva' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.3501417, 'lng' => 20.7313995], + ], + 'Apátfalva' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.173317, 'lng' => 20.5800472], + ], + 'Árpádhalom' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.6158286, 'lng' => 20.547733], + ], + 'Ásotthalom' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.1995983, 'lng' => 19.7833756], + ], + 'Baks' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.5518708, 'lng' => 20.1064166], + ], + 'Balástya' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.4261828, 'lng' => 20.004933], + ], + 'Bordány' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.3194213, 'lng' => 19.9227063], + ], + 'Csanádalberti' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.3267872, 'lng' => 20.7068631], + ], + 'Csanádpalota' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.2407708, 'lng' => 20.7228873], + ], + 'Csanytelek' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.6014883, 'lng' => 20.1114379], + ], + 'Csengele' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.5411505, 'lng' => 19.8644533], + ], + 'Csongrád-Csanád' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.7084264, 'lng' => 20.1436061], + ], + 'Derekegyház' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.580238, 'lng' => 20.3549845], + ], + 'Deszk' => [ + 'constituencies' => ['Csongrád-Csanád 1.'], + 'coordinates' => ['lat' => 46.2179603, 'lng' => 20.2404106], + ], + 'Dóc' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.437292, 'lng' => 20.1363129], + ], + 'Domaszék' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.2466283, 'lng' => 19.9990365], + ], + 'Eperjes' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.7076258, 'lng' => 20.5621489], + ], + 'Fábiánsebestyén' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.6748615, 'lng' => 20.455037], + ], + 'Felgyő' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.6616513, 'lng' => 20.1097394], + ], + 'Ferencszállás' => [ + 'constituencies' => ['Csongrád-Csanád 1.'], + 'coordinates' => ['lat' => 46.2158295, 'lng' => 20.3553359], + ], + 'Földeák' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.3184223, 'lng' => 20.4929019], + ], + 'Forráskút' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.3655956, 'lng' => 19.9089055], + ], + 'Hódmezővásárhely' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.4181262, 'lng' => 20.3300315], + ], + 'Királyhegyes' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.2717114, 'lng' => 20.6126302], + ], + 'Kistelek' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.4694781, 'lng' => 19.9804365], + ], + 'Kiszombor' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.1856953, 'lng' => 20.4265486], + ], + 'Klárafalva' => [ + 'constituencies' => ['Csongrád-Csanád 1.'], + 'coordinates' => ['lat' => 46.220953, 'lng' => 20.3255224], + ], + 'Kövegy' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.2246141, 'lng' => 20.6840764], + ], + 'Kübekháza' => [ + 'constituencies' => ['Csongrád-Csanád 1.'], + 'coordinates' => ['lat' => 46.1500892, 'lng' => 20.276983], + ], + 'Magyarcsanád' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.1698824, 'lng' => 20.6132706], + ], + 'Makó' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.2219071, 'lng' => 20.4809265], + ], + 'Maroslele' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.2698362, 'lng' => 20.3418589], + ], + 'Mártély' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.4682451, 'lng' => 20.2416146], + ], + 'Mindszent' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.5227585, 'lng' => 20.1895798], + ], + 'Mórahalom' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.2179218, 'lng' => 19.88372], + ], + 'Nagyér' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.3703008, 'lng' => 20.729605], + ], + 'Nagylak' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.1737713, 'lng' => 20.7111982], + ], + 'Nagymágocs' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.5857132, 'lng' => 20.4833875], + ], + 'Nagytőke' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.7552639, 'lng' => 20.2860999], + ], + 'Óföldeák' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.2985957, 'lng' => 20.4369086], + ], + 'Ópusztaszer' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.4957061, 'lng' => 20.0665358], + ], + 'Öttömös' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.2808756, 'lng' => 19.6826038], + ], + 'Pitvaros' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.3194853, 'lng' => 20.7385996], + ], + 'Pusztamérges' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.3280134, 'lng' => 19.6849699], + ], + 'Pusztaszer' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.5515959, 'lng' => 19.9870098], + ], + 'Röszke' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.1873773, 'lng' => 20.037455], + ], + 'Ruzsa' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.2890678, 'lng' => 19.7481121], + ], + 'Sándorfalva' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.3635951, 'lng' => 20.1032227], + ], + 'Szatymaz' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.3426558, 'lng' => 20.0391941], + ], + 'Szeged' => [ + 'constituencies' => ['Csongrád-Csanád 2.', 'Csongrád-Csanád 1.'], + 'coordinates' => ['lat' => 46.2530102, 'lng' => 20.1414253], + ], + 'Szegvár' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.5816447, 'lng' => 20.2266415], + ], + 'Székkutas' => [ + 'constituencies' => ['Csongrád-Csanád 4.'], + 'coordinates' => ['lat' => 46.5063976, 'lng' => 20.537673], + ], + 'Szentes' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.654789, 'lng' => 20.2637492], + ], + 'Tiszasziget' => [ + 'constituencies' => ['Csongrád-Csanád 1.'], + 'coordinates' => ['lat' => 46.1720458, 'lng' => 20.1618289], + ], + 'Tömörkény' => [ + 'constituencies' => ['Csongrád-Csanád 3.'], + 'coordinates' => ['lat' => 46.6166243, 'lng' => 20.0436896], + ], + 'Újszentiván' => [ + 'constituencies' => ['Csongrád-Csanád 1.'], + 'coordinates' => ['lat' => 46.1859286, 'lng' => 20.1835123], + ], + 'Üllés' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.3355015, 'lng' => 19.8489644], + ], + 'Zákányszék' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.2752726, 'lng' => 19.8883111], + ], + 'Zsombó' => [ + 'constituencies' => ['Csongrád-Csanád 2.'], + 'coordinates' => ['lat' => 46.3284014, 'lng' => 19.9766186], + ], + ], + 'Fejér' => [ + 'Aba' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.0328193, 'lng' => 18.522359], + ], + 'Adony' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 47.119831, 'lng' => 18.8612469], + ], + 'Alap' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8075763, 'lng' => 18.684028], + ], + 'Alcsútdoboz' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4277067, 'lng' => 18.6030325], + ], + 'Alsószentiván' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.7910573, 'lng' => 18.732161], + ], + 'Bakonycsernye' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.321719, 'lng' => 18.0907379], + ], + 'Bakonykúti' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2458464, 'lng' => 18.195769], + ], + 'Balinka' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.3135736, 'lng' => 18.1907168], + ], + 'Baracs' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9049033, 'lng' => 18.8752931], + ], + 'Baracska' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2824737, 'lng' => 18.7598901], + ], + 'Beloiannisz' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.183143, 'lng' => 18.8245727], + ], + 'Besnyő' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.1892568, 'lng' => 18.7936832], + ], + 'Bicske' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4911792, 'lng' => 18.6370142], + ], + 'Bodajk' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.3209663, 'lng' => 18.2339242], + ], + 'Bodmér' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4489857, 'lng' => 18.5383832], + ], + 'Cece' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.7698199, 'lng' => 18.6336808], + ], + 'Csabdi' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.5229299, 'lng' => 18.6085371], + ], + 'Csákberény' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.3506861, 'lng' => 18.3265064], + ], + 'Csákvár' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3941468, 'lng' => 18.4602445], + ], + 'Csókakő' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.3533961, 'lng' => 18.2693867], + ], + 'Csór' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2049913, 'lng' => 18.2557813], + ], + 'Csősz' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.0382791, 'lng' => 18.414533], + ], + 'Daruszentmiklós' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.87194, 'lng' => 18.8568642], + ], + 'Dég' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8707664, 'lng' => 18.4445717], + ], + 'Dunaújváros' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 46.9619059, 'lng' => 18.9355227], + ], + 'Előszállás' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8276091, 'lng' => 18.8280627], + ], + 'Enying' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9326943, 'lng' => 18.2414807], + ], + 'Ercsi' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 47.2482238, 'lng' => 18.8912626], + ], + 'Etyek' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4467098, 'lng' => 18.751179], + ], + 'Fehérvárcsurgó' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2904264, 'lng' => 18.2645262], + ], + 'Felcsút' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4541851, 'lng' => 18.5865775], + ], + 'Füle' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.0535367, 'lng' => 18.2480871], + ], + 'Gánt' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3902121, 'lng' => 18.387061], + ], + 'Gárdony' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.196537, 'lng' => 18.6115195], + ], + 'Gyúró' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3700577, 'lng' => 18.7384824], + ], + 'Hantos' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9943127, 'lng' => 18.6989263], + ], + 'Igar' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.7757642, 'lng' => 18.5137348], + ], + 'Iszkaszentgyörgy' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2399338, 'lng' => 18.2987232], + ], + 'Isztimér' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2787058, 'lng' => 18.1955966], + ], + 'Iváncsa' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 47.153376, 'lng' => 18.8270434], + ], + 'Jenő' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.1047531, 'lng' => 18.2453199], + ], + 'Kajászó' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3234883, 'lng' => 18.7221054], + ], + 'Káloz' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9568415, 'lng' => 18.4853961], + ], + 'Kápolnásnyék' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2398554, 'lng' => 18.6764288], + ], + 'Kincsesbánya' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2632477, 'lng' => 18.2764679], + ], + 'Kisapostag' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8940766, 'lng' => 18.9323135], + ], + 'Kisláng' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9598173, 'lng' => 18.3860884], + ], + 'Kőszárhegy' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.0926048, 'lng' => 18.341234], + ], + 'Kulcs' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 47.0541246, 'lng' => 18.9197178], + ], + 'Lajoskomárom' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.841585, 'lng' => 18.3355393], + ], + 'Lepsény' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9918514, 'lng' => 18.2469618], + ], + 'Lovasberény' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3109278, 'lng' => 18.5527924], + ], + 'Magyaralmás' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2913027, 'lng' => 18.3245512], + ], + 'Mány' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.5321762, 'lng' => 18.6555811], + ], + 'Martonvásár' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3164516, 'lng' => 18.7877558], + ], + 'Mátyásdomb' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9228626, 'lng' => 18.3470929], + ], + 'Mezőfalva' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9323938, 'lng' => 18.7771045], + ], + 'Mezőkomárom' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8276482, 'lng' => 18.2934472], + ], + 'Mezőszentgyörgy' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9920267, 'lng' => 18.2795568], + ], + 'Mezőszilas' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8166957, 'lng' => 18.4754679], + ], + 'Moha' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2437717, 'lng' => 18.3313907], + ], + 'Mór' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.374928, 'lng' => 18.2036035], + ], + 'Nadap' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2585056, 'lng' => 18.6167437], + ], + 'Nádasdladány' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.1341786, 'lng' => 18.2394077], + ], + 'Nagykarácsony' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8706425, 'lng' => 18.7725518], + ], + 'Nagylók' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9764964, 'lng' => 18.64115], + ], + 'Nagyveleg' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.361797, 'lng' => 18.111061], + ], + 'Nagyvenyim' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 46.9571015, 'lng' => 18.8576229], + ], + 'Óbarok' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4922397, 'lng' => 18.5681206], + ], + 'Pákozd' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2172004, 'lng' => 18.5430768], + ], + 'Pátka' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2752462, 'lng' => 18.4950339], + ], + 'Pázmánd' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.283645, 'lng' => 18.654854], + ], + 'Perkáta' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 47.0482285, 'lng' => 18.784294], + ], + 'Polgárdi' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.0601257, 'lng' => 18.2993645], + ], + 'Pusztaszabolcs' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 47.1408918, 'lng' => 18.7601638], + ], + 'Pusztavám' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.4297438, 'lng' => 18.2317401], + ], + 'Rácalmás' => [ + 'constituencies' => ['Fejér 4.'], + 'coordinates' => ['lat' => 47.0243223, 'lng' => 18.9350709], + ], + 'Ráckeresztúr' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2729155, 'lng' => 18.8330106], + ], + 'Sárbogárd' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.879104, 'lng' => 18.6213353], + ], + 'Sáregres' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.783236, 'lng' => 18.5935136], + ], + 'Sárkeresztes' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.2517488, 'lng' => 18.3541822], + ], + 'Sárkeresztúr' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.0025252, 'lng' => 18.5479461], + ], + 'Sárkeszi' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.1582764, 'lng' => 18.284968], + ], + 'Sárosd' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.0414738, 'lng' => 18.6488144], + ], + 'Sárszentágota' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.9706742, 'lng' => 18.5634969], + ], + 'Sárszentmihály' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.1537282, 'lng' => 18.3235014], + ], + 'Seregélyes' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.1100586, 'lng' => 18.5788431], + ], + 'Soponya' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.0120427, 'lng' => 18.4543505], + ], + 'Söréd' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.322683, 'lng' => 18.280508], + ], + 'Sukoró' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2425436, 'lng' => 18.6022803], + ], + 'Szabadbattyán' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.1175572, 'lng' => 18.3681061], + ], + 'Szabadegyháza' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.0770131, 'lng' => 18.6912379], + ], + 'Szabadhídvég' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.8210159, 'lng' => 18.2798938], + ], + 'Szár' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4791911, 'lng' => 18.5158147], + ], + 'Székesfehérvár' => [ + 'constituencies' => ['Fejér 2.', 'Fejér 1.'], + 'coordinates' => ['lat' => 47.1860262, 'lng' => 18.4221358], + ], + 'Tabajd' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4045316, 'lng' => 18.6302011], + ], + 'Tác' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 47.0794264, 'lng' => 18.403381], + ], + 'Tordas' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3440943, 'lng' => 18.7483302], + ], + 'Újbarok' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4791337, 'lng' => 18.5585574], + ], + 'Úrhida' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.1298384, 'lng' => 18.3321437], + ], + 'Vajta' => [ + 'constituencies' => ['Fejér 5.'], + 'coordinates' => ['lat' => 46.7227758, 'lng' => 18.6618091], + ], + 'Vál' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3624339, 'lng' => 18.6766737], + ], + 'Velence' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.2300924, 'lng' => 18.6506424], + ], + 'Vereb' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.318485, 'lng' => 18.6197301], + ], + 'Vértesacsa' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.3700218, 'lng' => 18.5792793], + ], + 'Vértesboglár' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.4291347, 'lng' => 18.5235823], + ], + 'Zámoly' => [ + 'constituencies' => ['Fejér 2.'], + 'coordinates' => ['lat' => 47.3168103, 'lng' => 18.408371], + ], + 'Zichyújfalu' => [ + 'constituencies' => ['Fejér 3.'], + 'coordinates' => ['lat' => 47.1291991, 'lng' => 18.6692222], + ], + ], + 'Győr-Moson-Sopron' => [ + 'Abda' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.6962149, 'lng' => 17.5445786], + ], + 'Acsalag' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.676095, 'lng' => 17.1977771], + ], + 'Ágfalva' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.688862, 'lng' => 16.5110233], + ], + 'Agyagosszergény' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.608545, 'lng' => 16.9409912], + ], + 'Árpás' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5134127, 'lng' => 17.3931579], + ], + 'Ásványráró' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8287695, 'lng' => 17.499195], + ], + 'Babót' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5752269, 'lng' => 17.0758604], + ], + 'Bágyogszovát' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5866036, 'lng' => 17.3617273], + ], + 'Bakonygyirót' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4181388, 'lng' => 17.8055502], + ], + 'Bakonypéterd' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4667076, 'lng' => 17.7967619], + ], + 'Bakonyszentlászló' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.3892006, 'lng' => 17.8032754], + ], + 'Barbacs' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6455476, 'lng' => 17.297216], + ], + 'Beled' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4662675, 'lng' => 17.0959263], + ], + 'Bezenye' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.9609867, 'lng' => 17.216211], + ], + 'Bezi' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6737572, 'lng' => 17.3921093], + ], + 'Bodonhely' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5655752, 'lng' => 17.4072124], + ], + 'Bogyoszló' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5609657, 'lng' => 17.1850606], + ], + 'Bőny' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.6516279, 'lng' => 17.8703841], + ], + 'Börcs' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.6862052, 'lng' => 17.4988893], + ], + 'Bősárkány' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6881947, 'lng' => 17.2507143], + ], + 'Cakóháza' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.6967121, 'lng' => 17.2863758], + ], + 'Cirák' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4779219, 'lng' => 17.0282338], + ], + 'Csáfordjánosfa' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4151998, 'lng' => 16.9510595], + ], + 'Csapod' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5162077, 'lng' => 16.9234546], + ], + 'Csér' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4169765, 'lng' => 16.9330737], + ], + 'Csikvánd' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4666335, 'lng' => 17.4546305], + ], + 'Csorna' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6103234, 'lng' => 17.2462444], + ], + 'Darnózseli' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8493957, 'lng' => 17.4273958], + ], + 'Dénesfa' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4558445, 'lng' => 17.0335351], + ], + 'Dör' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5979168, 'lng' => 17.2991911], + ], + 'Dunakiliti' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.9659588, 'lng' => 17.2882641], + ], + 'Dunaremete' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8761957, 'lng' => 17.4375005], + ], + 'Dunaszeg' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7692554, 'lng' => 17.5407805], + ], + 'Dunaszentpál' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7771623, 'lng' => 17.5043978], + ], + 'Dunasziget' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.9359671, 'lng' => 17.3617867], + ], + 'Ebergőc' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5635832, 'lng' => 16.81167], + ], + 'Écs' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5604415, 'lng' => 17.7072193], + ], + 'Edve' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4551126, 'lng' => 17.135508], + ], + 'Egyed' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5192845, 'lng' => 17.3396861], + ], + 'Egyházasfalu' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.46243, 'lng' => 16.7679871], + ], + 'Enese' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6461219, 'lng' => 17.4235267], + ], + 'Farád' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6064483, 'lng' => 17.2003347], + ], + 'Fehértó' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6759514, 'lng' => 17.3453497], + ], + 'Feketeerdő' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.9355702, 'lng' => 17.2783691], + ], + 'Felpéc' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5225976, 'lng' => 17.5993517], + ], + 'Fenyőfő' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.3490387, 'lng' => 17.7656259], + ], + 'Fertőboz' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.633426, 'lng' => 16.6998899], + ], + 'Fertőd' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.61818, 'lng' => 16.8741418], + ], + 'Fertőendréd' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6054618, 'lng' => 16.9085891], + ], + 'Fertőhomok' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6196363, 'lng' => 16.7710445], + ], + 'Fertőrákos' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.7209654, 'lng' => 16.6488128], + ], + 'Fertőszentmiklós' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5895578, 'lng' => 16.8730712], + ], + 'Fertőszéplak' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6172442, 'lng' => 16.8405708], + ], + 'Gönyű' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.7334344, 'lng' => 17.8243403], + ], + 'Gyalóka' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.4427372, 'lng' => 16.696223], + ], + 'Gyarmat' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4604024, 'lng' => 17.4964917], + ], + 'Gyömöre' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4982876, 'lng' => 17.564804], + ], + 'Győr' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.', 'Győr-Moson-Sopron 1.'], + 'coordinates' => ['lat' => 47.6874569, 'lng' => 17.6503974], + ], + 'Győrasszonyfa' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4950098, 'lng' => 17.8072327], + ], + 'Győrladamér' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7545651, 'lng' => 17.5633004], + ], + 'Gyóró' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4916519, 'lng' => 17.0236667], + ], + 'Győrság' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5751529, 'lng' => 17.7515893], + ], + 'Győrsövényház' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6909394, 'lng' => 17.3734235], + ], + 'Győrszemere' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.551813, 'lng' => 17.5635661], + ], + 'Győrújbarát' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.6076284, 'lng' => 17.6389745], + ], + 'Győrújfalu' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.722197, 'lng' => 17.6054524], + ], + 'Győrzámoly' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7434268, 'lng' => 17.5770199], + ], + 'Halászi' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8903231, 'lng' => 17.3256673], + ], + 'Harka' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6339566, 'lng' => 16.5986264], + ], + 'Hédervár' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.831062, 'lng' => 17.4541026], + ], + 'Hegyeshalom' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.9117445, 'lng' => 17.156071], + ], + 'Hegykő' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6188466, 'lng' => 16.7940292], + ], + 'Hidegség' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6253847, 'lng' => 16.740935], + ], + 'Himod' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5200248, 'lng' => 17.0064434], + ], + 'Hövej' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5524954, 'lng' => 17.0166402], + ], + 'Ikrény' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6539897, 'lng' => 17.5281764], + ], + 'Iván' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.445549, 'lng' => 16.9096056], + ], + 'Jánossomorja' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7847917, 'lng' => 17.1298642], + ], + 'Jobaháza' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5799316, 'lng' => 17.1886952], + ], + 'Kajárpéc' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4888221, 'lng' => 17.6350057], + ], + 'Kapuvár' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5912437, 'lng' => 17.0301952], + ], + 'Károlyháza' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8032696, 'lng' => 17.3446363], + ], + 'Kimle' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8172115, 'lng' => 17.3676625], + ], + 'Kisbabot' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5551791, 'lng' => 17.4149558], + ], + 'Kisbajcs' => [ + 'constituencies' => ['Győr-Moson-Sopron 1.'], + 'coordinates' => ['lat' => 47.7450615, 'lng' => 17.6800942], + ], + 'Kisbodak' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8963234, 'lng' => 17.4196192], + ], + 'Kisfalud' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.2041959, 'lng' => 18.494568], + ], + 'Kóny' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6307264, 'lng' => 17.3596093], + ], + 'Kópháza' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6385359, 'lng' => 16.6451629], + ], + 'Koroncó' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5999604, 'lng' => 17.5284792], + ], + 'Kunsziget' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7385858, 'lng' => 17.5176565], + ], + 'Lázi' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4661979, 'lng' => 17.8346909], + ], + 'Lébény' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7360651, 'lng' => 17.3905652], + ], + 'Levél' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8949275, 'lng' => 17.2001946], + ], + 'Lipót' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8615868, 'lng' => 17.4603528], + ], + 'Lövő' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5107966, 'lng' => 16.7898395], + ], + 'Maglóca' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6625685, 'lng' => 17.2751221], + ], + 'Magyarkeresztúr' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5200063, 'lng' => 17.1660121], + ], + 'Máriakálnok' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8596905, 'lng' => 17.3237666], + ], + 'Markotabödöge' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6815136, 'lng' => 17.3116772], + ], + 'Mecsér' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.796671, 'lng' => 17.4744842], + ], + 'Mérges' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6012809, 'lng' => 17.4438455], + ], + 'Mezőörs' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.568844, 'lng' => 17.8821253], + ], + 'Mihályi' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5142703, 'lng' => 17.0958265], + ], + 'Mórichida' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5127896, 'lng' => 17.4218174], + ], + 'Mosonmagyaróvár' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8681469, 'lng' => 17.2689169], + ], + 'Mosonszentmiklós' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7294576, 'lng' => 17.4242231], + ], + 'Mosonszolnok' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8511108, 'lng' => 17.1735793], + ], + 'Mosonudvar' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8435379, 'lng' => 17.224348], + ], + 'Nagybajcs' => [ + 'constituencies' => ['Győr-Moson-Sopron 1.'], + 'coordinates' => ['lat' => 47.7639168, 'lng' => 17.686613], + ], + 'Nagycenk' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6081549, 'lng' => 16.6979223], + ], + 'Nagylózs' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5654858, 'lng' => 16.76965], + ], + 'Nagyszentjános' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.7100868, 'lng' => 17.8681808], + ], + 'Nemeskér' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.483855, 'lng' => 16.8050771], + ], + 'Nyalka' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5443407, 'lng' => 17.8091081], + ], + 'Nyúl' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5832389, 'lng' => 17.6862095], + ], + 'Osli' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6385609, 'lng' => 17.0755158], + ], + 'Öttevény' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7255506, 'lng' => 17.4899552], + ], + 'Páli' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4774264, 'lng' => 17.1695082], + ], + 'Pannonhalma' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.549497, 'lng' => 17.7552412], + ], + 'Pásztori' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5553919, 'lng' => 17.2696728], + ], + 'Pázmándfalu' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5710798, 'lng' => 17.7810865], + ], + 'Pér' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.6111604, 'lng' => 17.8049747], + ], + 'Pereszteg' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.594289, 'lng' => 16.7354028], + ], + 'Petőháza' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5965785, 'lng' => 16.8954138], + ], + 'Pinnye' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5855193, 'lng' => 16.7706082], + ], + 'Potyond' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.549377, 'lng' => 17.1821874], + ], + 'Püski' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8846385, 'lng' => 17.4070152], + ], + 'Pusztacsalád' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4853081, 'lng' => 16.9013644], + ], + 'Rábacsanak' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5256113, 'lng' => 17.2902872], + ], + 'Rábacsécsény' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5879598, 'lng' => 17.4227941], + ], + 'Rábakecöl' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4324946, 'lng' => 17.1126349], + ], + 'Rábapatona' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.6314656, 'lng' => 17.4797584], + ], + 'Rábapordány' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5574649, 'lng' => 17.3262502], + ], + 'Rábasebes' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4392738, 'lng' => 17.2423807], + ], + 'Rábaszentandrás' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4596327, 'lng' => 17.3272097], + ], + 'Rábaszentmihály' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5775103, 'lng' => 17.4312379], + ], + 'Rábaszentmiklós' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5381909, 'lng' => 17.417513], + ], + 'Rábatamási' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5893387, 'lng' => 17.1699767], + ], + 'Rábcakapi' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7079835, 'lng' => 17.2755839], + ], + 'Rajka' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.9977901, 'lng' => 17.1983996], + ], + 'Ravazd' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5162349, 'lng' => 17.7512699], + ], + 'Répceszemere' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4282026, 'lng' => 16.9738943], + ], + 'Répcevis' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.4427966, 'lng' => 16.6731972], + ], + 'Rétalap' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.6072246, 'lng' => 17.9071507], + ], + 'Röjtökmuzsaj' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5543502, 'lng' => 16.8363467], + ], + 'Románd' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4484049, 'lng' => 17.7909987], + ], + 'Sarród' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6315873, 'lng' => 16.8613408], + ], + 'Sikátor' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4370828, 'lng' => 17.8510581], + ], + 'Sobor' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4768368, 'lng' => 17.3752902], + ], + 'Sokorópátka' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4892381, 'lng' => 17.6953943], + ], + 'Sopron' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.6816619, 'lng' => 16.5844795], + ], + 'Sopronhorpács' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.4831854, 'lng' => 16.7359058], + ], + 'Sopronkövesd' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.5460504, 'lng' => 16.7432859], + ], + 'Sopronnémeti' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5364397, 'lng' => 17.2070182], + ], + 'Szakony' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.4262848, 'lng' => 16.7154462], + ], + 'Szany' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4620733, 'lng' => 17.3027671], + ], + 'Szárföld' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5933239, 'lng' => 17.1221243], + ], + 'Szerecseny' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4628425, 'lng' => 17.5536197], + ], + 'Szil' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.501622, 'lng' => 17.233297], + ], + 'Szilsárkány' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5396552, 'lng' => 17.2545808], + ], + 'Táp' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5168299, 'lng' => 17.8292989], + ], + 'Tápszentmiklós' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4930151, 'lng' => 17.8524913], + ], + 'Tarjánpuszta' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5062161, 'lng' => 17.7869857], + ], + 'Tárnokréti' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.7217546, 'lng' => 17.3078226], + ], + 'Tényő' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.5407376, 'lng' => 17.6490009], + ], + 'Tét' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5198967, 'lng' => 17.5108553], + ], + 'Töltéstava' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.6273335, 'lng' => 17.7343778], + ], + 'Újkér' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.4573295, 'lng' => 16.8187647], + ], + 'Újrónafő' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8101728, 'lng' => 17.2015241], + ], + 'Und' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.488856, 'lng' => 16.6961552], + ], + 'Vadosfa' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4986805, 'lng' => 17.1287654], + ], + 'Vág' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4469264, 'lng' => 17.2121765], + ], + 'Vámosszabadi' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.7571476, 'lng' => 17.6507532], + ], + 'Várbalog' => [ + 'constituencies' => ['Győr-Moson-Sopron 5.'], + 'coordinates' => ['lat' => 47.8347267, 'lng' => 17.0720923], + ], + 'Vásárosfalu' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.4537986, 'lng' => 17.1158473], + ], + 'Vének' => [ + 'constituencies' => ['Győr-Moson-Sopron 1.'], + 'coordinates' => ['lat' => 47.7392272, 'lng' => 17.7556608], + ], + 'Veszkény' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5969056, 'lng' => 17.0891913], + ], + 'Veszprémvarsány' => [ + 'constituencies' => ['Győr-Moson-Sopron 2.'], + 'coordinates' => ['lat' => 47.4290248, 'lng' => 17.8287245], + ], + 'Vitnyéd' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.5863882, 'lng' => 16.9832151], + ], + 'Völcsej' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.496503, 'lng' => 16.7604595], + ], + 'Zsebeháza' => [ + 'constituencies' => ['Győr-Moson-Sopron 3.'], + 'coordinates' => ['lat' => 47.511293, 'lng' => 17.191017], + ], + 'Zsira' => [ + 'constituencies' => ['Győr-Moson-Sopron 4.'], + 'coordinates' => ['lat' => 47.4580482, 'lng' => 16.6766466], + ], + ], + 'Hajdú-Bihar' => [ + 'Álmosd' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.4167788, 'lng' => 21.9806107], + ], + 'Ártánd' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1241958, 'lng' => 21.7568167], + ], + 'Bagamér' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.4498231, 'lng' => 21.9942012], + ], + 'Bakonszeg' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1900613, 'lng' => 21.4442102], + ], + 'Balmazújváros' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.6145296, 'lng' => 21.3417333], + ], + 'Báránd' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.2936964, 'lng' => 21.2288584], + ], + 'Bedő' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1634194, 'lng' => 21.7502785], + ], + 'Berekböszörmény' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.0615952, 'lng' => 21.6782301], + ], + 'Berettyóújfalu' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2196438, 'lng' => 21.5362812], + ], + 'Bihardancsháza' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2291246, 'lng' => 21.3159659], + ], + 'Biharkeresztes' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1301236, 'lng' => 21.7219423], + ], + 'Biharnagybajom' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2108104, 'lng' => 21.2302309], + ], + 'Bihartorda' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.215994, 'lng' => 21.3526252], + ], + 'Bocskaikert' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.6435949, 'lng' => 21.659878], + ], + 'Bojt' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1927968, 'lng' => 21.7327485], + ], + 'Csökmő' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.0315111, 'lng' => 21.2892817], + ], + 'Darvas' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1017037, 'lng' => 21.3374554], + ], + 'Debrecen' => [ + 'constituencies' => ['Hajdú-Bihar 3.', 'Hajdú-Bihar 1.', 'Hajdú-Bihar 2.'], + 'coordinates' => ['lat' => 47.5316049, 'lng' => 21.6273124], + ], + 'Derecske' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.3533886, 'lng' => 21.5658524], + ], + 'Ebes' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.4709086, 'lng' => 21.490457], + ], + 'Egyek' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.6258313, 'lng' => 20.8907463], + ], + 'Esztár' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2837051, 'lng' => 21.7744117], + ], + 'Földes' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.2896801, 'lng' => 21.3633025], + ], + 'Folyás' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.8086696, 'lng' => 21.1371809], + ], + 'Fülöp' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.5981409, 'lng' => 22.0546557], + ], + 'Furta' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1300357, 'lng' => 21.460144], + ], + 'Gáborján' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2360716, 'lng' => 21.6622765], + ], + 'Görbeháza' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.8200025, 'lng' => 21.2359976], + ], + 'Hajdúbagos' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.3947066, 'lng' => 21.6643329], + ], + 'Hajdúböszörmény' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.6718908, 'lng' => 21.5126637], + ], + 'Hajdúdorog' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.8166047, 'lng' => 21.4980694], + ], + 'Hajdúhadház' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.6802292, 'lng' => 21.6675179], + ], + 'Hajdúnánás' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.843004, 'lng' => 21.4242691], + ], + 'Hajdúsámson' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.6049148, 'lng' => 21.7597325], + ], + 'Hajdúszoboszló' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.4435369, 'lng' => 21.3965516], + ], + 'Hajdúszovát' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.3903463, 'lng' => 21.4764161], + ], + 'Hencida' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2507004, 'lng' => 21.6989732], + ], + 'Hortobágy' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.5868751, 'lng' => 21.1560332], + ], + 'Hosszúpályi' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.3947673, 'lng' => 21.7346539], + ], + 'Kaba' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.3565391, 'lng' => 21.2726765], + ], + 'Kismarja' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2463277, 'lng' => 21.8214627], + ], + 'Kokad' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.4054409, 'lng' => 21.9336174], + ], + 'Komádi' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.0055271, 'lng' => 21.4944772], + ], + 'Konyár' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.3213954, 'lng' => 21.6691634], + ], + 'Körösszakál' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.0178012, 'lng' => 21.5932398], + ], + 'Körösszegapáti' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.0396539, 'lng' => 21.6317831], + ], + 'Létavértes' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.3835171, 'lng' => 21.8798767], + ], + 'Magyarhomorog' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.0222187, 'lng' => 21.5480518], + ], + 'Mezőpeterd' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.165025, 'lng' => 21.6200633], + ], + 'Mezősas' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1104156, 'lng' => 21.5671344], + ], + 'Mikepércs' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.4406335, 'lng' => 21.6366773], + ], + 'Monostorpályi' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.3984198, 'lng' => 21.7764527], + ], + 'Nádudvar' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.4259381, 'lng' => 21.1616779], + ], + 'Nagyhegyes' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.539228, 'lng' => 21.345552], + ], + 'Nagykereki' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1863168, 'lng' => 21.7922805], + ], + 'Nagyrábé' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2043078, 'lng' => 21.3306582], + ], + 'Nyírábrány' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.541423, 'lng' => 22.0128317], + ], + 'Nyíracsád' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.6039774, 'lng' => 21.9715154], + ], + 'Nyíradony' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.6899404, 'lng' => 21.9085991], + ], + 'Nyírmártonfalva' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.5862503, 'lng' => 21.8964914], + ], + 'Pocsaj' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2851817, 'lng' => 21.8122198], + ], + 'Polgár' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.8679381, 'lng' => 21.1141038], + ], + 'Püspökladány' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.3216529, 'lng' => 21.1185953], + ], + 'Sáp' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2549739, 'lng' => 21.3555868], + ], + 'Sáránd' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.4062312, 'lng' => 21.6290631], + ], + 'Sárrétudvari' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.2406806, 'lng' => 21.1866058], + ], + 'Szentpéterszeg' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2386719, 'lng' => 21.6178971], + ], + 'Szerep' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.2278774, 'lng' => 21.1407795], + ], + 'Téglás' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.7109686, 'lng' => 21.6727776], + ], + 'Tépe' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.32046, 'lng' => 21.5714076], + ], + 'Tetétlen' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.3148595, 'lng' => 21.3069162], + ], + 'Tiszacsege' => [ + 'constituencies' => ['Hajdú-Bihar 5.'], + 'coordinates' => ['lat' => 47.6997085, 'lng' => 20.9917041], + ], + 'Tiszagyulaháza' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.942524, 'lng' => 21.1428152], + ], + 'Told' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1180165, 'lng' => 21.6413048], + ], + 'Újiráz' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 46.9870862, 'lng' => 21.3556353], + ], + 'Újléta' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.4650261, 'lng' => 21.8733489], + ], + 'Újszentmargita' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.7266767, 'lng' => 21.1047788], + ], + 'Újtikos' => [ + 'constituencies' => ['Hajdú-Bihar 6.'], + 'coordinates' => ['lat' => 47.9176202, 'lng' => 21.171571], + ], + 'Vámospércs' => [ + 'constituencies' => ['Hajdú-Bihar 3.'], + 'coordinates' => ['lat' => 47.525345, 'lng' => 21.8992474], + ], + 'Váncsod' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.2011182, 'lng' => 21.6400459], + ], + 'Vekerd' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.0959975, 'lng' => 21.4017741], + ], + 'Zsáka' => [ + 'constituencies' => ['Hajdú-Bihar 4.'], + 'coordinates' => ['lat' => 47.1340418, 'lng' => 21.4307824], + ], + ], + 'Heves' => [ + 'Abasár' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7989023, 'lng' => 20.0036779], + ], + 'Adács' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6922284, 'lng' => 19.9779484], + ], + 'Aldebrő' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7891428, 'lng' => 20.2302555], + ], + 'Andornaktálya' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.8499325, 'lng' => 20.4105243], + ], + 'Apc' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7933298, 'lng' => 19.6955737], + ], + 'Átány' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.6156875, 'lng' => 20.3620368], + ], + 'Atkár' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7209651, 'lng' => 19.8912361], + ], + 'Balaton' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 46.8302679, 'lng' => 17.7340438], + ], + 'Bátor' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.99076, 'lng' => 20.2627351], + ], + 'Bekölce' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0804457, 'lng' => 20.268156], + ], + 'Bélapátfalva' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0578657, 'lng' => 20.3500536], + ], + 'Besenyőtelek' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.6994693, 'lng' => 20.4300342], + ], + 'Boconád' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6414895, 'lng' => 20.1877312], + ], + 'Bodony' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.9420912, 'lng' => 20.0199927], + ], + 'Boldog' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6031287, 'lng' => 19.687521], + ], + 'Bükkszék' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.9915393, 'lng' => 20.1765126], + ], + 'Bükkszenterzsébet' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0532811, 'lng' => 20.1622924], + ], + 'Bükkszentmárton' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0715382, 'lng' => 20.3310312], + ], + 'Csány' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6474142, 'lng' => 19.8259607], + ], + 'Demjén' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.8317294, 'lng' => 20.3313872], + ], + 'Detk' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7489442, 'lng' => 20.0983332], + ], + 'Domoszló' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8288666, 'lng' => 20.1172988], + ], + 'Dormánd' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.7203119, 'lng' => 20.4174779], + ], + 'Ecséd' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7307237, 'lng' => 19.7684767], + ], + 'Eger' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.9025348, 'lng' => 20.3772284], + ], + 'Egerbakta' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.9341404, 'lng' => 20.2918134], + ], + 'Egerbocs' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0263467, 'lng' => 20.2598999], + ], + 'Egercsehi' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0545478, 'lng' => 20.261522], + ], + 'Egerfarmos' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.7177802, 'lng' => 20.5358914], + ], + 'Egerszalók' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.8702275, 'lng' => 20.3241673], + ], + 'Egerszólát' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.8902473, 'lng' => 20.2669774], + ], + 'Erdőkövesd' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0391241, 'lng' => 20.1013656], + ], + 'Erdőtelek' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6852656, 'lng' => 20.3115369], + ], + 'Erk' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6101796, 'lng' => 20.076668], + ], + 'Fedémes' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0320282, 'lng' => 20.1878653], + ], + 'Feldebrő' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8128253, 'lng' => 20.2363322], + ], + 'Felsőtárkány' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.9734513, 'lng' => 20.41906], + ], + 'Füzesabony' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.7495339, 'lng' => 20.4150668], + ], + 'Gyöngyös' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7772651, 'lng' => 19.9294927], + ], + 'Gyöngyöshalász' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7413068, 'lng' => 19.9227242], + ], + 'Gyöngyösoroszi' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8263987, 'lng' => 19.8928817], + ], + 'Gyöngyöspata' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8140904, 'lng' => 19.7923335], + ], + 'Gyöngyössolymos' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8160489, 'lng' => 19.9338831], + ], + 'Gyöngyöstarján' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8132903, 'lng' => 19.8664265], + ], + 'Halmajugra' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7634173, 'lng' => 20.0523104], + ], + 'Hatvan' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6656965, 'lng' => 19.676666], + ], + 'Heréd' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7081485, 'lng' => 19.6327042], + ], + 'Heves' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.5971694, 'lng' => 20.280156], + ], + 'Hevesaranyos' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0109153, 'lng' => 20.2342809], + ], + 'Hevesvezekény' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.5570546, 'lng' => 20.3580453], + ], + 'Hort' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6890439, 'lng' => 19.7842632], + ], + 'Istenmezeje' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0845673, 'lng' => 20.0515347], + ], + 'Ivád' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 48.0203013, 'lng' => 20.0612654], + ], + 'Kál' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7318239, 'lng' => 20.2608866], + ], + 'Kápolna' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7584202, 'lng' => 20.2459749], + ], + 'Karácsond' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7282318, 'lng' => 20.0282488], + ], + 'Kerecsend' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.7947277, 'lng' => 20.3444695], + ], + 'Kerekharaszt' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.6623104, 'lng' => 19.6253721], + ], + 'Kisfüzes' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.9881653, 'lng' => 20.1267373], + ], + 'Kisköre' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.4984608, 'lng' => 20.4973609], + ], + 'Kisnána' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8506469, 'lng' => 20.1457821], + ], + 'Kömlő' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 46.1929788, 'lng' => 18.2512139], + ], + 'Kompolt' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.7415463, 'lng' => 20.2406377], + ], + 'Lőrinci' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7390261, 'lng' => 19.6756557], + ], + 'Ludas' => [ + 'constituencies' => ['Heves 3.'], + 'coordinates' => ['lat' => 47.7300788, 'lng' => 20.0910629], + ], + 'Maklár' => [ + 'constituencies' => ['Heves 1.'], + 'coordinates' => ['lat' => 47.8054074, 'lng' => 20.410901], + ], + 'Markaz' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.8222206, 'lng' => 20.0582311], + ], + 'Mátraballa' => [ + 'constituencies' => ['Heves 2.'], + 'coordinates' => ['lat' => 47.9843833, 'lng' => 20.0225017], + ], + + ], + ]; + } +} diff --git a/tests/PHPStan/Analyser/data/bug-8147.php b/tests/PHPStan/Analyser/data/bug-8147.php new file mode 100644 index 00000000000..a30cacf9a13 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-8147.php @@ -0,0 +1,4021 @@ + */ + private const HUGE_MAP = [ + 'value0001' => 1, + 'value0002' => 2, + 'value0003' => 3, + 'value0004' => 4, + 'value0005' => 5, + 'value0006' => 6, + 'value0007' => 7, + 'value0008' => 8, + 'value0009' => 9, + 'value0010' => 10, + 'value0011' => 11, + 'value0012' => 12, + 'value0013' => 13, + 'value0014' => 14, + 'value0015' => 15, + 'value0016' => 16, + 'value0017' => 17, + 'value0018' => 18, + 'value0019' => 19, + 'value0020' => 20, + 'value0021' => 21, + 'value0022' => 22, + 'value0023' => 23, + 'value0024' => 24, + 'value0025' => 25, + 'value0026' => 26, + 'value0027' => 27, + 'value0028' => 28, + 'value0029' => 29, + 'value0030' => 30, + 'value0031' => 31, + 'value0032' => 32, + 'value0033' => 33, + 'value0034' => 34, + 'value0035' => 35, + 'value0036' => 36, + 'value0037' => 37, + 'value0038' => 38, + 'value0039' => 39, + 'value0040' => 40, + 'value0041' => 41, + 'value0042' => 42, + 'value0043' => 43, + 'value0044' => 44, + 'value0045' => 45, + 'value0046' => 46, + 'value0047' => 47, + 'value0048' => 48, + 'value0049' => 49, + 'value0050' => 50, + 'value0051' => 51, + 'value0052' => 52, + 'value0053' => 53, + 'value0054' => 54, + 'value0055' => 55, + 'value0056' => 56, + 'value0057' => 57, + 'value0058' => 58, + 'value0059' => 59, + 'value0060' => 60, + 'value0061' => 61, + 'value0062' => 62, + 'value0063' => 63, + 'value0064' => 64, + 'value0065' => 65, + 'value0066' => 66, + 'value0067' => 67, + 'value0068' => 68, + 'value0069' => 69, + 'value0070' => 70, + 'value0071' => 71, + 'value0072' => 72, + 'value0073' => 73, + 'value0074' => 74, + 'value0075' => 75, + 'value0076' => 76, + 'value0077' => 77, + 'value0078' => 78, + 'value0079' => 79, + 'value0080' => 80, + 'value0081' => 81, + 'value0082' => 82, + 'value0083' => 83, + 'value0084' => 84, + 'value0085' => 85, + 'value0086' => 86, + 'value0087' => 87, + 'value0088' => 88, + 'value0089' => 89, + 'value0090' => 90, + 'value0091' => 91, + 'value0092' => 92, + 'value0093' => 93, + 'value0094' => 94, + 'value0095' => 95, + 'value0096' => 96, + 'value0097' => 97, + 'value0098' => 98, + 'value0099' => 99, + 'value0100' => 100, + 'value0101' => 101, + 'value0102' => 102, + 'value0103' => 103, + 'value0104' => 104, + 'value0105' => 105, + 'value0106' => 106, + 'value0107' => 107, + 'value0108' => 108, + 'value0109' => 109, + 'value0110' => 110, + 'value0111' => 111, + 'value0112' => 112, + 'value0113' => 113, + 'value0114' => 114, + 'value0115' => 115, + 'value0116' => 116, + 'value0117' => 117, + 'value0118' => 118, + 'value0119' => 119, + 'value0120' => 120, + 'value0121' => 121, + 'value0122' => 122, + 'value0123' => 123, + 'value0124' => 124, + 'value0125' => 125, + 'value0126' => 126, + 'value0127' => 127, + 'value0128' => 128, + 'value0129' => 129, + 'value0130' => 130, + 'value0131' => 131, + 'value0132' => 132, + 'value0133' => 133, + 'value0134' => 134, + 'value0135' => 135, + 'value0136' => 136, + 'value0137' => 137, + 'value0138' => 138, + 'value0139' => 139, + 'value0140' => 140, + 'value0141' => 141, + 'value0142' => 142, + 'value0143' => 143, + 'value0144' => 144, + 'value0145' => 145, + 'value0146' => 146, + 'value0147' => 147, + 'value0148' => 148, + 'value0149' => 149, + 'value0150' => 150, + 'value0151' => 151, + 'value0152' => 152, + 'value0153' => 153, + 'value0154' => 154, + 'value0155' => 155, + 'value0156' => 156, + 'value0157' => 157, + 'value0158' => 158, + 'value0159' => 159, + 'value0160' => 160, + 'value0161' => 161, + 'value0162' => 162, + 'value0163' => 163, + 'value0164' => 164, + 'value0165' => 165, + 'value0166' => 166, + 'value0167' => 167, + 'value0168' => 168, + 'value0169' => 169, + 'value0170' => 170, + 'value0171' => 171, + 'value0172' => 172, + 'value0173' => 173, + 'value0174' => 174, + 'value0175' => 175, + 'value0176' => 176, + 'value0177' => 177, + 'value0178' => 178, + 'value0179' => 179, + 'value0180' => 180, + 'value0181' => 181, + 'value0182' => 182, + 'value0183' => 183, + 'value0184' => 184, + 'value0185' => 185, + 'value0186' => 186, + 'value0187' => 187, + 'value0188' => 188, + 'value0189' => 189, + 'value0190' => 190, + 'value0191' => 191, + 'value0192' => 192, + 'value0193' => 193, + 'value0194' => 194, + 'value0195' => 195, + 'value0196' => 196, + 'value0197' => 197, + 'value0198' => 198, + 'value0199' => 199, + 'value0200' => 200, + 'value0201' => 201, + 'value0202' => 202, + 'value0203' => 203, + 'value0204' => 204, + 'value0205' => 205, + 'value0206' => 206, + 'value0207' => 207, + 'value0208' => 208, + 'value0209' => 209, + 'value0210' => 210, + 'value0211' => 211, + 'value0212' => 212, + 'value0213' => 213, + 'value0214' => 214, + 'value0215' => 215, + 'value0216' => 216, + 'value0217' => 217, + 'value0218' => 218, + 'value0219' => 219, + 'value0220' => 220, + 'value0221' => 221, + 'value0222' => 222, + 'value0223' => 223, + 'value0224' => 224, + 'value0225' => 225, + 'value0226' => 226, + 'value0227' => 227, + 'value0228' => 228, + 'value0229' => 229, + 'value0230' => 230, + 'value0231' => 231, + 'value0232' => 232, + 'value0233' => 233, + 'value0234' => 234, + 'value0235' => 235, + 'value0236' => 236, + 'value0237' => 237, + 'value0238' => 238, + 'value0239' => 239, + 'value0240' => 240, + 'value0241' => 241, + 'value0242' => 242, + 'value0243' => 243, + 'value0244' => 244, + 'value0245' => 245, + 'value0246' => 246, + 'value0247' => 247, + 'value0248' => 248, + 'value0249' => 249, + 'value0250' => 250, + 'value0251' => 251, + 'value0252' => 252, + 'value0253' => 253, + 'value0254' => 254, + 'value0255' => 255, + 'value0256' => 256, + 'value0257' => 257, + 'value0258' => 258, + 'value0259' => 259, + 'value0260' => 260, + 'value0261' => 261, + 'value0262' => 262, + 'value0263' => 263, + 'value0264' => 264, + 'value0265' => 265, + 'value0266' => 266, + 'value0267' => 267, + 'value0268' => 268, + 'value0269' => 269, + 'value0270' => 270, + 'value0271' => 271, + 'value0272' => 272, + 'value0273' => 273, + 'value0274' => 274, + 'value0275' => 275, + 'value0276' => 276, + 'value0277' => 277, + 'value0278' => 278, + 'value0279' => 279, + 'value0280' => 280, + 'value0281' => 281, + 'value0282' => 282, + 'value0283' => 283, + 'value0284' => 284, + 'value0285' => 285, + 'value0286' => 286, + 'value0287' => 287, + 'value0288' => 288, + 'value0289' => 289, + 'value0290' => 290, + 'value0291' => 291, + 'value0292' => 292, + 'value0293' => 293, + 'value0294' => 294, + 'value0295' => 295, + 'value0296' => 296, + 'value0297' => 297, + 'value0298' => 298, + 'value0299' => 299, + 'value0300' => 300, + 'value0301' => 301, + 'value0302' => 302, + 'value0303' => 303, + 'value0304' => 304, + 'value0305' => 305, + 'value0306' => 306, + 'value0307' => 307, + 'value0308' => 308, + 'value0309' => 309, + 'value0310' => 310, + 'value0311' => 311, + 'value0312' => 312, + 'value0313' => 313, + 'value0314' => 314, + 'value0315' => 315, + 'value0316' => 316, + 'value0317' => 317, + 'value0318' => 318, + 'value0319' => 319, + 'value0320' => 320, + 'value0321' => 321, + 'value0322' => 322, + 'value0323' => 323, + 'value0324' => 324, + 'value0325' => 325, + 'value0326' => 326, + 'value0327' => 327, + 'value0328' => 328, + 'value0329' => 329, + 'value0330' => 330, + 'value0331' => 331, + 'value0332' => 332, + 'value0333' => 333, + 'value0334' => 334, + 'value0335' => 335, + 'value0336' => 336, + 'value0337' => 337, + 'value0338' => 338, + 'value0339' => 339, + 'value0340' => 340, + 'value0341' => 341, + 'value0342' => 342, + 'value0343' => 343, + 'value0344' => 344, + 'value0345' => 345, + 'value0346' => 346, + 'value0347' => 347, + 'value0348' => 348, + 'value0349' => 349, + 'value0350' => 350, + 'value0351' => 351, + 'value0352' => 352, + 'value0353' => 353, + 'value0354' => 354, + 'value0355' => 355, + 'value0356' => 356, + 'value0357' => 357, + 'value0358' => 358, + 'value0359' => 359, + 'value0360' => 360, + 'value0361' => 361, + 'value0362' => 362, + 'value0363' => 363, + 'value0364' => 364, + 'value0365' => 365, + 'value0366' => 366, + 'value0367' => 367, + 'value0368' => 368, + 'value0369' => 369, + 'value0370' => 370, + 'value0371' => 371, + 'value0372' => 372, + 'value0373' => 373, + 'value0374' => 374, + 'value0375' => 375, + 'value0376' => 376, + 'value0377' => 377, + 'value0378' => 378, + 'value0379' => 379, + 'value0380' => 380, + 'value0381' => 381, + 'value0382' => 382, + 'value0383' => 383, + 'value0384' => 384, + 'value0385' => 385, + 'value0386' => 386, + 'value0387' => 387, + 'value0388' => 388, + 'value0389' => 389, + 'value0390' => 390, + 'value0391' => 391, + 'value0392' => 392, + 'value0393' => 393, + 'value0394' => 394, + 'value0395' => 395, + 'value0396' => 396, + 'value0397' => 397, + 'value0398' => 398, + 'value0399' => 399, + 'value0400' => 400, + 'value0401' => 401, + 'value0402' => 402, + 'value0403' => 403, + 'value0404' => 404, + 'value0405' => 405, + 'value0406' => 406, + 'value0407' => 407, + 'value0408' => 408, + 'value0409' => 409, + 'value0410' => 410, + 'value0411' => 411, + 'value0412' => 412, + 'value0413' => 413, + 'value0414' => 414, + 'value0415' => 415, + 'value0416' => 416, + 'value0417' => 417, + 'value0418' => 418, + 'value0419' => 419, + 'value0420' => 420, + 'value0421' => 421, + 'value0422' => 422, + 'value0423' => 423, + 'value0424' => 424, + 'value0425' => 425, + 'value0426' => 426, + 'value0427' => 427, + 'value0428' => 428, + 'value0429' => 429, + 'value0430' => 430, + 'value0431' => 431, + 'value0432' => 432, + 'value0433' => 433, + 'value0434' => 434, + 'value0435' => 435, + 'value0436' => 436, + 'value0437' => 437, + 'value0438' => 438, + 'value0439' => 439, + 'value0440' => 440, + 'value0441' => 441, + 'value0442' => 442, + 'value0443' => 443, + 'value0444' => 444, + 'value0445' => 445, + 'value0446' => 446, + 'value0447' => 447, + 'value0448' => 448, + 'value0449' => 449, + 'value0450' => 450, + 'value0451' => 451, + 'value0452' => 452, + 'value0453' => 453, + 'value0454' => 454, + 'value0455' => 455, + 'value0456' => 456, + 'value0457' => 457, + 'value0458' => 458, + 'value0459' => 459, + 'value0460' => 460, + 'value0461' => 461, + 'value0462' => 462, + 'value0463' => 463, + 'value0464' => 464, + 'value0465' => 465, + 'value0466' => 466, + 'value0467' => 467, + 'value0468' => 468, + 'value0469' => 469, + 'value0470' => 470, + 'value0471' => 471, + 'value0472' => 472, + 'value0473' => 473, + 'value0474' => 474, + 'value0475' => 475, + 'value0476' => 476, + 'value0477' => 477, + 'value0478' => 478, + 'value0479' => 479, + 'value0480' => 480, + 'value0481' => 481, + 'value0482' => 482, + 'value0483' => 483, + 'value0484' => 484, + 'value0485' => 485, + 'value0486' => 486, + 'value0487' => 487, + 'value0488' => 488, + 'value0489' => 489, + 'value0490' => 490, + 'value0491' => 491, + 'value0492' => 492, + 'value0493' => 493, + 'value0494' => 494, + 'value0495' => 495, + 'value0496' => 496, + 'value0497' => 497, + 'value0498' => 498, + 'value0499' => 499, + 'value0500' => 500, + 'value0501' => 501, + 'value0502' => 502, + 'value0503' => 503, + 'value0504' => 504, + 'value0505' => 505, + 'value0506' => 506, + 'value0507' => 507, + 'value0508' => 508, + 'value0509' => 509, + 'value0510' => 510, + 'value0511' => 511, + 'value0512' => 512, + 'value0513' => 513, + 'value0514' => 514, + 'value0515' => 515, + 'value0516' => 516, + 'value0517' => 517, + 'value0518' => 518, + 'value0519' => 519, + 'value0520' => 520, + 'value0521' => 521, + 'value0522' => 522, + 'value0523' => 523, + 'value0524' => 524, + 'value0525' => 525, + 'value0526' => 526, + 'value0527' => 527, + 'value0528' => 528, + 'value0529' => 529, + 'value0530' => 530, + 'value0531' => 531, + 'value0532' => 532, + 'value0533' => 533, + 'value0534' => 534, + 'value0535' => 535, + 'value0536' => 536, + 'value0537' => 537, + 'value0538' => 538, + 'value0539' => 539, + 'value0540' => 540, + 'value0541' => 541, + 'value0542' => 542, + 'value0543' => 543, + 'value0544' => 544, + 'value0545' => 545, + 'value0546' => 546, + 'value0547' => 547, + 'value0548' => 548, + 'value0549' => 549, + 'value0550' => 550, + 'value0551' => 551, + 'value0552' => 552, + 'value0553' => 553, + 'value0554' => 554, + 'value0555' => 555, + 'value0556' => 556, + 'value0557' => 557, + 'value0558' => 558, + 'value0559' => 559, + 'value0560' => 560, + 'value0561' => 561, + 'value0562' => 562, + 'value0563' => 563, + 'value0564' => 564, + 'value0565' => 565, + 'value0566' => 566, + 'value0567' => 567, + 'value0568' => 568, + 'value0569' => 569, + 'value0570' => 570, + 'value0571' => 571, + 'value0572' => 572, + 'value0573' => 573, + 'value0574' => 574, + 'value0575' => 575, + 'value0576' => 576, + 'value0577' => 577, + 'value0578' => 578, + 'value0579' => 579, + 'value0580' => 580, + 'value0581' => 581, + 'value0582' => 582, + 'value0583' => 583, + 'value0584' => 584, + 'value0585' => 585, + 'value0586' => 586, + 'value0587' => 587, + 'value0588' => 588, + 'value0589' => 589, + 'value0590' => 590, + 'value0591' => 591, + 'value0592' => 592, + 'value0593' => 593, + 'value0594' => 594, + 'value0595' => 595, + 'value0596' => 596, + 'value0597' => 597, + 'value0598' => 598, + 'value0599' => 599, + 'value0600' => 600, + 'value0601' => 601, + 'value0602' => 602, + 'value0603' => 603, + 'value0604' => 604, + 'value0605' => 605, + 'value0606' => 606, + 'value0607' => 607, + 'value0608' => 608, + 'value0609' => 609, + 'value0610' => 610, + 'value0611' => 611, + 'value0612' => 612, + 'value0613' => 613, + 'value0614' => 614, + 'value0615' => 615, + 'value0616' => 616, + 'value0617' => 617, + 'value0618' => 618, + 'value0619' => 619, + 'value0620' => 620, + 'value0621' => 621, + 'value0622' => 622, + 'value0623' => 623, + 'value0624' => 624, + 'value0625' => 625, + 'value0626' => 626, + 'value0627' => 627, + 'value0628' => 628, + 'value0629' => 629, + 'value0630' => 630, + 'value0631' => 631, + 'value0632' => 632, + 'value0633' => 633, + 'value0634' => 634, + 'value0635' => 635, + 'value0636' => 636, + 'value0637' => 637, + 'value0638' => 638, + 'value0639' => 639, + 'value0640' => 640, + 'value0641' => 641, + 'value0642' => 642, + 'value0643' => 643, + 'value0644' => 644, + 'value0645' => 645, + 'value0646' => 646, + 'value0647' => 647, + 'value0648' => 648, + 'value0649' => 649, + 'value0650' => 650, + 'value0651' => 651, + 'value0652' => 652, + 'value0653' => 653, + 'value0654' => 654, + 'value0655' => 655, + 'value0656' => 656, + 'value0657' => 657, + 'value0658' => 658, + 'value0659' => 659, + 'value0660' => 660, + 'value0661' => 661, + 'value0662' => 662, + 'value0663' => 663, + 'value0664' => 664, + 'value0665' => 665, + 'value0666' => 666, + 'value0667' => 667, + 'value0668' => 668, + 'value0669' => 669, + 'value0670' => 670, + 'value0671' => 671, + 'value0672' => 672, + 'value0673' => 673, + 'value0674' => 674, + 'value0675' => 675, + 'value0676' => 676, + 'value0677' => 677, + 'value0678' => 678, + 'value0679' => 679, + 'value0680' => 680, + 'value0681' => 681, + 'value0682' => 682, + 'value0683' => 683, + 'value0684' => 684, + 'value0685' => 685, + 'value0686' => 686, + 'value0687' => 687, + 'value0688' => 688, + 'value0689' => 689, + 'value0690' => 690, + 'value0691' => 691, + 'value0692' => 692, + 'value0693' => 693, + 'value0694' => 694, + 'value0695' => 695, + 'value0696' => 696, + 'value0697' => 697, + 'value0698' => 698, + 'value0699' => 699, + 'value0700' => 700, + 'value0701' => 701, + 'value0702' => 702, + 'value0703' => 703, + 'value0704' => 704, + 'value0705' => 705, + 'value0706' => 706, + 'value0707' => 707, + 'value0708' => 708, + 'value0709' => 709, + 'value0710' => 710, + 'value0711' => 711, + 'value0712' => 712, + 'value0713' => 713, + 'value0714' => 714, + 'value0715' => 715, + 'value0716' => 716, + 'value0717' => 717, + 'value0718' => 718, + 'value0719' => 719, + 'value0720' => 720, + 'value0721' => 721, + 'value0722' => 722, + 'value0723' => 723, + 'value0724' => 724, + 'value0725' => 725, + 'value0726' => 726, + 'value0727' => 727, + 'value0728' => 728, + 'value0729' => 729, + 'value0730' => 730, + 'value0731' => 731, + 'value0732' => 732, + 'value0733' => 733, + 'value0734' => 734, + 'value0735' => 735, + 'value0736' => 736, + 'value0737' => 737, + 'value0738' => 738, + 'value0739' => 739, + 'value0740' => 740, + 'value0741' => 741, + 'value0742' => 742, + 'value0743' => 743, + 'value0744' => 744, + 'value0745' => 745, + 'value0746' => 746, + 'value0747' => 747, + 'value0748' => 748, + 'value0749' => 749, + 'value0750' => 750, + 'value0751' => 751, + 'value0752' => 752, + 'value0753' => 753, + 'value0754' => 754, + 'value0755' => 755, + 'value0756' => 756, + 'value0757' => 757, + 'value0758' => 758, + 'value0759' => 759, + 'value0760' => 760, + 'value0761' => 761, + 'value0762' => 762, + 'value0763' => 763, + 'value0764' => 764, + 'value0765' => 765, + 'value0766' => 766, + 'value0767' => 767, + 'value0768' => 768, + 'value0769' => 769, + 'value0770' => 770, + 'value0771' => 771, + 'value0772' => 772, + 'value0773' => 773, + 'value0774' => 774, + 'value0775' => 775, + 'value0776' => 776, + 'value0777' => 777, + 'value0778' => 778, + 'value0779' => 779, + 'value0780' => 780, + 'value0781' => 781, + 'value0782' => 782, + 'value0783' => 783, + 'value0784' => 784, + 'value0785' => 785, + 'value0786' => 786, + 'value0787' => 787, + 'value0788' => 788, + 'value0789' => 789, + 'value0790' => 790, + 'value0791' => 791, + 'value0792' => 792, + 'value0793' => 793, + 'value0794' => 794, + 'value0795' => 795, + 'value0796' => 796, + 'value0797' => 797, + 'value0798' => 798, + 'value0799' => 799, + 'value0800' => 800, + 'value0801' => 801, + 'value0802' => 802, + 'value0803' => 803, + 'value0804' => 804, + 'value0805' => 805, + 'value0806' => 806, + 'value0807' => 807, + 'value0808' => 808, + 'value0809' => 809, + 'value0810' => 810, + 'value0811' => 811, + 'value0812' => 812, + 'value0813' => 813, + 'value0814' => 814, + 'value0815' => 815, + 'value0816' => 816, + 'value0817' => 817, + 'value0818' => 818, + 'value0819' => 819, + 'value0820' => 820, + 'value0821' => 821, + 'value0822' => 822, + 'value0823' => 823, + 'value0824' => 824, + 'value0825' => 825, + 'value0826' => 826, + 'value0827' => 827, + 'value0828' => 828, + 'value0829' => 829, + 'value0830' => 830, + 'value0831' => 831, + 'value0832' => 832, + 'value0833' => 833, + 'value0834' => 834, + 'value0835' => 835, + 'value0836' => 836, + 'value0837' => 837, + 'value0838' => 838, + 'value0839' => 839, + 'value0840' => 840, + 'value0841' => 841, + 'value0842' => 842, + 'value0843' => 843, + 'value0844' => 844, + 'value0845' => 845, + 'value0846' => 846, + 'value0847' => 847, + 'value0848' => 848, + 'value0849' => 849, + 'value0850' => 850, + 'value0851' => 851, + 'value0852' => 852, + 'value0853' => 853, + 'value0854' => 854, + 'value0855' => 855, + 'value0856' => 856, + 'value0857' => 857, + 'value0858' => 858, + 'value0859' => 859, + 'value0860' => 860, + 'value0861' => 861, + 'value0862' => 862, + 'value0863' => 863, + 'value0864' => 864, + 'value0865' => 865, + 'value0866' => 866, + 'value0867' => 867, + 'value0868' => 868, + 'value0869' => 869, + 'value0870' => 870, + 'value0871' => 871, + 'value0872' => 872, + 'value0873' => 873, + 'value0874' => 874, + 'value0875' => 875, + 'value0876' => 876, + 'value0877' => 877, + 'value0878' => 878, + 'value0879' => 879, + 'value0880' => 880, + 'value0881' => 881, + 'value0882' => 882, + 'value0883' => 883, + 'value0884' => 884, + 'value0885' => 885, + 'value0886' => 886, + 'value0887' => 887, + 'value0888' => 888, + 'value0889' => 889, + 'value0890' => 890, + 'value0891' => 891, + 'value0892' => 892, + 'value0893' => 893, + 'value0894' => 894, + 'value0895' => 895, + 'value0896' => 896, + 'value0897' => 897, + 'value0898' => 898, + 'value0899' => 899, + 'value0900' => 900, + 'value0901' => 901, + 'value0902' => 902, + 'value0903' => 903, + 'value0904' => 904, + 'value0905' => 905, + 'value0906' => 906, + 'value0907' => 907, + 'value0908' => 908, + 'value0909' => 909, + 'value0910' => 910, + 'value0911' => 911, + 'value0912' => 912, + 'value0913' => 913, + 'value0914' => 914, + 'value0915' => 915, + 'value0916' => 916, + 'value0917' => 917, + 'value0918' => 918, + 'value0919' => 919, + 'value0920' => 920, + 'value0921' => 921, + 'value0922' => 922, + 'value0923' => 923, + 'value0924' => 924, + 'value0925' => 925, + 'value0926' => 926, + 'value0927' => 927, + 'value0928' => 928, + 'value0929' => 929, + 'value0930' => 930, + 'value0931' => 931, + 'value0932' => 932, + 'value0933' => 933, + 'value0934' => 934, + 'value0935' => 935, + 'value0936' => 936, + 'value0937' => 937, + 'value0938' => 938, + 'value0939' => 939, + 'value0940' => 940, + 'value0941' => 941, + 'value0942' => 942, + 'value0943' => 943, + 'value0944' => 944, + 'value0945' => 945, + 'value0946' => 946, + 'value0947' => 947, + 'value0948' => 948, + 'value0949' => 949, + 'value0950' => 950, + 'value0951' => 951, + 'value0952' => 952, + 'value0953' => 953, + 'value0954' => 954, + 'value0955' => 955, + 'value0956' => 956, + 'value0957' => 957, + 'value0958' => 958, + 'value0959' => 959, + 'value0960' => 960, + 'value0961' => 961, + 'value0962' => 962, + 'value0963' => 963, + 'value0964' => 964, + 'value0965' => 965, + 'value0966' => 966, + 'value0967' => 967, + 'value0968' => 968, + 'value0969' => 969, + 'value0970' => 970, + 'value0971' => 971, + 'value0972' => 972, + 'value0973' => 973, + 'value0974' => 974, + 'value0975' => 975, + 'value0976' => 976, + 'value0977' => 977, + 'value0978' => 978, + 'value0979' => 979, + 'value0980' => 980, + 'value0981' => 981, + 'value0982' => 982, + 'value0983' => 983, + 'value0984' => 984, + 'value0985' => 985, + 'value0986' => 986, + 'value0987' => 987, + 'value0988' => 988, + 'value0989' => 989, + 'value0990' => 990, + 'value0991' => 991, + 'value0992' => 992, + 'value0993' => 993, + 'value0994' => 994, + 'value0995' => 995, + 'value0996' => 996, + 'value0997' => 997, + 'value0998' => 998, + 'value0999' => 999, + 'value1000' => 1000, + 'value1001' => 1001, + 'value1002' => 1002, + 'value1003' => 1003, + 'value1004' => 1004, + 'value1005' => 1005, + 'value1006' => 1006, + 'value1007' => 1007, + 'value1008' => 1008, + 'value1009' => 1009, + 'value1010' => 1010, + 'value1011' => 1011, + 'value1012' => 1012, + 'value1013' => 1013, + 'value1014' => 1014, + 'value1015' => 1015, + 'value1016' => 1016, + 'value1017' => 1017, + 'value1018' => 1018, + 'value1019' => 1019, + 'value1020' => 1020, + 'value1021' => 1021, + 'value1022' => 1022, + 'value1023' => 1023, + 'value1024' => 1024, + 'value1025' => 1025, + 'value1026' => 1026, + 'value1027' => 1027, + 'value1028' => 1028, + 'value1029' => 1029, + 'value1030' => 1030, + 'value1031' => 1031, + 'value1032' => 1032, + 'value1033' => 1033, + 'value1034' => 1034, + 'value1035' => 1035, + 'value1036' => 1036, + 'value1037' => 1037, + 'value1038' => 1038, + 'value1039' => 1039, + 'value1040' => 1040, + 'value1041' => 1041, + 'value1042' => 1042, + 'value1043' => 1043, + 'value1044' => 1044, + 'value1045' => 1045, + 'value1046' => 1046, + 'value1047' => 1047, + 'value1048' => 1048, + 'value1049' => 1049, + 'value1050' => 1050, + 'value1051' => 1051, + 'value1052' => 1052, + 'value1053' => 1053, + 'value1054' => 1054, + 'value1055' => 1055, + 'value1056' => 1056, + 'value1057' => 1057, + 'value1058' => 1058, + 'value1059' => 1059, + 'value1060' => 1060, + 'value1061' => 1061, + 'value1062' => 1062, + 'value1063' => 1063, + 'value1064' => 1064, + 'value1065' => 1065, + 'value1066' => 1066, + 'value1067' => 1067, + 'value1068' => 1068, + 'value1069' => 1069, + 'value1070' => 1070, + 'value1071' => 1071, + 'value1072' => 1072, + 'value1073' => 1073, + 'value1074' => 1074, + 'value1075' => 1075, + 'value1076' => 1076, + 'value1077' => 1077, + 'value1078' => 1078, + 'value1079' => 1079, + 'value1080' => 1080, + 'value1081' => 1081, + 'value1082' => 1082, + 'value1083' => 1083, + 'value1084' => 1084, + 'value1085' => 1085, + 'value1086' => 1086, + 'value1087' => 1087, + 'value1088' => 1088, + 'value1089' => 1089, + 'value1090' => 1090, + 'value1091' => 1091, + 'value1092' => 1092, + 'value1093' => 1093, + 'value1094' => 1094, + 'value1095' => 1095, + 'value1096' => 1096, + 'value1097' => 1097, + 'value1098' => 1098, + 'value1099' => 1099, + 'value1100' => 1100, + 'value1101' => 1101, + 'value1102' => 1102, + 'value1103' => 1103, + 'value1104' => 1104, + 'value1105' => 1105, + 'value1106' => 1106, + 'value1107' => 1107, + 'value1108' => 1108, + 'value1109' => 1109, + 'value1110' => 1110, + 'value1111' => 1111, + 'value1112' => 1112, + 'value1113' => 1113, + 'value1114' => 1114, + 'value1115' => 1115, + 'value1116' => 1116, + 'value1117' => 1117, + 'value1118' => 1118, + 'value1119' => 1119, + 'value1120' => 1120, + 'value1121' => 1121, + 'value1122' => 1122, + 'value1123' => 1123, + 'value1124' => 1124, + 'value1125' => 1125, + 'value1126' => 1126, + 'value1127' => 1127, + 'value1128' => 1128, + 'value1129' => 1129, + 'value1130' => 1130, + 'value1131' => 1131, + 'value1132' => 1132, + 'value1133' => 1133, + 'value1134' => 1134, + 'value1135' => 1135, + 'value1136' => 1136, + 'value1137' => 1137, + 'value1138' => 1138, + 'value1139' => 1139, + 'value1140' => 1140, + 'value1141' => 1141, + 'value1142' => 1142, + 'value1143' => 1143, + 'value1144' => 1144, + 'value1145' => 1145, + 'value1146' => 1146, + 'value1147' => 1147, + 'value1148' => 1148, + 'value1149' => 1149, + 'value1150' => 1150, + 'value1151' => 1151, + 'value1152' => 1152, + 'value1153' => 1153, + 'value1154' => 1154, + 'value1155' => 1155, + 'value1156' => 1156, + 'value1157' => 1157, + 'value1158' => 1158, + 'value1159' => 1159, + 'value1160' => 1160, + 'value1161' => 1161, + 'value1162' => 1162, + 'value1163' => 1163, + 'value1164' => 1164, + 'value1165' => 1165, + 'value1166' => 1166, + 'value1167' => 1167, + 'value1168' => 1168, + 'value1169' => 1169, + 'value1170' => 1170, + 'value1171' => 1171, + 'value1172' => 1172, + 'value1173' => 1173, + 'value1174' => 1174, + 'value1175' => 1175, + 'value1176' => 1176, + 'value1177' => 1177, + 'value1178' => 1178, + 'value1179' => 1179, + 'value1180' => 1180, + 'value1181' => 1181, + 'value1182' => 1182, + 'value1183' => 1183, + 'value1184' => 1184, + 'value1185' => 1185, + 'value1186' => 1186, + 'value1187' => 1187, + 'value1188' => 1188, + 'value1189' => 1189, + 'value1190' => 1190, + 'value1191' => 1191, + 'value1192' => 1192, + 'value1193' => 1193, + 'value1194' => 1194, + 'value1195' => 1195, + 'value1196' => 1196, + 'value1197' => 1197, + 'value1198' => 1198, + 'value1199' => 1199, + 'value1200' => 1200, + 'value1201' => 1201, + 'value1202' => 1202, + 'value1203' => 1203, + 'value1204' => 1204, + 'value1205' => 1205, + 'value1206' => 1206, + 'value1207' => 1207, + 'value1208' => 1208, + 'value1209' => 1209, + 'value1210' => 1210, + 'value1211' => 1211, + 'value1212' => 1212, + 'value1213' => 1213, + 'value1214' => 1214, + 'value1215' => 1215, + 'value1216' => 1216, + 'value1217' => 1217, + 'value1218' => 1218, + 'value1219' => 1219, + 'value1220' => 1220, + 'value1221' => 1221, + 'value1222' => 1222, + 'value1223' => 1223, + 'value1224' => 1224, + 'value1225' => 1225, + 'value1226' => 1226, + 'value1227' => 1227, + 'value1228' => 1228, + 'value1229' => 1229, + 'value1230' => 1230, + 'value1231' => 1231, + 'value1232' => 1232, + 'value1233' => 1233, + 'value1234' => 1234, + 'value1235' => 1235, + 'value1236' => 1236, + 'value1237' => 1237, + 'value1238' => 1238, + 'value1239' => 1239, + 'value1240' => 1240, + 'value1241' => 1241, + 'value1242' => 1242, + 'value1243' => 1243, + 'value1244' => 1244, + 'value1245' => 1245, + 'value1246' => 1246, + 'value1247' => 1247, + 'value1248' => 1248, + 'value1249' => 1249, + 'value1250' => 1250, + 'value1251' => 1251, + 'value1252' => 1252, + 'value1253' => 1253, + 'value1254' => 1254, + 'value1255' => 1255, + 'value1256' => 1256, + 'value1257' => 1257, + 'value1258' => 1258, + 'value1259' => 1259, + 'value1260' => 1260, + 'value1261' => 1261, + 'value1262' => 1262, + 'value1263' => 1263, + 'value1264' => 1264, + 'value1265' => 1265, + 'value1266' => 1266, + 'value1267' => 1267, + 'value1268' => 1268, + 'value1269' => 1269, + 'value1270' => 1270, + 'value1271' => 1271, + 'value1272' => 1272, + 'value1273' => 1273, + 'value1274' => 1274, + 'value1275' => 1275, + 'value1276' => 1276, + 'value1277' => 1277, + 'value1278' => 1278, + 'value1279' => 1279, + 'value1280' => 1280, + 'value1281' => 1281, + 'value1282' => 1282, + 'value1283' => 1283, + 'value1284' => 1284, + 'value1285' => 1285, + 'value1286' => 1286, + 'value1287' => 1287, + 'value1288' => 1288, + 'value1289' => 1289, + 'value1290' => 1290, + 'value1291' => 1291, + 'value1292' => 1292, + 'value1293' => 1293, + 'value1294' => 1294, + 'value1295' => 1295, + 'value1296' => 1296, + 'value1297' => 1297, + 'value1298' => 1298, + 'value1299' => 1299, + 'value1300' => 1300, + 'value1301' => 1301, + 'value1302' => 1302, + 'value1303' => 1303, + 'value1304' => 1304, + 'value1305' => 1305, + 'value1306' => 1306, + 'value1307' => 1307, + 'value1308' => 1308, + 'value1309' => 1309, + 'value1310' => 1310, + 'value1311' => 1311, + 'value1312' => 1312, + 'value1313' => 1313, + 'value1314' => 1314, + 'value1315' => 1315, + 'value1316' => 1316, + 'value1317' => 1317, + 'value1318' => 1318, + 'value1319' => 1319, + 'value1320' => 1320, + 'value1321' => 1321, + 'value1322' => 1322, + 'value1323' => 1323, + 'value1324' => 1324, + 'value1325' => 1325, + 'value1326' => 1326, + 'value1327' => 1327, + 'value1328' => 1328, + 'value1329' => 1329, + 'value1330' => 1330, + 'value1331' => 1331, + 'value1332' => 1332, + 'value1333' => 1333, + 'value1334' => 1334, + 'value1335' => 1335, + 'value1336' => 1336, + 'value1337' => 1337, + 'value1338' => 1338, + 'value1339' => 1339, + 'value1340' => 1340, + 'value1341' => 1341, + 'value1342' => 1342, + 'value1343' => 1343, + 'value1344' => 1344, + 'value1345' => 1345, + 'value1346' => 1346, + 'value1347' => 1347, + 'value1348' => 1348, + 'value1349' => 1349, + 'value1350' => 1350, + 'value1351' => 1351, + 'value1352' => 1352, + 'value1353' => 1353, + 'value1354' => 1354, + 'value1355' => 1355, + 'value1356' => 1356, + 'value1357' => 1357, + 'value1358' => 1358, + 'value1359' => 1359, + 'value1360' => 1360, + 'value1361' => 1361, + 'value1362' => 1362, + 'value1363' => 1363, + 'value1364' => 1364, + 'value1365' => 1365, + 'value1366' => 1366, + 'value1367' => 1367, + 'value1368' => 1368, + 'value1369' => 1369, + 'value1370' => 1370, + 'value1371' => 1371, + 'value1372' => 1372, + 'value1373' => 1373, + 'value1374' => 1374, + 'value1375' => 1375, + 'value1376' => 1376, + 'value1377' => 1377, + 'value1378' => 1378, + 'value1379' => 1379, + 'value1380' => 1380, + 'value1381' => 1381, + 'value1382' => 1382, + 'value1383' => 1383, + 'value1384' => 1384, + 'value1385' => 1385, + 'value1386' => 1386, + 'value1387' => 1387, + 'value1388' => 1388, + 'value1389' => 1389, + 'value1390' => 1390, + 'value1391' => 1391, + 'value1392' => 1392, + 'value1393' => 1393, + 'value1394' => 1394, + 'value1395' => 1395, + 'value1396' => 1396, + 'value1397' => 1397, + 'value1398' => 1398, + 'value1399' => 1399, + 'value1400' => 1400, + 'value1401' => 1401, + 'value1402' => 1402, + 'value1403' => 1403, + 'value1404' => 1404, + 'value1405' => 1405, + 'value1406' => 1406, + 'value1407' => 1407, + 'value1408' => 1408, + 'value1409' => 1409, + 'value1410' => 1410, + 'value1411' => 1411, + 'value1412' => 1412, + 'value1413' => 1413, + 'value1414' => 1414, + 'value1415' => 1415, + 'value1416' => 1416, + 'value1417' => 1417, + 'value1418' => 1418, + 'value1419' => 1419, + 'value1420' => 1420, + 'value1421' => 1421, + 'value1422' => 1422, + 'value1423' => 1423, + 'value1424' => 1424, + 'value1425' => 1425, + 'value1426' => 1426, + 'value1427' => 1427, + 'value1428' => 1428, + 'value1429' => 1429, + 'value1430' => 1430, + 'value1431' => 1431, + 'value1432' => 1432, + 'value1433' => 1433, + 'value1434' => 1434, + 'value1435' => 1435, + 'value1436' => 1436, + 'value1437' => 1437, + 'value1438' => 1438, + 'value1439' => 1439, + 'value1440' => 1440, + 'value1441' => 1441, + 'value1442' => 1442, + 'value1443' => 1443, + 'value1444' => 1444, + 'value1445' => 1445, + 'value1446' => 1446, + 'value1447' => 1447, + 'value1448' => 1448, + 'value1449' => 1449, + 'value1450' => 1450, + 'value1451' => 1451, + 'value1452' => 1452, + 'value1453' => 1453, + 'value1454' => 1454, + 'value1455' => 1455, + 'value1456' => 1456, + 'value1457' => 1457, + 'value1458' => 1458, + 'value1459' => 1459, + 'value1460' => 1460, + 'value1461' => 1461, + 'value1462' => 1462, + 'value1463' => 1463, + 'value1464' => 1464, + 'value1465' => 1465, + 'value1466' => 1466, + 'value1467' => 1467, + 'value1468' => 1468, + 'value1469' => 1469, + 'value1470' => 1470, + 'value1471' => 1471, + 'value1472' => 1472, + 'value1473' => 1473, + 'value1474' => 1474, + 'value1475' => 1475, + 'value1476' => 1476, + 'value1477' => 1477, + 'value1478' => 1478, + 'value1479' => 1479, + 'value1480' => 1480, + 'value1481' => 1481, + 'value1482' => 1482, + 'value1483' => 1483, + 'value1484' => 1484, + 'value1485' => 1485, + 'value1486' => 1486, + 'value1487' => 1487, + 'value1488' => 1488, + 'value1489' => 1489, + 'value1490' => 1490, + 'value1491' => 1491, + 'value1492' => 1492, + 'value1493' => 1493, + 'value1494' => 1494, + 'value1495' => 1495, + 'value1496' => 1496, + 'value1497' => 1497, + 'value1498' => 1498, + 'value1499' => 1499, + 'value1500' => 1500, + 'value1501' => 1501, + 'value1502' => 1502, + 'value1503' => 1503, + 'value1504' => 1504, + 'value1505' => 1505, + 'value1506' => 1506, + 'value1507' => 1507, + 'value1508' => 1508, + 'value1509' => 1509, + 'value1510' => 1510, + 'value1511' => 1511, + 'value1512' => 1512, + 'value1513' => 1513, + 'value1514' => 1514, + 'value1515' => 1515, + 'value1516' => 1516, + 'value1517' => 1517, + 'value1518' => 1518, + 'value1519' => 1519, + 'value1520' => 1520, + 'value1521' => 1521, + 'value1522' => 1522, + 'value1523' => 1523, + 'value1524' => 1524, + 'value1525' => 1525, + 'value1526' => 1526, + 'value1527' => 1527, + 'value1528' => 1528, + 'value1529' => 1529, + 'value1530' => 1530, + 'value1531' => 1531, + 'value1532' => 1532, + 'value1533' => 1533, + 'value1534' => 1534, + 'value1535' => 1535, + 'value1536' => 1536, + 'value1537' => 1537, + 'value1538' => 1538, + 'value1539' => 1539, + 'value1540' => 1540, + 'value1541' => 1541, + 'value1542' => 1542, + 'value1543' => 1543, + 'value1544' => 1544, + 'value1545' => 1545, + 'value1546' => 1546, + 'value1547' => 1547, + 'value1548' => 1548, + 'value1549' => 1549, + 'value1550' => 1550, + 'value1551' => 1551, + 'value1552' => 1552, + 'value1553' => 1553, + 'value1554' => 1554, + 'value1555' => 1555, + 'value1556' => 1556, + 'value1557' => 1557, + 'value1558' => 1558, + 'value1559' => 1559, + 'value1560' => 1560, + 'value1561' => 1561, + 'value1562' => 1562, + 'value1563' => 1563, + 'value1564' => 1564, + 'value1565' => 1565, + 'value1566' => 1566, + 'value1567' => 1567, + 'value1568' => 1568, + 'value1569' => 1569, + 'value1570' => 1570, + 'value1571' => 1571, + 'value1572' => 1572, + 'value1573' => 1573, + 'value1574' => 1574, + 'value1575' => 1575, + 'value1576' => 1576, + 'value1577' => 1577, + 'value1578' => 1578, + 'value1579' => 1579, + 'value1580' => 1580, + 'value1581' => 1581, + 'value1582' => 1582, + 'value1583' => 1583, + 'value1584' => 1584, + 'value1585' => 1585, + 'value1586' => 1586, + 'value1587' => 1587, + 'value1588' => 1588, + 'value1589' => 1589, + 'value1590' => 1590, + 'value1591' => 1591, + 'value1592' => 1592, + 'value1593' => 1593, + 'value1594' => 1594, + 'value1595' => 1595, + 'value1596' => 1596, + 'value1597' => 1597, + 'value1598' => 1598, + 'value1599' => 1599, + 'value1600' => 1600, + 'value1601' => 1601, + 'value1602' => 1602, + 'value1603' => 1603, + 'value1604' => 1604, + 'value1605' => 1605, + 'value1606' => 1606, + 'value1607' => 1607, + 'value1608' => 1608, + 'value1609' => 1609, + 'value1610' => 1610, + 'value1611' => 1611, + 'value1612' => 1612, + 'value1613' => 1613, + 'value1614' => 1614, + 'value1615' => 1615, + 'value1616' => 1616, + 'value1617' => 1617, + 'value1618' => 1618, + 'value1619' => 1619, + 'value1620' => 1620, + 'value1621' => 1621, + 'value1622' => 1622, + 'value1623' => 1623, + 'value1624' => 1624, + 'value1625' => 1625, + 'value1626' => 1626, + 'value1627' => 1627, + 'value1628' => 1628, + 'value1629' => 1629, + 'value1630' => 1630, + 'value1631' => 1631, + 'value1632' => 1632, + 'value1633' => 1633, + 'value1634' => 1634, + 'value1635' => 1635, + 'value1636' => 1636, + 'value1637' => 1637, + 'value1638' => 1638, + 'value1639' => 1639, + 'value1640' => 1640, + 'value1641' => 1641, + 'value1642' => 1642, + 'value1643' => 1643, + 'value1644' => 1644, + 'value1645' => 1645, + 'value1646' => 1646, + 'value1647' => 1647, + 'value1648' => 1648, + 'value1649' => 1649, + 'value1650' => 1650, + 'value1651' => 1651, + 'value1652' => 1652, + 'value1653' => 1653, + 'value1654' => 1654, + 'value1655' => 1655, + 'value1656' => 1656, + 'value1657' => 1657, + 'value1658' => 1658, + 'value1659' => 1659, + 'value1660' => 1660, + 'value1661' => 1661, + 'value1662' => 1662, + 'value1663' => 1663, + 'value1664' => 1664, + 'value1665' => 1665, + 'value1666' => 1666, + 'value1667' => 1667, + 'value1668' => 1668, + 'value1669' => 1669, + 'value1670' => 1670, + 'value1671' => 1671, + 'value1672' => 1672, + 'value1673' => 1673, + 'value1674' => 1674, + 'value1675' => 1675, + 'value1676' => 1676, + 'value1677' => 1677, + 'value1678' => 1678, + 'value1679' => 1679, + 'value1680' => 1680, + 'value1681' => 1681, + 'value1682' => 1682, + 'value1683' => 1683, + 'value1684' => 1684, + 'value1685' => 1685, + 'value1686' => 1686, + 'value1687' => 1687, + 'value1688' => 1688, + 'value1689' => 1689, + 'value1690' => 1690, + 'value1691' => 1691, + 'value1692' => 1692, + 'value1693' => 1693, + 'value1694' => 1694, + 'value1695' => 1695, + 'value1696' => 1696, + 'value1697' => 1697, + 'value1698' => 1698, + 'value1699' => 1699, + 'value1700' => 1700, + 'value1701' => 1701, + 'value1702' => 1702, + 'value1703' => 1703, + 'value1704' => 1704, + 'value1705' => 1705, + 'value1706' => 1706, + 'value1707' => 1707, + 'value1708' => 1708, + 'value1709' => 1709, + 'value1710' => 1710, + 'value1711' => 1711, + 'value1712' => 1712, + 'value1713' => 1713, + 'value1714' => 1714, + 'value1715' => 1715, + 'value1716' => 1716, + 'value1717' => 1717, + 'value1718' => 1718, + 'value1719' => 1719, + 'value1720' => 1720, + 'value1721' => 1721, + 'value1722' => 1722, + 'value1723' => 1723, + 'value1724' => 1724, + 'value1725' => 1725, + 'value1726' => 1726, + 'value1727' => 1727, + 'value1728' => 1728, + 'value1729' => 1729, + 'value1730' => 1730, + 'value1731' => 1731, + 'value1732' => 1732, + 'value1733' => 1733, + 'value1734' => 1734, + 'value1735' => 1735, + 'value1736' => 1736, + 'value1737' => 1737, + 'value1738' => 1738, + 'value1739' => 1739, + 'value1740' => 1740, + 'value1741' => 1741, + 'value1742' => 1742, + 'value1743' => 1743, + 'value1744' => 1744, + 'value1745' => 1745, + 'value1746' => 1746, + 'value1747' => 1747, + 'value1748' => 1748, + 'value1749' => 1749, + 'value1750' => 1750, + 'value1751' => 1751, + 'value1752' => 1752, + 'value1753' => 1753, + 'value1754' => 1754, + 'value1755' => 1755, + 'value1756' => 1756, + 'value1757' => 1757, + 'value1758' => 1758, + 'value1759' => 1759, + 'value1760' => 1760, + 'value1761' => 1761, + 'value1762' => 1762, + 'value1763' => 1763, + 'value1764' => 1764, + 'value1765' => 1765, + 'value1766' => 1766, + 'value1767' => 1767, + 'value1768' => 1768, + 'value1769' => 1769, + 'value1770' => 1770, + 'value1771' => 1771, + 'value1772' => 1772, + 'value1773' => 1773, + 'value1774' => 1774, + 'value1775' => 1775, + 'value1776' => 1776, + 'value1777' => 1777, + 'value1778' => 1778, + 'value1779' => 1779, + 'value1780' => 1780, + 'value1781' => 1781, + 'value1782' => 1782, + 'value1783' => 1783, + 'value1784' => 1784, + 'value1785' => 1785, + 'value1786' => 1786, + 'value1787' => 1787, + 'value1788' => 1788, + 'value1789' => 1789, + 'value1790' => 1790, + 'value1791' => 1791, + 'value1792' => 1792, + 'value1793' => 1793, + 'value1794' => 1794, + 'value1795' => 1795, + 'value1796' => 1796, + 'value1797' => 1797, + 'value1798' => 1798, + 'value1799' => 1799, + 'value1800' => 1800, + 'value1801' => 1801, + 'value1802' => 1802, + 'value1803' => 1803, + 'value1804' => 1804, + 'value1805' => 1805, + 'value1806' => 1806, + 'value1807' => 1807, + 'value1808' => 1808, + 'value1809' => 1809, + 'value1810' => 1810, + 'value1811' => 1811, + 'value1812' => 1812, + 'value1813' => 1813, + 'value1814' => 1814, + 'value1815' => 1815, + 'value1816' => 1816, + 'value1817' => 1817, + 'value1818' => 1818, + 'value1819' => 1819, + 'value1820' => 1820, + 'value1821' => 1821, + 'value1822' => 1822, + 'value1823' => 1823, + 'value1824' => 1824, + 'value1825' => 1825, + 'value1826' => 1826, + 'value1827' => 1827, + 'value1828' => 1828, + 'value1829' => 1829, + 'value1830' => 1830, + 'value1831' => 1831, + 'value1832' => 1832, + 'value1833' => 1833, + 'value1834' => 1834, + 'value1835' => 1835, + 'value1836' => 1836, + 'value1837' => 1837, + 'value1838' => 1838, + 'value1839' => 1839, + 'value1840' => 1840, + 'value1841' => 1841, + 'value1842' => 1842, + 'value1843' => 1843, + 'value1844' => 1844, + 'value1845' => 1845, + 'value1846' => 1846, + 'value1847' => 1847, + 'value1848' => 1848, + 'value1849' => 1849, + 'value1850' => 1850, + 'value1851' => 1851, + 'value1852' => 1852, + 'value1853' => 1853, + 'value1854' => 1854, + 'value1855' => 1855, + 'value1856' => 1856, + 'value1857' => 1857, + 'value1858' => 1858, + 'value1859' => 1859, + 'value1860' => 1860, + 'value1861' => 1861, + 'value1862' => 1862, + 'value1863' => 1863, + 'value1864' => 1864, + 'value1865' => 1865, + 'value1866' => 1866, + 'value1867' => 1867, + 'value1868' => 1868, + 'value1869' => 1869, + 'value1870' => 1870, + 'value1871' => 1871, + 'value1872' => 1872, + 'value1873' => 1873, + 'value1874' => 1874, + 'value1875' => 1875, + 'value1876' => 1876, + 'value1877' => 1877, + 'value1878' => 1878, + 'value1879' => 1879, + 'value1880' => 1880, + 'value1881' => 1881, + 'value1882' => 1882, + 'value1883' => 1883, + 'value1884' => 1884, + 'value1885' => 1885, + 'value1886' => 1886, + 'value1887' => 1887, + 'value1888' => 1888, + 'value1889' => 1889, + 'value1890' => 1890, + 'value1891' => 1891, + 'value1892' => 1892, + 'value1893' => 1893, + 'value1894' => 1894, + 'value1895' => 1895, + 'value1896' => 1896, + 'value1897' => 1897, + 'value1898' => 1898, + 'value1899' => 1899, + 'value1900' => 1900, + 'value1901' => 1901, + 'value1902' => 1902, + 'value1903' => 1903, + 'value1904' => 1904, + 'value1905' => 1905, + 'value1906' => 1906, + 'value1907' => 1907, + 'value1908' => 1908, + 'value1909' => 1909, + 'value1910' => 1910, + 'value1911' => 1911, + 'value1912' => 1912, + 'value1913' => 1913, + 'value1914' => 1914, + 'value1915' => 1915, + 'value1916' => 1916, + 'value1917' => 1917, + 'value1918' => 1918, + 'value1919' => 1919, + 'value1920' => 1920, + 'value1921' => 1921, + 'value1922' => 1922, + 'value1923' => 1923, + 'value1924' => 1924, + 'value1925' => 1925, + 'value1926' => 1926, + 'value1927' => 1927, + 'value1928' => 1928, + 'value1929' => 1929, + 'value1930' => 1930, + 'value1931' => 1931, + 'value1932' => 1932, + 'value1933' => 1933, + 'value1934' => 1934, + 'value1935' => 1935, + 'value1936' => 1936, + 'value1937' => 1937, + 'value1938' => 1938, + 'value1939' => 1939, + 'value1940' => 1940, + 'value1941' => 1941, + 'value1942' => 1942, + 'value1943' => 1943, + 'value1944' => 1944, + 'value1945' => 1945, + 'value1946' => 1946, + 'value1947' => 1947, + 'value1948' => 1948, + 'value1949' => 1949, + 'value1950' => 1950, + 'value1951' => 1951, + 'value1952' => 1952, + 'value1953' => 1953, + 'value1954' => 1954, + 'value1955' => 1955, + 'value1956' => 1956, + 'value1957' => 1957, + 'value1958' => 1958, + 'value1959' => 1959, + 'value1960' => 1960, + 'value1961' => 1961, + 'value1962' => 1962, + 'value1963' => 1963, + 'value1964' => 1964, + 'value1965' => 1965, + 'value1966' => 1966, + 'value1967' => 1967, + 'value1968' => 1968, + 'value1969' => 1969, + 'value1970' => 1970, + 'value1971' => 1971, + 'value1972' => 1972, + 'value1973' => 1973, + 'value1974' => 1974, + 'value1975' => 1975, + 'value1976' => 1976, + 'value1977' => 1977, + 'value1978' => 1978, + 'value1979' => 1979, + 'value1980' => 1980, + 'value1981' => 1981, + 'value1982' => 1982, + 'value1983' => 1983, + 'value1984' => 1984, + 'value1985' => 1985, + 'value1986' => 1986, + 'value1987' => 1987, + 'value1988' => 1988, + 'value1989' => 1989, + 'value1990' => 1990, + 'value1991' => 1991, + 'value1992' => 1992, + 'value1993' => 1993, + 'value1994' => 1994, + 'value1995' => 1995, + 'value1996' => 1996, + 'value1997' => 1997, + 'value1998' => 1998, + 'value1999' => 1999, + 'value2000' => 2000, + 'value2001' => 2001, + 'value2002' => 2002, + 'value2003' => 2003, + 'value2004' => 2004, + 'value2005' => 2005, + 'value2006' => 2006, + 'value2007' => 2007, + 'value2008' => 2008, + 'value2009' => 2009, + 'value2010' => 2010, + 'value2011' => 2011, + 'value2012' => 2012, + 'value2013' => 2013, + 'value2014' => 2014, + 'value2015' => 2015, + 'value2016' => 2016, + 'value2017' => 2017, + 'value2018' => 2018, + 'value2019' => 2019, + 'value2020' => 2020, + 'value2021' => 2021, + 'value2022' => 2022, + 'value2023' => 2023, + 'value2024' => 2024, + 'value2025' => 2025, + 'value2026' => 2026, + 'value2027' => 2027, + 'value2028' => 2028, + 'value2029' => 2029, + 'value2030' => 2030, + 'value2031' => 2031, + 'value2032' => 2032, + 'value2033' => 2033, + 'value2034' => 2034, + 'value2035' => 2035, + 'value2036' => 2036, + 'value2037' => 2037, + 'value2038' => 2038, + 'value2039' => 2039, + 'value2040' => 2040, + 'value2041' => 2041, + 'value2042' => 2042, + 'value2043' => 2043, + 'value2044' => 2044, + 'value2045' => 2045, + 'value2046' => 2046, + 'value2047' => 2047, + 'value2048' => 2048, + 'value2049' => 2049, + 'value2050' => 2050, + 'value2051' => 2051, + 'value2052' => 2052, + 'value2053' => 2053, + 'value2054' => 2054, + 'value2055' => 2055, + 'value2056' => 2056, + 'value2057' => 2057, + 'value2058' => 2058, + 'value2059' => 2059, + 'value2060' => 2060, + 'value2061' => 2061, + 'value2062' => 2062, + 'value2063' => 2063, + 'value2064' => 2064, + 'value2065' => 2065, + 'value2066' => 2066, + 'value2067' => 2067, + 'value2068' => 2068, + 'value2069' => 2069, + 'value2070' => 2070, + 'value2071' => 2071, + 'value2072' => 2072, + 'value2073' => 2073, + 'value2074' => 2074, + 'value2075' => 2075, + 'value2076' => 2076, + 'value2077' => 2077, + 'value2078' => 2078, + 'value2079' => 2079, + 'value2080' => 2080, + 'value2081' => 2081, + 'value2082' => 2082, + 'value2083' => 2083, + 'value2084' => 2084, + 'value2085' => 2085, + 'value2086' => 2086, + 'value2087' => 2087, + 'value2088' => 2088, + 'value2089' => 2089, + 'value2090' => 2090, + 'value2091' => 2091, + 'value2092' => 2092, + 'value2093' => 2093, + 'value2094' => 2094, + 'value2095' => 2095, + 'value2096' => 2096, + 'value2097' => 2097, + 'value2098' => 2098, + 'value2099' => 2099, + 'value2100' => 2100, + 'value2101' => 2101, + 'value2102' => 2102, + 'value2103' => 2103, + 'value2104' => 2104, + 'value2105' => 2105, + 'value2106' => 2106, + 'value2107' => 2107, + 'value2108' => 2108, + 'value2109' => 2109, + 'value2110' => 2110, + 'value2111' => 2111, + 'value2112' => 2112, + 'value2113' => 2113, + 'value2114' => 2114, + 'value2115' => 2115, + 'value2116' => 2116, + 'value2117' => 2117, + 'value2118' => 2118, + 'value2119' => 2119, + 'value2120' => 2120, + 'value2121' => 2121, + 'value2122' => 2122, + 'value2123' => 2123, + 'value2124' => 2124, + 'value2125' => 2125, + 'value2126' => 2126, + 'value2127' => 2127, + 'value2128' => 2128, + 'value2129' => 2129, + 'value2130' => 2130, + 'value2131' => 2131, + 'value2132' => 2132, + 'value2133' => 2133, + 'value2134' => 2134, + 'value2135' => 2135, + 'value2136' => 2136, + 'value2137' => 2137, + 'value2138' => 2138, + 'value2139' => 2139, + 'value2140' => 2140, + 'value2141' => 2141, + 'value2142' => 2142, + 'value2143' => 2143, + 'value2144' => 2144, + 'value2145' => 2145, + 'value2146' => 2146, + 'value2147' => 2147, + 'value2148' => 2148, + 'value2149' => 2149, + 'value2150' => 2150, + 'value2151' => 2151, + 'value2152' => 2152, + 'value2153' => 2153, + 'value2154' => 2154, + 'value2155' => 2155, + 'value2156' => 2156, + 'value2157' => 2157, + 'value2158' => 2158, + 'value2159' => 2159, + 'value2160' => 2160, + 'value2161' => 2161, + 'value2162' => 2162, + 'value2163' => 2163, + 'value2164' => 2164, + 'value2165' => 2165, + 'value2166' => 2166, + 'value2167' => 2167, + 'value2168' => 2168, + 'value2169' => 2169, + 'value2170' => 2170, + 'value2171' => 2171, + 'value2172' => 2172, + 'value2173' => 2173, + 'value2174' => 2174, + 'value2175' => 2175, + 'value2176' => 2176, + 'value2177' => 2177, + 'value2178' => 2178, + 'value2179' => 2179, + 'value2180' => 2180, + 'value2181' => 2181, + 'value2182' => 2182, + 'value2183' => 2183, + 'value2184' => 2184, + 'value2185' => 2185, + 'value2186' => 2186, + 'value2187' => 2187, + 'value2188' => 2188, + 'value2189' => 2189, + 'value2190' => 2190, + 'value2191' => 2191, + 'value2192' => 2192, + 'value2193' => 2193, + 'value2194' => 2194, + 'value2195' => 2195, + 'value2196' => 2196, + 'value2197' => 2197, + 'value2198' => 2198, + 'value2199' => 2199, + 'value2200' => 2200, + 'value2201' => 2201, + 'value2202' => 2202, + 'value2203' => 2203, + 'value2204' => 2204, + 'value2205' => 2205, + 'value2206' => 2206, + 'value2207' => 2207, + 'value2208' => 2208, + 'value2209' => 2209, + 'value2210' => 2210, + 'value2211' => 2211, + 'value2212' => 2212, + 'value2213' => 2213, + 'value2214' => 2214, + 'value2215' => 2215, + 'value2216' => 2216, + 'value2217' => 2217, + 'value2218' => 2218, + 'value2219' => 2219, + 'value2220' => 2220, + 'value2221' => 2221, + 'value2222' => 2222, + 'value2223' => 2223, + 'value2224' => 2224, + 'value2225' => 2225, + 'value2226' => 2226, + 'value2227' => 2227, + 'value2228' => 2228, + 'value2229' => 2229, + 'value2230' => 2230, + 'value2231' => 2231, + 'value2232' => 2232, + 'value2233' => 2233, + 'value2234' => 2234, + 'value2235' => 2235, + 'value2236' => 2236, + 'value2237' => 2237, + 'value2238' => 2238, + 'value2239' => 2239, + 'value2240' => 2240, + 'value2241' => 2241, + 'value2242' => 2242, + 'value2243' => 2243, + 'value2244' => 2244, + 'value2245' => 2245, + 'value2246' => 2246, + 'value2247' => 2247, + 'value2248' => 2248, + 'value2249' => 2249, + 'value2250' => 2250, + 'value2251' => 2251, + 'value2252' => 2252, + 'value2253' => 2253, + 'value2254' => 2254, + 'value2255' => 2255, + 'value2256' => 2256, + 'value2257' => 2257, + 'value2258' => 2258, + 'value2259' => 2259, + 'value2260' => 2260, + 'value2261' => 2261, + 'value2262' => 2262, + 'value2263' => 2263, + 'value2264' => 2264, + 'value2265' => 2265, + 'value2266' => 2266, + 'value2267' => 2267, + 'value2268' => 2268, + 'value2269' => 2269, + 'value2270' => 2270, + 'value2271' => 2271, + 'value2272' => 2272, + 'value2273' => 2273, + 'value2274' => 2274, + 'value2275' => 2275, + 'value2276' => 2276, + 'value2277' => 2277, + 'value2278' => 2278, + 'value2279' => 2279, + 'value2280' => 2280, + 'value2281' => 2281, + 'value2282' => 2282, + 'value2283' => 2283, + 'value2284' => 2284, + 'value2285' => 2285, + 'value2286' => 2286, + 'value2287' => 2287, + 'value2288' => 2288, + 'value2289' => 2289, + 'value2290' => 2290, + 'value2291' => 2291, + 'value2292' => 2292, + 'value2293' => 2293, + 'value2294' => 2294, + 'value2295' => 2295, + 'value2296' => 2296, + 'value2297' => 2297, + 'value2298' => 2298, + 'value2299' => 2299, + 'value2300' => 2300, + 'value2301' => 2301, + 'value2302' => 2302, + 'value2303' => 2303, + 'value2304' => 2304, + 'value2305' => 2305, + 'value2306' => 2306, + 'value2307' => 2307, + 'value2308' => 2308, + 'value2309' => 2309, + 'value2310' => 2310, + 'value2311' => 2311, + 'value2312' => 2312, + 'value2313' => 2313, + 'value2314' => 2314, + 'value2315' => 2315, + 'value2316' => 2316, + 'value2317' => 2317, + 'value2318' => 2318, + 'value2319' => 2319, + 'value2320' => 2320, + 'value2321' => 2321, + 'value2322' => 2322, + 'value2323' => 2323, + 'value2324' => 2324, + 'value2325' => 2325, + 'value2326' => 2326, + 'value2327' => 2327, + 'value2328' => 2328, + 'value2329' => 2329, + 'value2330' => 2330, + 'value2331' => 2331, + 'value2332' => 2332, + 'value2333' => 2333, + 'value2334' => 2334, + 'value2335' => 2335, + 'value2336' => 2336, + 'value2337' => 2337, + 'value2338' => 2338, + 'value2339' => 2339, + 'value2340' => 2340, + 'value2341' => 2341, + 'value2342' => 2342, + 'value2343' => 2343, + 'value2344' => 2344, + 'value2345' => 2345, + 'value2346' => 2346, + 'value2347' => 2347, + 'value2348' => 2348, + 'value2349' => 2349, + 'value2350' => 2350, + 'value2351' => 2351, + 'value2352' => 2352, + 'value2353' => 2353, + 'value2354' => 2354, + 'value2355' => 2355, + 'value2356' => 2356, + 'value2357' => 2357, + 'value2358' => 2358, + 'value2359' => 2359, + 'value2360' => 2360, + 'value2361' => 2361, + 'value2362' => 2362, + 'value2363' => 2363, + 'value2364' => 2364, + 'value2365' => 2365, + 'value2366' => 2366, + 'value2367' => 2367, + 'value2368' => 2368, + 'value2369' => 2369, + 'value2370' => 2370, + 'value2371' => 2371, + 'value2372' => 2372, + 'value2373' => 2373, + 'value2374' => 2374, + 'value2375' => 2375, + 'value2376' => 2376, + 'value2377' => 2377, + 'value2378' => 2378, + 'value2379' => 2379, + 'value2380' => 2380, + 'value2381' => 2381, + 'value2382' => 2382, + 'value2383' => 2383, + 'value2384' => 2384, + 'value2385' => 2385, + 'value2386' => 2386, + 'value2387' => 2387, + 'value2388' => 2388, + 'value2389' => 2389, + 'value2390' => 2390, + 'value2391' => 2391, + 'value2392' => 2392, + 'value2393' => 2393, + 'value2394' => 2394, + 'value2395' => 2395, + 'value2396' => 2396, + 'value2397' => 2397, + 'value2398' => 2398, + 'value2399' => 2399, + 'value2400' => 2400, + 'value2401' => 2401, + 'value2402' => 2402, + 'value2403' => 2403, + 'value2404' => 2404, + 'value2405' => 2405, + 'value2406' => 2406, + 'value2407' => 2407, + 'value2408' => 2408, + 'value2409' => 2409, + 'value2410' => 2410, + 'value2411' => 2411, + 'value2412' => 2412, + 'value2413' => 2413, + 'value2414' => 2414, + 'value2415' => 2415, + 'value2416' => 2416, + 'value2417' => 2417, + 'value2418' => 2418, + 'value2419' => 2419, + 'value2420' => 2420, + 'value2421' => 2421, + 'value2422' => 2422, + 'value2423' => 2423, + 'value2424' => 2424, + 'value2425' => 2425, + 'value2426' => 2426, + 'value2427' => 2427, + 'value2428' => 2428, + 'value2429' => 2429, + 'value2430' => 2430, + 'value2431' => 2431, + 'value2432' => 2432, + 'value2433' => 2433, + 'value2434' => 2434, + 'value2435' => 2435, + 'value2436' => 2436, + 'value2437' => 2437, + 'value2438' => 2438, + 'value2439' => 2439, + 'value2440' => 2440, + 'value2441' => 2441, + 'value2442' => 2442, + 'value2443' => 2443, + 'value2444' => 2444, + 'value2445' => 2445, + 'value2446' => 2446, + 'value2447' => 2447, + 'value2448' => 2448, + 'value2449' => 2449, + 'value2450' => 2450, + 'value2451' => 2451, + 'value2452' => 2452, + 'value2453' => 2453, + 'value2454' => 2454, + 'value2455' => 2455, + 'value2456' => 2456, + 'value2457' => 2457, + 'value2458' => 2458, + 'value2459' => 2459, + 'value2460' => 2460, + 'value2461' => 2461, + 'value2462' => 2462, + 'value2463' => 2463, + 'value2464' => 2464, + 'value2465' => 2465, + 'value2466' => 2466, + 'value2467' => 2467, + 'value2468' => 2468, + 'value2469' => 2469, + 'value2470' => 2470, + 'value2471' => 2471, + 'value2472' => 2472, + 'value2473' => 2473, + 'value2474' => 2474, + 'value2475' => 2475, + 'value2476' => 2476, + 'value2477' => 2477, + 'value2478' => 2478, + 'value2479' => 2479, + 'value2480' => 2480, + 'value2481' => 2481, + 'value2482' => 2482, + 'value2483' => 2483, + 'value2484' => 2484, + 'value2485' => 2485, + 'value2486' => 2486, + 'value2487' => 2487, + 'value2488' => 2488, + 'value2489' => 2489, + 'value2490' => 2490, + 'value2491' => 2491, + 'value2492' => 2492, + 'value2493' => 2493, + 'value2494' => 2494, + 'value2495' => 2495, + 'value2496' => 2496, + 'value2497' => 2497, + 'value2498' => 2498, + 'value2499' => 2499, + 'value2500' => 2500, + 'value2501' => 2501, + 'value2502' => 2502, + 'value2503' => 2503, + 'value2504' => 2504, + 'value2505' => 2505, + 'value2506' => 2506, + 'value2507' => 2507, + 'value2508' => 2508, + 'value2509' => 2509, + 'value2510' => 2510, + 'value2511' => 2511, + 'value2512' => 2512, + 'value2513' => 2513, + 'value2514' => 2514, + 'value2515' => 2515, + 'value2516' => 2516, + 'value2517' => 2517, + 'value2518' => 2518, + 'value2519' => 2519, + 'value2520' => 2520, + 'value2521' => 2521, + 'value2522' => 2522, + 'value2523' => 2523, + 'value2524' => 2524, + 'value2525' => 2525, + 'value2526' => 2526, + 'value2527' => 2527, + 'value2528' => 2528, + 'value2529' => 2529, + 'value2530' => 2530, + 'value2531' => 2531, + 'value2532' => 2532, + 'value2533' => 2533, + 'value2534' => 2534, + 'value2535' => 2535, + 'value2536' => 2536, + 'value2537' => 2537, + 'value2538' => 2538, + 'value2539' => 2539, + 'value2540' => 2540, + 'value2541' => 2541, + 'value2542' => 2542, + 'value2543' => 2543, + 'value2544' => 2544, + 'value2545' => 2545, + 'value2546' => 2546, + 'value2547' => 2547, + 'value2548' => 2548, + 'value2549' => 2549, + 'value2550' => 2550, + 'value2551' => 2551, + 'value2552' => 2552, + 'value2553' => 2553, + 'value2554' => 2554, + 'value2555' => 2555, + 'value2556' => 2556, + 'value2557' => 2557, + 'value2558' => 2558, + 'value2559' => 2559, + 'value2560' => 2560, + 'value2561' => 2561, + 'value2562' => 2562, + 'value2563' => 2563, + 'value2564' => 2564, + 'value2565' => 2565, + 'value2566' => 2566, + 'value2567' => 2567, + 'value2568' => 2568, + 'value2569' => 2569, + 'value2570' => 2570, + 'value2571' => 2571, + 'value2572' => 2572, + 'value2573' => 2573, + 'value2574' => 2574, + 'value2575' => 2575, + 'value2576' => 2576, + 'value2577' => 2577, + 'value2578' => 2578, + 'value2579' => 2579, + 'value2580' => 2580, + 'value2581' => 2581, + 'value2582' => 2582, + 'value2583' => 2583, + 'value2584' => 2584, + 'value2585' => 2585, + 'value2586' => 2586, + 'value2587' => 2587, + 'value2588' => 2588, + 'value2589' => 2589, + 'value2590' => 2590, + 'value2591' => 2591, + 'value2592' => 2592, + 'value2593' => 2593, + 'value2594' => 2594, + 'value2595' => 2595, + 'value2596' => 2596, + 'value2597' => 2597, + 'value2598' => 2598, + 'value2599' => 2599, + 'value2600' => 2600, + 'value2601' => 2601, + 'value2602' => 2602, + 'value2603' => 2603, + 'value2604' => 2604, + 'value2605' => 2605, + 'value2606' => 2606, + 'value2607' => 2607, + 'value2608' => 2608, + 'value2609' => 2609, + 'value2610' => 2610, + 'value2611' => 2611, + 'value2612' => 2612, + 'value2613' => 2613, + 'value2614' => 2614, + 'value2615' => 2615, + 'value2616' => 2616, + 'value2617' => 2617, + 'value2618' => 2618, + 'value2619' => 2619, + 'value2620' => 2620, + 'value2621' => 2621, + 'value2622' => 2622, + 'value2623' => 2623, + 'value2624' => 2624, + 'value2625' => 2625, + 'value2626' => 2626, + 'value2627' => 2627, + 'value2628' => 2628, + 'value2629' => 2629, + 'value2630' => 2630, + 'value2631' => 2631, + 'value2632' => 2632, + 'value2633' => 2633, + 'value2634' => 2634, + 'value2635' => 2635, + 'value2636' => 2636, + 'value2637' => 2637, + 'value2638' => 2638, + 'value2639' => 2639, + 'value2640' => 2640, + 'value2641' => 2641, + 'value2642' => 2642, + 'value2643' => 2643, + 'value2644' => 2644, + 'value2645' => 2645, + 'value2646' => 2646, + 'value2647' => 2647, + 'value2648' => 2648, + 'value2649' => 2649, + 'value2650' => 2650, + 'value2651' => 2651, + 'value2652' => 2652, + 'value2653' => 2653, + 'value2654' => 2654, + 'value2655' => 2655, + 'value2656' => 2656, + 'value2657' => 2657, + 'value2658' => 2658, + 'value2659' => 2659, + 'value2660' => 2660, + 'value2661' => 2661, + 'value2662' => 2662, + 'value2663' => 2663, + 'value2664' => 2664, + 'value2665' => 2665, + 'value2666' => 2666, + 'value2667' => 2667, + 'value2668' => 2668, + 'value2669' => 2669, + 'value2670' => 2670, + 'value2671' => 2671, + 'value2672' => 2672, + 'value2673' => 2673, + 'value2674' => 2674, + 'value2675' => 2675, + 'value2676' => 2676, + 'value2677' => 2677, + 'value2678' => 2678, + 'value2679' => 2679, + 'value2680' => 2680, + 'value2681' => 2681, + 'value2682' => 2682, + 'value2683' => 2683, + 'value2684' => 2684, + 'value2685' => 2685, + 'value2686' => 2686, + 'value2687' => 2687, + 'value2688' => 2688, + 'value2689' => 2689, + 'value2690' => 2690, + 'value2691' => 2691, + 'value2692' => 2692, + 'value2693' => 2693, + 'value2694' => 2694, + 'value2695' => 2695, + 'value2696' => 2696, + 'value2697' => 2697, + 'value2698' => 2698, + 'value2699' => 2699, + 'value2700' => 2700, + 'value2701' => 2701, + 'value2702' => 2702, + 'value2703' => 2703, + 'value2704' => 2704, + 'value2705' => 2705, + 'value2706' => 2706, + 'value2707' => 2707, + 'value2708' => 2708, + 'value2709' => 2709, + 'value2710' => 2710, + 'value2711' => 2711, + 'value2712' => 2712, + 'value2713' => 2713, + 'value2714' => 2714, + 'value2715' => 2715, + 'value2716' => 2716, + 'value2717' => 2717, + 'value2718' => 2718, + 'value2719' => 2719, + 'value2720' => 2720, + 'value2721' => 2721, + 'value2722' => 2722, + 'value2723' => 2723, + 'value2724' => 2724, + 'value2725' => 2725, + 'value2726' => 2726, + 'value2727' => 2727, + 'value2728' => 2728, + 'value2729' => 2729, + 'value2730' => 2730, + 'value2731' => 2731, + 'value2732' => 2732, + 'value2733' => 2733, + 'value2734' => 2734, + 'value2735' => 2735, + 'value2736' => 2736, + 'value2737' => 2737, + 'value2738' => 2738, + 'value2739' => 2739, + 'value2740' => 2740, + 'value2741' => 2741, + 'value2742' => 2742, + 'value2743' => 2743, + 'value2744' => 2744, + 'value2745' => 2745, + 'value2746' => 2746, + 'value2747' => 2747, + 'value2748' => 2748, + 'value2749' => 2749, + 'value2750' => 2750, + 'value2751' => 2751, + 'value2752' => 2752, + 'value2753' => 2753, + 'value2754' => 2754, + 'value2755' => 2755, + 'value2756' => 2756, + 'value2757' => 2757, + 'value2758' => 2758, + 'value2759' => 2759, + 'value2760' => 2760, + 'value2761' => 2761, + 'value2762' => 2762, + 'value2763' => 2763, + 'value2764' => 2764, + 'value2765' => 2765, + 'value2766' => 2766, + 'value2767' => 2767, + 'value2768' => 2768, + 'value2769' => 2769, + 'value2770' => 2770, + 'value2771' => 2771, + 'value2772' => 2772, + 'value2773' => 2773, + 'value2774' => 2774, + 'value2775' => 2775, + 'value2776' => 2776, + 'value2777' => 2777, + 'value2778' => 2778, + 'value2779' => 2779, + 'value2780' => 2780, + 'value2781' => 2781, + 'value2782' => 2782, + 'value2783' => 2783, + 'value2784' => 2784, + 'value2785' => 2785, + 'value2786' => 2786, + 'value2787' => 2787, + 'value2788' => 2788, + 'value2789' => 2789, + 'value2790' => 2790, + 'value2791' => 2791, + 'value2792' => 2792, + 'value2793' => 2793, + 'value2794' => 2794, + 'value2795' => 2795, + 'value2796' => 2796, + 'value2797' => 2797, + 'value2798' => 2798, + 'value2799' => 2799, + 'value2800' => 2800, + 'value2801' => 2801, + 'value2802' => 2802, + 'value2803' => 2803, + 'value2804' => 2804, + 'value2805' => 2805, + 'value2806' => 2806, + 'value2807' => 2807, + 'value2808' => 2808, + 'value2809' => 2809, + 'value2810' => 2810, + 'value2811' => 2811, + 'value2812' => 2812, + 'value2813' => 2813, + 'value2814' => 2814, + 'value2815' => 2815, + 'value2816' => 2816, + 'value2817' => 2817, + 'value2818' => 2818, + 'value2819' => 2819, + 'value2820' => 2820, + 'value2821' => 2821, + 'value2822' => 2822, + 'value2823' => 2823, + 'value2824' => 2824, + 'value2825' => 2825, + 'value2826' => 2826, + 'value2827' => 2827, + 'value2828' => 2828, + 'value2829' => 2829, + 'value2830' => 2830, + 'value2831' => 2831, + 'value2832' => 2832, + 'value2833' => 2833, + 'value2834' => 2834, + 'value2835' => 2835, + 'value2836' => 2836, + 'value2837' => 2837, + 'value2838' => 2838, + 'value2839' => 2839, + 'value2840' => 2840, + 'value2841' => 2841, + 'value2842' => 2842, + 'value2843' => 2843, + 'value2844' => 2844, + 'value2845' => 2845, + 'value2846' => 2846, + 'value2847' => 2847, + 'value2848' => 2848, + 'value2849' => 2849, + 'value2850' => 2850, + 'value2851' => 2851, + 'value2852' => 2852, + 'value2853' => 2853, + 'value2854' => 2854, + 'value2855' => 2855, + 'value2856' => 2856, + 'value2857' => 2857, + 'value2858' => 2858, + 'value2859' => 2859, + 'value2860' => 2860, + 'value2861' => 2861, + 'value2862' => 2862, + 'value2863' => 2863, + 'value2864' => 2864, + 'value2865' => 2865, + 'value2866' => 2866, + 'value2867' => 2867, + 'value2868' => 2868, + 'value2869' => 2869, + 'value2870' => 2870, + 'value2871' => 2871, + 'value2872' => 2872, + 'value2873' => 2873, + 'value2874' => 2874, + 'value2875' => 2875, + 'value2876' => 2876, + 'value2877' => 2877, + 'value2878' => 2878, + 'value2879' => 2879, + 'value2880' => 2880, + 'value2881' => 2881, + 'value2882' => 2882, + 'value2883' => 2883, + 'value2884' => 2884, + 'value2885' => 2885, + 'value2886' => 2886, + 'value2887' => 2887, + 'value2888' => 2888, + 'value2889' => 2889, + 'value2890' => 2890, + 'value2891' => 2891, + 'value2892' => 2892, + 'value2893' => 2893, + 'value2894' => 2894, + 'value2895' => 2895, + 'value2896' => 2896, + 'value2897' => 2897, + 'value2898' => 2898, + 'value2899' => 2899, + 'value2900' => 2900, + 'value2901' => 2901, + 'value2902' => 2902, + 'value2903' => 2903, + 'value2904' => 2904, + 'value2905' => 2905, + 'value2906' => 2906, + 'value2907' => 2907, + 'value2908' => 2908, + 'value2909' => 2909, + 'value2910' => 2910, + 'value2911' => 2911, + 'value2912' => 2912, + 'value2913' => 2913, + 'value2914' => 2914, + 'value2915' => 2915, + 'value2916' => 2916, + 'value2917' => 2917, + 'value2918' => 2918, + 'value2919' => 2919, + 'value2920' => 2920, + 'value2921' => 2921, + 'value2922' => 2922, + 'value2923' => 2923, + 'value2924' => 2924, + 'value2925' => 2925, + 'value2926' => 2926, + 'value2927' => 2927, + 'value2928' => 2928, + 'value2929' => 2929, + 'value2930' => 2930, + 'value2931' => 2931, + 'value2932' => 2932, + 'value2933' => 2933, + 'value2934' => 2934, + 'value2935' => 2935, + 'value2936' => 2936, + 'value2937' => 2937, + 'value2938' => 2938, + 'value2939' => 2939, + 'value2940' => 2940, + 'value2941' => 2941, + 'value2942' => 2942, + 'value2943' => 2943, + 'value2944' => 2944, + 'value2945' => 2945, + 'value2946' => 2946, + 'value2947' => 2947, + 'value2948' => 2948, + 'value2949' => 2949, + 'value2950' => 2950, + 'value2951' => 2951, + 'value2952' => 2952, + 'value2953' => 2953, + 'value2954' => 2954, + 'value2955' => 2955, + 'value2956' => 2956, + 'value2957' => 2957, + 'value2958' => 2958, + 'value2959' => 2959, + 'value2960' => 2960, + 'value2961' => 2961, + 'value2962' => 2962, + 'value2963' => 2963, + 'value2964' => 2964, + 'value2965' => 2965, + 'value2966' => 2966, + 'value2967' => 2967, + 'value2968' => 2968, + 'value2969' => 2969, + 'value2970' => 2970, + 'value2971' => 2971, + 'value2972' => 2972, + 'value2973' => 2973, + 'value2974' => 2974, + 'value2975' => 2975, + 'value2976' => 2976, + 'value2977' => 2977, + 'value2978' => 2978, + 'value2979' => 2979, + 'value2980' => 2980, + 'value2981' => 2981, + 'value2982' => 2982, + 'value2983' => 2983, + 'value2984' => 2984, + 'value2985' => 2985, + 'value2986' => 2986, + 'value2987' => 2987, + 'value2988' => 2988, + 'value2989' => 2989, + 'value2990' => 2990, + 'value2991' => 2991, + 'value2992' => 2992, + 'value2993' => 2993, + 'value2994' => 2994, + 'value2995' => 2995, + 'value2996' => 2996, + 'value2997' => 2997, + 'value2998' => 2998, + 'value2999' => 2999, + 'value3000' => 3000, + 'value3001' => 3001, + 'value3002' => 3002, + 'value3003' => 3003, + 'value3004' => 3004, + 'value3005' => 3005, + 'value3006' => 3006, + 'value3007' => 3007, + 'value3008' => 3008, + 'value3009' => 3009, + 'value3010' => 3010, + 'value3011' => 3011, + 'value3012' => 3012, + 'value3013' => 3013, + 'value3014' => 3014, + 'value3015' => 3015, + 'value3016' => 3016, + 'value3017' => 3017, + 'value3018' => 3018, + 'value3019' => 3019, + 'value3020' => 3020, + 'value3021' => 3021, + 'value3022' => 3022, + 'value3023' => 3023, + 'value3024' => 3024, + 'value3025' => 3025, + 'value3026' => 3026, + 'value3027' => 3027, + 'value3028' => 3028, + 'value3029' => 3029, + 'value3030' => 3030, + 'value3031' => 3031, + 'value3032' => 3032, + 'value3033' => 3033, + 'value3034' => 3034, + 'value3035' => 3035, + 'value3036' => 3036, + 'value3037' => 3037, + 'value3038' => 3038, + 'value3039' => 3039, + 'value3040' => 3040, + 'value3041' => 3041, + 'value3042' => 3042, + 'value3043' => 3043, + 'value3044' => 3044, + 'value3045' => 3045, + 'value3046' => 3046, + 'value3047' => 3047, + 'value3048' => 3048, + 'value3049' => 3049, + 'value3050' => 3050, + 'value3051' => 3051, + 'value3052' => 3052, + 'value3053' => 3053, + 'value3054' => 3054, + 'value3055' => 3055, + 'value3056' => 3056, + 'value3057' => 3057, + 'value3058' => 3058, + 'value3059' => 3059, + 'value3060' => 3060, + 'value3061' => 3061, + 'value3062' => 3062, + 'value3063' => 3063, + 'value3064' => 3064, + 'value3065' => 3065, + 'value3066' => 3066, + 'value3067' => 3067, + 'value3068' => 3068, + 'value3069' => 3069, + 'value3070' => 3070, + 'value3071' => 3071, + 'value3072' => 3072, + 'value3073' => 3073, + 'value3074' => 3074, + 'value3075' => 3075, + 'value3076' => 3076, + 'value3077' => 3077, + 'value3078' => 3078, + 'value3079' => 3079, + 'value3080' => 3080, + 'value3081' => 3081, + 'value3082' => 3082, + 'value3083' => 3083, + 'value3084' => 3084, + 'value3085' => 3085, + 'value3086' => 3086, + 'value3087' => 3087, + 'value3088' => 3088, + 'value3089' => 3089, + 'value3090' => 3090, + 'value3091' => 3091, + 'value3092' => 3092, + 'value3093' => 3093, + 'value3094' => 3094, + 'value3095' => 3095, + 'value3096' => 3096, + 'value3097' => 3097, + 'value3098' => 3098, + 'value3099' => 3099, + 'value3100' => 3100, + 'value3101' => 3101, + 'value3102' => 3102, + 'value3103' => 3103, + 'value3104' => 3104, + 'value3105' => 3105, + 'value3106' => 3106, + 'value3107' => 3107, + 'value3108' => 3108, + 'value3109' => 3109, + 'value3110' => 3110, + 'value3111' => 3111, + 'value3112' => 3112, + 'value3113' => 3113, + 'value3114' => 3114, + 'value3115' => 3115, + 'value3116' => 3116, + 'value3117' => 3117, + 'value3118' => 3118, + 'value3119' => 3119, + 'value3120' => 3120, + 'value3121' => 3121, + 'value3122' => 3122, + 'value3123' => 3123, + 'value3124' => 3124, + 'value3125' => 3125, + 'value3126' => 3126, + 'value3127' => 3127, + 'value3128' => 3128, + 'value3129' => 3129, + 'value3130' => 3130, + 'value3131' => 3131, + 'value3132' => 3132, + 'value3133' => 3133, + 'value3134' => 3134, + 'value3135' => 3135, + 'value3136' => 3136, + 'value3137' => 3137, + 'value3138' => 3138, + 'value3139' => 3139, + 'value3140' => 3140, + 'value3141' => 3141, + 'value3142' => 3142, + 'value3143' => 3143, + 'value3144' => 3144, + 'value3145' => 3145, + 'value3146' => 3146, + 'value3147' => 3147, + 'value3148' => 3148, + 'value3149' => 3149, + 'value3150' => 3150, + 'value3151' => 3151, + 'value3152' => 3152, + 'value3153' => 3153, + 'value3154' => 3154, + 'value3155' => 3155, + 'value3156' => 3156, + 'value3157' => 3157, + 'value3158' => 3158, + 'value3159' => 3159, + 'value3160' => 3160, + 'value3161' => 3161, + 'value3162' => 3162, + 'value3163' => 3163, + 'value3164' => 3164, + 'value3165' => 3165, + 'value3166' => 3166, + 'value3167' => 3167, + 'value3168' => 3168, + 'value3169' => 3169, + 'value3170' => 3170, + 'value3171' => 3171, + 'value3172' => 3172, + 'value3173' => 3173, + 'value3174' => 3174, + 'value3175' => 3175, + 'value3176' => 3176, + 'value3177' => 3177, + 'value3178' => 3178, + 'value3179' => 3179, + 'value3180' => 3180, + 'value3181' => 3181, + 'value3182' => 3182, + 'value3183' => 3183, + 'value3184' => 3184, + 'value3185' => 3185, + 'value3186' => 3186, + 'value3187' => 3187, + 'value3188' => 3188, + 'value3189' => 3189, + 'value3190' => 3190, + 'value3191' => 3191, + 'value3192' => 3192, + 'value3193' => 3193, + 'value3194' => 3194, + 'value3195' => 3195, + 'value3196' => 3196, + 'value3197' => 3197, + 'value3198' => 3198, + 'value3199' => 3199, + 'value3200' => 3200, + 'value3201' => 3201, + 'value3202' => 3202, + 'value3203' => 3203, + 'value3204' => 3204, + 'value3205' => 3205, + 'value3206' => 3206, + 'value3207' => 3207, + 'value3208' => 3208, + 'value3209' => 3209, + 'value3210' => 3210, + 'value3211' => 3211, + 'value3212' => 3212, + 'value3213' => 3213, + 'value3214' => 3214, + 'value3215' => 3215, + 'value3216' => 3216, + 'value3217' => 3217, + 'value3218' => 3218, + 'value3219' => 3219, + 'value3220' => 3220, + 'value3221' => 3221, + 'value3222' => 3222, + 'value3223' => 3223, + 'value3224' => 3224, + 'value3225' => 3225, + 'value3226' => 3226, + 'value3227' => 3227, + 'value3228' => 3228, + 'value3229' => 3229, + 'value3230' => 3230, + 'value3231' => 3231, + 'value3232' => 3232, + 'value3233' => 3233, + 'value3234' => 3234, + 'value3235' => 3235, + 'value3236' => 3236, + 'value3237' => 3237, + 'value3238' => 3238, + 'value3239' => 3239, + 'value3240' => 3240, + 'value3241' => 3241, + 'value3242' => 3242, + 'value3243' => 3243, + 'value3244' => 3244, + 'value3245' => 3245, + 'value3246' => 3246, + 'value3247' => 3247, + 'value3248' => 3248, + 'value3249' => 3249, + 'value3250' => 3250, + 'value3251' => 3251, + 'value3252' => 3252, + 'value3253' => 3253, + 'value3254' => 3254, + 'value3255' => 3255, + 'value3256' => 3256, + 'value3257' => 3257, + 'value3258' => 3258, + 'value3259' => 3259, + 'value3260' => 3260, + 'value3261' => 3261, + 'value3262' => 3262, + 'value3263' => 3263, + 'value3264' => 3264, + 'value3265' => 3265, + 'value3266' => 3266, + 'value3267' => 3267, + 'value3268' => 3268, + 'value3269' => 3269, + 'value3270' => 3270, + 'value3271' => 3271, + 'value3272' => 3272, + 'value3273' => 3273, + 'value3274' => 3274, + 'value3275' => 3275, + 'value3276' => 3276, + 'value3277' => 3277, + 'value3278' => 3278, + 'value3279' => 3279, + 'value3280' => 3280, + 'value3281' => 3281, + 'value3282' => 3282, + 'value3283' => 3283, + 'value3284' => 3284, + 'value3285' => 3285, + 'value3286' => 3286, + 'value3287' => 3287, + 'value3288' => 3288, + 'value3289' => 3289, + 'value3290' => 3290, + 'value3291' => 3291, + 'value3292' => 3292, + 'value3293' => 3293, + 'value3294' => 3294, + 'value3295' => 3295, + 'value3296' => 3296, + 'value3297' => 3297, + 'value3298' => 3298, + 'value3299' => 3299, + 'value3300' => 3300, + 'value3301' => 3301, + 'value3302' => 3302, + 'value3303' => 3303, + 'value3304' => 3304, + 'value3305' => 3305, + 'value3306' => 3306, + 'value3307' => 3307, + 'value3308' => 3308, + 'value3309' => 3309, + 'value3310' => 3310, + 'value3311' => 3311, + 'value3312' => 3312, + 'value3313' => 3313, + 'value3314' => 3314, + 'value3315' => 3315, + 'value3316' => 3316, + 'value3317' => 3317, + 'value3318' => 3318, + 'value3319' => 3319, + 'value3320' => 3320, + 'value3321' => 3321, + 'value3322' => 3322, + 'value3323' => 3323, + 'value3324' => 3324, + 'value3325' => 3325, + 'value3326' => 3326, + 'value3327' => 3327, + 'value3328' => 3328, + 'value3329' => 3329, + 'value3330' => 3330, + 'value3331' => 3331, + 'value3332' => 3332, + 'value3333' => 3333, + 'value3334' => 3334, + 'value3335' => 3335, + 'value3336' => 3336, + 'value3337' => 3337, + 'value3338' => 3338, + 'value3339' => 3339, + 'value3340' => 3340, + 'value3341' => 3341, + 'value3342' => 3342, + 'value3343' => 3343, + 'value3344' => 3344, + 'value3345' => 3345, + 'value3346' => 3346, + 'value3347' => 3347, + 'value3348' => 3348, + 'value3349' => 3349, + 'value3350' => 3350, + 'value3351' => 3351, + 'value3352' => 3352, + 'value3353' => 3353, + 'value3354' => 3354, + 'value3355' => 3355, + 'value3356' => 3356, + 'value3357' => 3357, + 'value3358' => 3358, + 'value3359' => 3359, + 'value3360' => 3360, + 'value3361' => 3361, + 'value3362' => 3362, + 'value3363' => 3363, + 'value3364' => 3364, + 'value3365' => 3365, + 'value3366' => 3366, + 'value3367' => 3367, + 'value3368' => 3368, + 'value3369' => 3369, + 'value3370' => 3370, + 'value3371' => 3371, + 'value3372' => 3372, + 'value3373' => 3373, + 'value3374' => 3374, + 'value3375' => 3375, + 'value3376' => 3376, + 'value3377' => 3377, + 'value3378' => 3378, + 'value3379' => 3379, + 'value3380' => 3380, + 'value3381' => 3381, + 'value3382' => 3382, + 'value3383' => 3383, + 'value3384' => 3384, + 'value3385' => 3385, + 'value3386' => 3386, + 'value3387' => 3387, + 'value3388' => 3388, + 'value3389' => 3389, + 'value3390' => 3390, + 'value3391' => 3391, + 'value3392' => 3392, + 'value3393' => 3393, + 'value3394' => 3394, + 'value3395' => 3395, + 'value3396' => 3396, + 'value3397' => 3397, + 'value3398' => 3398, + 'value3399' => 3399, + 'value3400' => 3400, + 'value3401' => 3401, + 'value3402' => 3402, + 'value3403' => 3403, + 'value3404' => 3404, + 'value3405' => 3405, + 'value3406' => 3406, + 'value3407' => 3407, + 'value3408' => 3408, + 'value3409' => 3409, + 'value3410' => 3410, + 'value3411' => 3411, + 'value3412' => 3412, + 'value3413' => 3413, + 'value3414' => 3414, + 'value3415' => 3415, + 'value3416' => 3416, + 'value3417' => 3417, + 'value3418' => 3418, + 'value3419' => 3419, + 'value3420' => 3420, + 'value3421' => 3421, + 'value3422' => 3422, + 'value3423' => 3423, + 'value3424' => 3424, + 'value3425' => 3425, + 'value3426' => 3426, + 'value3427' => 3427, + 'value3428' => 3428, + 'value3429' => 3429, + 'value3430' => 3430, + 'value3431' => 3431, + 'value3432' => 3432, + 'value3433' => 3433, + 'value3434' => 3434, + 'value3435' => 3435, + 'value3436' => 3436, + 'value3437' => 3437, + 'value3438' => 3438, + 'value3439' => 3439, + 'value3440' => 3440, + 'value3441' => 3441, + 'value3442' => 3442, + 'value3443' => 3443, + 'value3444' => 3444, + 'value3445' => 3445, + 'value3446' => 3446, + 'value3447' => 3447, + 'value3448' => 3448, + 'value3449' => 3449, + 'value3450' => 3450, + 'value3451' => 3451, + 'value3452' => 3452, + 'value3453' => 3453, + 'value3454' => 3454, + 'value3455' => 3455, + 'value3456' => 3456, + 'value3457' => 3457, + 'value3458' => 3458, + 'value3459' => 3459, + 'value3460' => 3460, + 'value3461' => 3461, + 'value3462' => 3462, + 'value3463' => 3463, + 'value3464' => 3464, + 'value3465' => 3465, + 'value3466' => 3466, + 'value3467' => 3467, + 'value3468' => 3468, + 'value3469' => 3469, + 'value3470' => 3470, + 'value3471' => 3471, + 'value3472' => 3472, + 'value3473' => 3473, + 'value3474' => 3474, + 'value3475' => 3475, + 'value3476' => 3476, + 'value3477' => 3477, + 'value3478' => 3478, + 'value3479' => 3479, + 'value3480' => 3480, + 'value3481' => 3481, + 'value3482' => 3482, + 'value3483' => 3483, + 'value3484' => 3484, + 'value3485' => 3485, + 'value3486' => 3486, + 'value3487' => 3487, + 'value3488' => 3488, + 'value3489' => 3489, + 'value3490' => 3490, + 'value3491' => 3491, + 'value3492' => 3492, + 'value3493' => 3493, + 'value3494' => 3494, + 'value3495' => 3495, + 'value3496' => 3496, + 'value3497' => 3497, + 'value3498' => 3498, + 'value3499' => 3499, + 'value3500' => 3500, + 'value3501' => 3501, + 'value3502' => 3502, + 'value3503' => 3503, + 'value3504' => 3504, + 'value3505' => 3505, + 'value3506' => 3506, + 'value3507' => 3507, + 'value3508' => 3508, + 'value3509' => 3509, + 'value3510' => 3510, + 'value3511' => 3511, + 'value3512' => 3512, + 'value3513' => 3513, + 'value3514' => 3514, + 'value3515' => 3515, + 'value3516' => 3516, + 'value3517' => 3517, + 'value3518' => 3518, + 'value3519' => 3519, + 'value3520' => 3520, + 'value3521' => 3521, + 'value3522' => 3522, + 'value3523' => 3523, + 'value3524' => 3524, + 'value3525' => 3525, + 'value3526' => 3526, + 'value3527' => 3527, + 'value3528' => 3528, + 'value3529' => 3529, + 'value3530' => 3530, + 'value3531' => 3531, + 'value3532' => 3532, + 'value3533' => 3533, + 'value3534' => 3534, + 'value3535' => 3535, + 'value3536' => 3536, + 'value3537' => 3537, + 'value3538' => 3538, + 'value3539' => 3539, + 'value3540' => 3540, + 'value3541' => 3541, + 'value3542' => 3542, + 'value3543' => 3543, + 'value3544' => 3544, + 'value3545' => 3545, + 'value3546' => 3546, + 'value3547' => 3547, + 'value3548' => 3548, + 'value3549' => 3549, + 'value3550' => 3550, + 'value3551' => 3551, + 'value3552' => 3552, + 'value3553' => 3553, + 'value3554' => 3554, + 'value3555' => 3555, + 'value3556' => 3556, + 'value3557' => 3557, + 'value3558' => 3558, + 'value3559' => 3559, + 'value3560' => 3560, + 'value3561' => 3561, + 'value3562' => 3562, + 'value3563' => 3563, + 'value3564' => 3564, + 'value3565' => 3565, + 'value3566' => 3566, + 'value3567' => 3567, + 'value3568' => 3568, + 'value3569' => 3569, + 'value3570' => 3570, + 'value3571' => 3571, + 'value3572' => 3572, + 'value3573' => 3573, + 'value3574' => 3574, + 'value3575' => 3575, + 'value3576' => 3576, + 'value3577' => 3577, + 'value3578' => 3578, + 'value3579' => 3579, + 'value3580' => 3580, + 'value3581' => 3581, + 'value3582' => 3582, + 'value3583' => 3583, + 'value3584' => 3584, + 'value3585' => 3585, + 'value3586' => 3586, + 'value3587' => 3587, + 'value3588' => 3588, + 'value3589' => 3589, + 'value3590' => 3590, + 'value3591' => 3591, + 'value3592' => 3592, + 'value3593' => 3593, + 'value3594' => 3594, + 'value3595' => 3595, + 'value3596' => 3596, + 'value3597' => 3597, + 'value3598' => 3598, + 'value3599' => 3599, + 'value3600' => 3600, + 'value3601' => 3601, + 'value3602' => 3602, + 'value3603' => 3603, + 'value3604' => 3604, + 'value3605' => 3605, + 'value3606' => 3606, + 'value3607' => 3607, + 'value3608' => 3608, + 'value3609' => 3609, + 'value3610' => 3610, + 'value3611' => 3611, + 'value3612' => 3612, + 'value3613' => 3613, + 'value3614' => 3614, + 'value3615' => 3615, + 'value3616' => 3616, + 'value3617' => 3617, + 'value3618' => 3618, + 'value3619' => 3619, + 'value3620' => 3620, + 'value3621' => 3621, + 'value3622' => 3622, + 'value3623' => 3623, + 'value3624' => 3624, + 'value3625' => 3625, + 'value3626' => 3626, + 'value3627' => 3627, + 'value3628' => 3628, + 'value3629' => 3629, + 'value3630' => 3630, + 'value3631' => 3631, + 'value3632' => 3632, + 'value3633' => 3633, + 'value3634' => 3634, + 'value3635' => 3635, + 'value3636' => 3636, + 'value3637' => 3637, + 'value3638' => 3638, + 'value3639' => 3639, + 'value3640' => 3640, + 'value3641' => 3641, + 'value3642' => 3642, + 'value3643' => 3643, + 'value3644' => 3644, + 'value3645' => 3645, + 'value3646' => 3646, + 'value3647' => 3647, + 'value3648' => 3648, + 'value3649' => 3649, + 'value3650' => 3650, + 'value3651' => 3651, + 'value3652' => 3652, + 'value3653' => 3653, + 'value3654' => 3654, + 'value3655' => 3655, + 'value3656' => 3656, + 'value3657' => 3657, + 'value3658' => 3658, + 'value3659' => 3659, + 'value3660' => 3660, + 'value3661' => 3661, + 'value3662' => 3662, + 'value3663' => 3663, + 'value3664' => 3664, + 'value3665' => 3665, + 'value3666' => 3666, + 'value3667' => 3667, + 'value3668' => 3668, + 'value3669' => 3669, + 'value3670' => 3670, + 'value3671' => 3671, + 'value3672' => 3672, + 'value3673' => 3673, + 'value3674' => 3674, + 'value3675' => 3675, + 'value3676' => 3676, + 'value3677' => 3677, + 'value3678' => 3678, + 'value3679' => 3679, + 'value3680' => 3680, + 'value3681' => 3681, + 'value3682' => 3682, + 'value3683' => 3683, + 'value3684' => 3684, + 'value3685' => 3685, + 'value3686' => 3686, + 'value3687' => 3687, + 'value3688' => 3688, + 'value3689' => 3689, + 'value3690' => 3690, + 'value3691' => 3691, + 'value3692' => 3692, + 'value3693' => 3693, + 'value3694' => 3694, + 'value3695' => 3695, + 'value3696' => 3696, + 'value3697' => 3697, + 'value3698' => 3698, + 'value3699' => 3699, + 'value3700' => 3700, + 'value3701' => 3701, + 'value3702' => 3702, + 'value3703' => 3703, + 'value3704' => 3704, + 'value3705' => 3705, + 'value3706' => 3706, + 'value3707' => 3707, + 'value3708' => 3708, + 'value3709' => 3709, + 'value3710' => 3710, + 'value3711' => 3711, + 'value3712' => 3712, + 'value3713' => 3713, + 'value3714' => 3714, + 'value3715' => 3715, + 'value3716' => 3716, + 'value3717' => 3717, + 'value3718' => 3718, + 'value3719' => 3719, + 'value3720' => 3720, + 'value3721' => 3721, + 'value3722' => 3722, + 'value3723' => 3723, + 'value3724' => 3724, + 'value3725' => 3725, + 'value3726' => 3726, + 'value3727' => 3727, + 'value3728' => 3728, + 'value3729' => 3729, + 'value3730' => 3730, + 'value3731' => 3731, + 'value3732' => 3732, + 'value3733' => 3733, + 'value3734' => 3734, + 'value3735' => 3735, + 'value3736' => 3736, + 'value3737' => 3737, + 'value3738' => 3738, + 'value3739' => 3739, + 'value3740' => 3740, + 'value3741' => 3741, + 'value3742' => 3742, + 'value3743' => 3743, + 'value3744' => 3744, + 'value3745' => 3745, + 'value3746' => 3746, + 'value3747' => 3747, + 'value3748' => 3748, + 'value3749' => 3749, + 'value3750' => 3750, + 'value3751' => 3751, + 'value3752' => 3752, + 'value3753' => 3753, + 'value3754' => 3754, + 'value3755' => 3755, + 'value3756' => 3756, + 'value3757' => 3757, + 'value3758' => 3758, + 'value3759' => 3759, + 'value3760' => 3760, + 'value3761' => 3761, + 'value3762' => 3762, + 'value3763' => 3763, + 'value3764' => 3764, + 'value3765' => 3765, + 'value3766' => 3766, + 'value3767' => 3767, + 'value3768' => 3768, + 'value3769' => 3769, + 'value3770' => 3770, + 'value3771' => 3771, + 'value3772' => 3772, + 'value3773' => 3773, + 'value3774' => 3774, + 'value3775' => 3775, + 'value3776' => 3776, + 'value3777' => 3777, + 'value3778' => 3778, + 'value3779' => 3779, + 'value3780' => 3780, + 'value3781' => 3781, + 'value3782' => 3782, + 'value3783' => 3783, + 'value3784' => 3784, + 'value3785' => 3785, + 'value3786' => 3786, + 'value3787' => 3787, + 'value3788' => 3788, + 'value3789' => 3789, + 'value3790' => 3790, + 'value3791' => 3791, + 'value3792' => 3792, + 'value3793' => 3793, + 'value3794' => 3794, + 'value3795' => 3795, + 'value3796' => 3796, + 'value3797' => 3797, + 'value3798' => 3798, + 'value3799' => 3799, + 'value3800' => 3800, + 'value3801' => 3801, + 'value3802' => 3802, + 'value3803' => 3803, + 'value3804' => 3804, + 'value3805' => 3805, + 'value3806' => 3806, + 'value3807' => 3807, + 'value3808' => 3808, + 'value3809' => 3809, + 'value3810' => 3810, + 'value3811' => 3811, + 'value3812' => 3812, + 'value3813' => 3813, + 'value3814' => 3814, + 'value3815' => 3815, + 'value3816' => 3816, + 'value3817' => 3817, + 'value3818' => 3818, + 'value3819' => 3819, + 'value3820' => 3820, + 'value3821' => 3821, + 'value3822' => 3822, + 'value3823' => 3823, + 'value3824' => 3824, + 'value3825' => 3825, + 'value3826' => 3826, + 'value3827' => 3827, + 'value3828' => 3828, + 'value3829' => 3829, + 'value3830' => 3830, + 'value3831' => 3831, + 'value3832' => 3832, + 'value3833' => 3833, + 'value3834' => 3834, + 'value3835' => 3835, + 'value3836' => 3836, + 'value3837' => 3837, + 'value3838' => 3838, + 'value3839' => 3839, + 'value3840' => 3840, + 'value3841' => 3841, + 'value3842' => 3842, + 'value3843' => 3843, + 'value3844' => 3844, + 'value3845' => 3845, + 'value3846' => 3846, + 'value3847' => 3847, + 'value3848' => 3848, + 'value3849' => 3849, + 'value3850' => 3850, + 'value3851' => 3851, + 'value3852' => 3852, + 'value3853' => 3853, + 'value3854' => 3854, + 'value3855' => 3855, + 'value3856' => 3856, + 'value3857' => 3857, + 'value3858' => 3858, + 'value3859' => 3859, + 'value3860' => 3860, + 'value3861' => 3861, + 'value3862' => 3862, + 'value3863' => 3863, + 'value3864' => 3864, + 'value3865' => 3865, + 'value3866' => 3866, + 'value3867' => 3867, + 'value3868' => 3868, + 'value3869' => 3869, + 'value3870' => 3870, + 'value3871' => 3871, + 'value3872' => 3872, + 'value3873' => 3873, + 'value3874' => 3874, + 'value3875' => 3875, + 'value3876' => 3876, + 'value3877' => 3877, + 'value3878' => 3878, + 'value3879' => 3879, + 'value3880' => 3880, + 'value3881' => 3881, + 'value3882' => 3882, + 'value3883' => 3883, + 'value3884' => 3884, + 'value3885' => 3885, + 'value3886' => 3886, + 'value3887' => 3887, + 'value3888' => 3888, + 'value3889' => 3889, + 'value3890' => 3890, + 'value3891' => 3891, + 'value3892' => 3892, + 'value3893' => 3893, + 'value3894' => 3894, + 'value3895' => 3895, + 'value3896' => 3896, + 'value3897' => 3897, + 'value3898' => 3898, + 'value3899' => 3899, + 'value3900' => 3900, + 'value3901' => 3901, + 'value3902' => 3902, + 'value3903' => 3903, + 'value3904' => 3904, + 'value3905' => 3905, + 'value3906' => 3906, + 'value3907' => 3907, + 'value3908' => 3908, + 'value3909' => 3909, + 'value3910' => 3910, + 'value3911' => 3911, + 'value3912' => 3912, + 'value3913' => 3913, + 'value3914' => 3914, + 'value3915' => 3915, + 'value3916' => 3916, + 'value3917' => 3917, + 'value3918' => 3918, + 'value3919' => 3919, + 'value3920' => 3920, + 'value3921' => 3921, + 'value3922' => 3922, + 'value3923' => 3923, + 'value3924' => 3924, + 'value3925' => 3925, + 'value3926' => 3926, + 'value3927' => 3927, + 'value3928' => 3928, + 'value3929' => 3929, + 'value3930' => 3930, + 'value3931' => 3931, + 'value3932' => 3932, + 'value3933' => 3933, + 'value3934' => 3934, + 'value3935' => 3935, + 'value3936' => 3936, + 'value3937' => 3937, + 'value3938' => 3938, + 'value3939' => 3939, + 'value3940' => 3940, + 'value3941' => 3941, + 'value3942' => 3942, + 'value3943' => 3943, + 'value3944' => 3944, + 'value3945' => 3945, + 'value3946' => 3946, + 'value3947' => 3947, + 'value3948' => 3948, + 'value3949' => 3949, + 'value3950' => 3950, + 'value3951' => 3951, + 'value3952' => 3952, + 'value3953' => 3953, + 'value3954' => 3954, + 'value3955' => 3955, + 'value3956' => 3956, + 'value3957' => 3957, + 'value3958' => 3958, + 'value3959' => 3959, + 'value3960' => 3960, + 'value3961' => 3961, + 'value3962' => 3962, + 'value3963' => 3963, + 'value3964' => 3964, + 'value3965' => 3965, + 'value3966' => 3966, + 'value3967' => 3967, + 'value3968' => 3968, + 'value3969' => 3969, + 'value3970' => 3970, + 'value3971' => 3971, + 'value3972' => 3972, + 'value3973' => 3973, + 'value3974' => 3974, + 'value3975' => 3975, + 'value3976' => 3976, + 'value3977' => 3977, + 'value3978' => 3978, + 'value3979' => 3979, + 'value3980' => 3980, + 'value3981' => 3981, + 'value3982' => 3982, + 'value3983' => 3983, + 'value3984' => 3984, + 'value3985' => 3985, + 'value3986' => 3986, + 'value3987' => 3987, + 'value3988' => 3988, + 'value3989' => 3989, + 'value3990' => 3990, + 'value3991' => 3991, + 'value3992' => 3992, + 'value3993' => 3993, + 'value3994' => 3994, + 'value3995' => 3995, + 'value3996' => 3996, + 'value3997' => 3997, + 'value3998' => 3998, + 'value3999' => 3999, + ]; + + public function getIdForReference(string $name): int + { + return self::HUGE_MAP[$name] ?? throw new RuntimeException('not found'); + } + + public function getReferenceForId(int $id): string + { + return array_search($id, self::HUGE_MAP, true) ?: throw new RuntimeException('not found'); + } +} diff --git a/tests/PHPStan/Analyser/data/bug-8215.php b/tests/PHPStan/Analyser/data/bug-8215.php new file mode 100644 index 00000000000..3cecf0ce1f4 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-8215.php @@ -0,0 +1,13012 @@ + 10001, + 2 => 10002, + 3 => 10003, + 4 => 10004, + 5 => 10005, + 6 => 10006, + 7 => 10007, + 8 => 10008, + 9 => 10009, + 10 => 10010, + 11 => 10011, + 12 => 10012, + 13 => 10013, + 14 => 10014, + 15 => 10015, + 16 => 10016, + 17 => 10017, + 18 => 10018, + 19 => 10019, + 20 => 10020, + 21 => 10021, + 22 => 10022, + 23 => 10023, + 24 => 10024, + 25 => 10025, + 26 => 10026, + 27 => 10027, + 28 => 10028, + 29 => 10029, + 30 => 10030, + 31 => 10031, + 32 => 10032, + 33 => 10033, + 34 => 10034, + 35 => 10035, + 36 => 10036, + 37 => 10037, + 38 => 10038, + 39 => 10039, + 40 => 10040, + 41 => 10041, + 42 => 10042, + 43 => 10043, + 44 => 10044, + 45 => 10045, + 46 => 10046, + 47 => 10047, + 48 => 10048, + 49 => 10049, + 50 => 10050, + 51 => 10051, + 52 => 10052, + 53 => 10053, + 54 => 10054, + 55 => 10055, + 56 => 10056, + 57 => 10057, + 58 => 10058, + 59 => 10059, + 60 => 10060, + 61 => 10061, + 62 => 10062, + 63 => 10063, + 64 => 10064, + 65 => 10065, + 66 => 10066, + 67 => 10067, + 68 => 10068, + 69 => 10069, + 70 => 10070, + 71 => 10071, + 72 => 10072, + 73 => 10073, + 74 => 10074, + 75 => 10075, + 76 => 10076, + 77 => 10077, + 78 => 10078, + 79 => 10079, + 80 => 10080, + 81 => 10081, + 82 => 10082, + 83 => 10083, + 84 => 10084, + 85 => 10085, + 86 => 10086, + 87 => 10087, + 88 => 10088, + 89 => 10089, + 90 => 10090, + 91 => 10091, + 92 => 10092, + 93 => 10093, + 94 => 10094, + 95 => 10095, + 96 => 10096, + 97 => 10097, + 98 => 10098, + 99 => 10099, + 100 => 10100, + 101 => 10101, + 102 => 10102, + 103 => 10103, + 104 => 10104, + 105 => 10105, + 106 => 10106, + 107 => 10107, + 108 => 10108, + 109 => 10109, + 110 => 10110, + 111 => 10111, + 112 => 10112, + 113 => 10113, + 114 => 10114, + 115 => 10115, + 116 => 10116, + 117 => 10117, + 118 => 10118, + 119 => 10119, + 120 => 10120, + 121 => 10121, + 122 => 10122, + 123 => 10123, + 124 => 10124, + 125 => 10125, + 126 => 10126, + 127 => 10127, + 128 => 10128, + 129 => 10129, + 130 => 10130, + 131 => 10131, + 132 => 10132, + 133 => 10133, + 134 => 10134, + 135 => 10135, + 136 => 10136, + 137 => 10137, + 138 => 10138, + 139 => 10139, + 140 => 10140, + 141 => 10141, + 142 => 10142, + 143 => 10143, + 144 => 10144, + 145 => 10145, + 146 => 10146, + 147 => 10147, + 148 => 10148, + 149 => 10149, + 150 => 10150, + 151 => 10151, + 152 => 10152, + 153 => 10153, + 154 => 10154, + 155 => 10155, + 156 => 10156, + 157 => 10157, + 158 => 10158, + 159 => 10159, + 160 => 10160, + 161 => 10161, + 162 => 10162, + 163 => 10163, + 164 => 10164, + 165 => 10165, + 166 => 10166, + 167 => 10167, + 168 => 10168, + 169 => 10169, + 170 => 10170, + 171 => 10171, + 172 => 10172, + 173 => 10173, + 174 => 10174, + 175 => 10175, + 176 => 10176, + 177 => 10177, + 178 => 10178, + 179 => 10179, + 180 => 10180, + 181 => 10181, + 182 => 10182, + 183 => 10183, + 184 => 10184, + 185 => 10185, + 186 => 10186, + 187 => 10187, + 188 => 10188, + 189 => 10189, + 190 => 10190, + 191 => 10191, + 192 => 10192, + 193 => 10193, + 194 => 10194, + 195 => 10195, + 196 => 10196, + 197 => 10197, + 198 => 10198, + 199 => 10199, + 200 => 10200, + 201 => 10201, + 202 => 10202, + 203 => 10203, + 204 => 10204, + 205 => 10205, + 206 => 10206, + 207 => 10207, + 208 => 10208, + 209 => 10209, + 210 => 10210, + 211 => 10211, + 212 => 10212, + 213 => 10213, + 214 => 10214, + 215 => 10215, + 216 => 10216, + 217 => 10217, + 218 => 10218, + 219 => 10219, + 220 => 10220, + 221 => 10221, + 222 => 10222, + 223 => 10223, + 224 => 10224, + 225 => 10225, + 226 => 10226, + 227 => 10227, + 228 => 10228, + 229 => 10229, + 230 => 10230, + 231 => 10231, + 232 => 10232, + 233 => 10233, + 234 => 10234, + 235 => 10235, + 236 => 10236, + 237 => 10237, + 238 => 10238, + 239 => 10239, + 240 => 10240, + 241 => 10241, + 242 => 10242, + 243 => 10243, + 244 => 10244, + 245 => 10245, + 246 => 10246, + 247 => 10247, + 248 => 10248, + 249 => 10249, + 250 => 10250, + 251 => 10251, + 252 => 10252, + 253 => 10253, + 254 => 10254, + 255 => 10255, + 256 => 10256, + 257 => 10257, + 258 => 10258, + 259 => 10259, + 260 => 10260, + 261 => 10261, + 262 => 10262, + 263 => 10263, + 264 => 10264, + 265 => 10265, + 266 => 10266, + 267 => 10267, + 268 => 10268, + 269 => 10269, + 270 => 10270, + 271 => 10271, + 272 => 10272, + 273 => 10273, + 274 => 10274, + 275 => 10275, + 276 => 10276, + 277 => 10277, + 278 => 10278, + 279 => 10279, + 280 => 10280, + 281 => 10281, + 282 => 10282, + 283 => 10283, + 284 => 10284, + 285 => 10285, + 286 => 10286, + 287 => 10287, + 288 => 10288, + 289 => 10289, + 290 => 10290, + 291 => 10291, + 292 => 10292, + 293 => 10293, + 294 => 10294, + 295 => 10295, + 296 => 10296, + 297 => 10297, + 298 => 10298, + 299 => 10299, + 300 => 10300, + 301 => 10301, + 302 => 10302, + 303 => 10303, + 304 => 10304, + 305 => 10305, + 306 => 10306, + 307 => 10307, + 308 => 10308, + 309 => 10309, + 310 => 10310, + 311 => 10311, + 312 => 10312, + 313 => 10313, + 314 => 10314, + 315 => 10315, + 316 => 10316, + 317 => 10317, + 318 => 10318, + 319 => 10319, + 320 => 10320, + 321 => 10321, + 322 => 10322, + 323 => 10323, + 324 => 10324, + 325 => 10325, + 326 => 10326, + 327 => 10327, + 328 => 10328, + 329 => 10329, + 330 => 10330, + 331 => 10331, + 332 => 10332, + 333 => 10333, + 334 => 10334, + 335 => 10335, + 336 => 10336, + 337 => 10337, + 338 => 10338, + 339 => 10339, + 340 => 10340, + 341 => 10341, + 342 => 10342, + 343 => 10343, + 344 => 10344, + 345 => 10345, + 346 => 10346, + 347 => 10347, + 348 => 10348, + 349 => 10349, + 350 => 10350, + 351 => 10351, + 352 => 10352, + 353 => 10353, + 354 => 10354, + 355 => 10355, + 356 => 10356, + 357 => 10357, + 358 => 10358, + 359 => 10359, + 360 => 10360, + 361 => 10361, + 362 => 10362, + 363 => 10363, + 364 => 10364, + 365 => 10365, + 366 => 10366, + 367 => 10367, + 368 => 10368, + 369 => 10369, + 370 => 10370, + 371 => 10371, + 372 => 10372, + 373 => 10373, + 374 => 10374, + 375 => 10375, + 376 => 10376, + 377 => 10377, + 378 => 10378, + 379 => 10379, + 380 => 10380, + 381 => 10381, + 382 => 10382, + 383 => 10383, + 384 => 10384, + 385 => 10385, + 386 => 10386, + 387 => 10387, + 388 => 10388, + 389 => 10389, + 390 => 10390, + 391 => 10391, + 392 => 10392, + 393 => 10393, + 394 => 10394, + 395 => 10395, + 396 => 10396, + 397 => 10397, + 398 => 10398, + 399 => 10399, + 400 => 10400, + 401 => 10401, + 402 => 10402, + 403 => 10403, + 404 => 10404, + 405 => 10405, + 406 => 10406, + 407 => 10407, + 408 => 10408, + 409 => 10409, + 410 => 10410, + 411 => 10411, + 412 => 10412, + 413 => 10413, + 414 => 10414, + 415 => 10415, + 416 => 10416, + 417 => 10417, + 418 => 10418, + 419 => 10419, + 420 => 10420, + 421 => 10421, + 422 => 10422, + 423 => 10423, + 424 => 10424, + 425 => 10425, + 426 => 10426, + 427 => 10427, + 428 => 10428, + 429 => 10429, + 430 => 10430, + 431 => 10431, + 432 => 10432, + 433 => 10433, + 434 => 10434, + 435 => 10435, + 436 => 10436, + 437 => 10437, + 438 => 10438, + 439 => 10439, + 440 => 10440, + 441 => 10441, + 442 => 10442, + 443 => 10443, + 444 => 10444, + 445 => 10445, + 446 => 10446, + 447 => 10447, + 448 => 10448, + 449 => 10449, + 450 => 10450, + 451 => 10451, + 452 => 10452, + 453 => 10453, + 454 => 10454, + 455 => 10455, + 456 => 10456, + 457 => 10457, + 458 => 10458, + 459 => 10459, + 460 => 10460, + 461 => 10461, + 462 => 10462, + 463 => 10463, + 464 => 10464, + 465 => 10465, + 466 => 10466, + 467 => 10467, + 468 => 10468, + 469 => 10469, + 470 => 10470, + 471 => 10471, + 472 => 10472, + 473 => 10473, + 474 => 10474, + 475 => 10475, + 476 => 10476, + 477 => 10477, + 478 => 10478, + 479 => 10479, + 480 => 10480, + 481 => 10481, + 482 => 10482, + 483 => 10483, + 484 => 10484, + 485 => 10485, + 486 => 10486, + 487 => 10487, + 488 => 10488, + 489 => 10489, + 490 => 10490, + 491 => 10491, + 492 => 10492, + 493 => 10493, + 494 => 10494, + 495 => 10495, + 496 => 10496, + 497 => 10497, + 498 => 10498, + 499 => 10499, + 500 => 10500, + 501 => 10501, + 502 => 10502, + 503 => 10503, + 504 => 10504, + 505 => 10505, + 506 => 10506, + 507 => 10507, + 508 => 10508, + 509 => 10509, + 510 => 10510, + 511 => 10511, + 512 => 10512, + 513 => 10513, + 514 => 10514, + 515 => 10515, + 516 => 10516, + 517 => 10517, + 518 => 10518, + 519 => 10519, + 520 => 10520, + 521 => 10521, + 522 => 10522, + 523 => 10523, + 524 => 10524, + 525 => 10525, + 526 => 10526, + 527 => 10527, + 528 => 10528, + 529 => 10529, + 530 => 10530, + 531 => 10531, + 532 => 10532, + 533 => 10533, + 534 => 10534, + 535 => 10535, + 536 => 10536, + 537 => 10537, + 538 => 10538, + 539 => 10539, + 540 => 10540, + 541 => 10541, + 542 => 10542, + 543 => 10543, + 544 => 10544, + 545 => 10545, + 546 => 10546, + 547 => 10547, + 548 => 10548, + 549 => 10549, + 550 => 10550, + 551 => 10551, + 552 => 10552, + 553 => 10553, + 554 => 10554, + 555 => 10555, + 556 => 10556, + 557 => 10557, + 558 => 10558, + 559 => 10559, + 560 => 10560, + 561 => 10561, + 562 => 10562, + 563 => 10563, + 564 => 10564, + 565 => 10565, + 566 => 10566, + 567 => 10567, + 568 => 10568, + 569 => 10569, + 570 => 10570, + 571 => 10571, + 572 => 10572, + 573 => 10573, + 574 => 10574, + 575 => 10575, + 576 => 10576, + 577 => 10577, + 578 => 10578, + 579 => 10579, + 580 => 10580, + 581 => 10581, + 582 => 10582, + 583 => 10583, + 584 => 10584, + 585 => 10585, + 586 => 10586, + 587 => 10587, + 588 => 10588, + 589 => 10589, + 590 => 10590, + 591 => 10591, + 592 => 10592, + 593 => 10593, + 594 => 10594, + 595 => 10595, + 596 => 10596, + 597 => 10597, + 598 => 10598, + 599 => 10599, + 600 => 10600, + 601 => 10601, + 602 => 10602, + 603 => 10603, + 604 => 10604, + 605 => 10605, + 606 => 10606, + 607 => 10607, + 608 => 10608, + 609 => 10609, + 610 => 10610, + 611 => 10611, + 612 => 10612, + 613 => 10613, + 614 => 10614, + 615 => 10615, + 616 => 10616, + 617 => 10617, + 618 => 10618, + 619 => 10619, + 620 => 10620, + 621 => 10621, + 622 => 10622, + 623 => 10623, + 624 => 10624, + 625 => 10625, + 626 => 10626, + 627 => 10627, + 628 => 10628, + 629 => 10629, + 630 => 10630, + 631 => 10631, + 632 => 10632, + 633 => 10633, + 634 => 10634, + 635 => 10635, + 636 => 10636, + 637 => 10637, + 638 => 10638, + 639 => 10639, + 640 => 10640, + 641 => 10641, + 642 => 10642, + 643 => 10643, + 644 => 10644, + 645 => 10645, + 646 => 10646, + 647 => 10647, + 648 => 10648, + 649 => 10649, + 650 => 10650, + 651 => 10651, + 652 => 10652, + 653 => 10653, + 654 => 10654, + 655 => 10655, + 656 => 10656, + 657 => 10657, + 658 => 10658, + 659 => 10659, + 660 => 10660, + 661 => 10661, + 662 => 10662, + 663 => 10663, + 664 => 10664, + 665 => 10665, + 666 => 10666, + 667 => 10667, + 668 => 10668, + 669 => 10669, + 670 => 10670, + 671 => 10671, + 672 => 10672, + 673 => 10673, + 674 => 10674, + 675 => 10675, + 676 => 10676, + 677 => 10677, + 678 => 10678, + 679 => 10679, + 680 => 10680, + 681 => 10681, + 682 => 10682, + 683 => 10683, + 684 => 10684, + 685 => 10685, + 686 => 10686, + 687 => 10687, + 688 => 10688, + 689 => 10689, + 690 => 10690, + 691 => 10691, + 692 => 10692, + 693 => 10693, + 694 => 10694, + 695 => 10695, + 696 => 10696, + 697 => 10697, + 698 => 10698, + 699 => 10699, + 700 => 10700, + 701 => 10701, + 702 => 10702, + 703 => 10703, + 704 => 10704, + 705 => 10705, + 706 => 10706, + 707 => 10707, + 708 => 10708, + 709 => 10709, + 710 => 10710, + 711 => 10711, + 712 => 10712, + 713 => 10713, + 714 => 10714, + 715 => 10715, + 716 => 10716, + 717 => 10717, + 718 => 10718, + 719 => 10719, + 720 => 10720, + 721 => 10721, + 722 => 10722, + 723 => 10723, + 724 => 10724, + 725 => 10725, + 726 => 10726, + 727 => 10727, + 728 => 10728, + 729 => 10729, + 730 => 10730, + 731 => 10731, + 732 => 10732, + 733 => 10733, + 734 => 10734, + 735 => 10735, + 736 => 10736, + 737 => 10737, + 738 => 10738, + 739 => 10739, + 740 => 10740, + 741 => 10741, + 742 => 10742, + 743 => 10743, + 744 => 10744, + 745 => 10745, + 746 => 10746, + 747 => 10747, + 748 => 10748, + 749 => 10749, + 750 => 10750, + 751 => 10751, + 752 => 10752, + 753 => 10753, + 754 => 10754, + 755 => 10755, + 756 => 10756, + 757 => 10757, + 758 => 10758, + 759 => 10759, + 760 => 10760, + 761 => 10761, + 762 => 10762, + 763 => 10763, + 764 => 10764, + 765 => 10765, + 766 => 10766, + 767 => 10767, + 768 => 10768, + 769 => 10769, + 770 => 10770, + 771 => 10771, + 772 => 10772, + 773 => 10773, + 774 => 10774, + 775 => 10775, + 776 => 10776, + 777 => 10777, + 778 => 10778, + 779 => 10779, + 780 => 10780, + 781 => 10781, + 782 => 10782, + 783 => 10783, + 784 => 10784, + 785 => 10785, + 786 => 10786, + 787 => 10787, + 788 => 10788, + 789 => 10789, + 790 => 10790, + 791 => 10791, + 792 => 10792, + 793 => 10793, + 794 => 10794, + 795 => 10795, + 796 => 10796, + 797 => 10797, + 798 => 10798, + 799 => 10799, + 800 => 10800, + 801 => 10801, + 802 => 10802, + 803 => 10803, + 804 => 10804, + 805 => 10805, + 806 => 10806, + 807 => 10807, + 808 => 10808, + 809 => 10809, + 810 => 10810, + 811 => 10811, + 812 => 10812, + 813 => 10813, + 814 => 10814, + 815 => 10815, + 816 => 10816, + 817 => 10817, + 818 => 10818, + 819 => 10819, + 820 => 10820, + 821 => 10821, + 822 => 10822, + 823 => 10823, + 824 => 10824, + 825 => 10825, + 826 => 10826, + 827 => 10827, + 828 => 10828, + 829 => 10829, + 830 => 10830, + 831 => 10831, + 832 => 10832, + 833 => 10833, + 834 => 10834, + 835 => 10835, + 836 => 10836, + 837 => 10837, + 838 => 10838, + 839 => 10839, + 840 => 10840, + 841 => 10841, + 842 => 10842, + 843 => 10843, + 844 => 10844, + 845 => 10845, + 846 => 10846, + 847 => 10847, + 848 => 10848, + 849 => 10849, + 850 => 10850, + 851 => 10851, + 852 => 10852, + 853 => 10853, + 854 => 10854, + 855 => 10855, + 856 => 10856, + 857 => 10857, + 858 => 10858, + 859 => 10859, + 860 => 10860, + 861 => 10861, + 862 => 10862, + 863 => 10863, + 864 => 10864, + 865 => 10865, + 866 => 10866, + 867 => 10867, + 868 => 10868, + 869 => 10869, + 870 => 10870, + 871 => 10871, + 872 => 10872, + 873 => 10873, + 874 => 10874, + 875 => 10875, + 876 => 10876, + 877 => 10877, + 878 => 10878, + 879 => 10879, + 880 => 10880, + 881 => 10881, + 882 => 10882, + 883 => 10883, + 884 => 10884, + 885 => 10885, + 886 => 10886, + 887 => 10887, + 888 => 10888, + 889 => 10889, + 890 => 10890, + 891 => 10891, + 892 => 10892, + 893 => 10893, + 894 => 10894, + 895 => 10895, + 896 => 10896, + 897 => 10897, + 898 => 10898, + 899 => 10899, + 900 => 10900, + 901 => 10901, + 902 => 10902, + 903 => 10903, + 904 => 10904, + 905 => 10905, + 906 => 10906, + 907 => 10907, + 908 => 10908, + 909 => 10909, + 910 => 10910, + 911 => 10911, + 912 => 10912, + 913 => 10913, + 914 => 10914, + 915 => 10915, + 916 => 10916, + 917 => 10917, + 918 => 10918, + 919 => 10919, + 920 => 10920, + 921 => 10921, + 922 => 10922, + 923 => 10923, + 924 => 10924, + 925 => 10925, + 926 => 10926, + 927 => 10927, + 928 => 10928, + 929 => 10929, + 930 => 10930, + 931 => 10931, + 932 => 10932, + 933 => 10933, + 934 => 10934, + 935 => 10935, + 936 => 10936, + 937 => 10937, + 938 => 10938, + 939 => 10939, + 940 => 10940, + 941 => 10941, + 942 => 10942, + 943 => 10943, + 944 => 10944, + 945 => 10945, + 946 => 10946, + 947 => 10947, + 948 => 10948, + 949 => 10949, + 950 => 10950, + 951 => 10951, + 952 => 10952, + 953 => 10953, + 954 => 10954, + 955 => 10955, + 956 => 10956, + 957 => 10957, + 958 => 10958, + 959 => 10959, + 960 => 10960, + 961 => 10961, + 962 => 10962, + 963 => 10963, + 964 => 10964, + 965 => 10965, + 966 => 10966, + 967 => 10967, + 968 => 10968, + 969 => 10969, + 970 => 10970, + 971 => 10971, + 972 => 10972, + 973 => 10973, + 974 => 10974, + 975 => 10975, + 976 => 10976, + 977 => 10977, + 978 => 10978, + 979 => 10979, + 980 => 10980, + 981 => 10981, + 982 => 10982, + 983 => 10983, + 984 => 10984, + 985 => 10985, + 986 => 10986, + 987 => 10987, + 988 => 10988, + 989 => 10989, + 990 => 10990, + 991 => 10991, + 992 => 10992, + 993 => 10993, + 994 => 10994, + 995 => 10995, + 996 => 10996, + 997 => 10997, + 998 => 10998, + 999 => 10999, + 1000 => 11000, + 1001 => 11001, + 1002 => 11002, + 1003 => 11003, + 1004 => 11004, + 1005 => 11005, + 1006 => 11006, + 1007 => 11007, + 1008 => 11008, + 1009 => 11009, + 1010 => 11010, + 1011 => 11011, + 1012 => 11012, + 1013 => 11013, + 1014 => 11014, + 1015 => 11015, + 1016 => 11016, + 1017 => 11017, + 1018 => 11018, + 1019 => 11019, + 1020 => 11020, + 1021 => 11021, + 1022 => 11022, + 1023 => 11023, + 1024 => 11024, + 1025 => 11025, + 1026 => 11026, + 1027 => 11027, + 1028 => 11028, + 1029 => 11029, + 1030 => 11030, + 1031 => 11031, + 1032 => 11032, + 1033 => 11033, + 1034 => 11034, + 1035 => 11035, + 1036 => 11036, + 1037 => 11037, + 1038 => 11038, + 1039 => 11039, + 1040 => 11040, + 1041 => 11041, + 1042 => 11042, + 1043 => 11043, + 1044 => 11044, + 1045 => 11045, + 1046 => 11046, + 1047 => 11047, + 1048 => 11048, + 1049 => 11049, + 1050 => 11050, + 1051 => 11051, + 1052 => 11052, + 1053 => 11053, + 1054 => 11054, + 1055 => 11055, + 1056 => 11056, + 1057 => 11057, + 1058 => 11058, + 1059 => 11059, + 1060 => 11060, + 1061 => 11061, + 1062 => 11062, + 1063 => 11063, + 1064 => 11064, + 1065 => 11065, + 1066 => 11066, + 1067 => 11067, + 1068 => 11068, + 1069 => 11069, + 1070 => 11070, + 1071 => 11071, + 1072 => 11072, + 1073 => 11073, + 1074 => 11074, + 1075 => 11075, + 1076 => 11076, + 1077 => 11077, + 1078 => 11078, + 1079 => 11079, + 1080 => 11080, + 1081 => 11081, + 1082 => 11082, + 1083 => 11083, + 1084 => 11084, + 1085 => 11085, + 1086 => 11086, + 1087 => 11087, + 1088 => 11088, + 1089 => 11089, + 1090 => 11090, + 1091 => 11091, + 1092 => 11092, + 1093 => 11093, + 1094 => 11094, + 1095 => 11095, + 1096 => 11096, + 1097 => 11097, + 1098 => 11098, + 1099 => 11099, + 1100 => 11100, + 1101 => 11101, + 1102 => 11102, + 1103 => 11103, + 1104 => 11104, + 1105 => 11105, + 1106 => 11106, + 1107 => 11107, + 1108 => 11108, + 1109 => 11109, + 1110 => 11110, + 1111 => 11111, + 1112 => 11112, + 1113 => 11113, + 1114 => 11114, + 1115 => 11115, + 1116 => 11116, + 1117 => 11117, + 1118 => 11118, + 1119 => 11119, + 1120 => 11120, + 1121 => 11121, + 1122 => 11122, + 1123 => 11123, + 1124 => 11124, + 1125 => 11125, + 1126 => 11126, + 1127 => 11127, + 1128 => 11128, + 1129 => 11129, + 1130 => 11130, + 1131 => 11131, + 1132 => 11132, + 1133 => 11133, + 1134 => 11134, + 1135 => 11135, + 1136 => 11136, + 1137 => 11137, + 1138 => 11138, + 1139 => 11139, + 1140 => 11140, + 1141 => 11141, + 1142 => 11142, + 1143 => 11143, + 1144 => 11144, + 1145 => 11145, + 1146 => 11146, + 1147 => 11147, + 1148 => 11148, + 1149 => 11149, + 1150 => 11150, + 1151 => 11151, + 1152 => 11152, + 1153 => 11153, + 1154 => 11154, + 1155 => 11155, + 1156 => 11156, + 1157 => 11157, + 1158 => 11158, + 1159 => 11159, + 1160 => 11160, + 1161 => 11161, + 1162 => 11162, + 1163 => 11163, + 1164 => 11164, + 1165 => 11165, + 1166 => 11166, + 1167 => 11167, + 1168 => 11168, + 1169 => 11169, + 1170 => 11170, + 1171 => 11171, + 1172 => 11172, + 1173 => 11173, + 1174 => 11174, + 1175 => 11175, + 1176 => 11176, + 1177 => 11177, + 1178 => 11178, + 1179 => 11179, + 1180 => 11180, + 1181 => 11181, + 1182 => 11182, + 1183 => 11183, + 1184 => 11184, + 1185 => 11185, + 1186 => 11186, + 1187 => 11187, + 1188 => 11188, + 1189 => 11189, + 1190 => 11190, + 1191 => 11191, + 1192 => 11192, + 1193 => 11193, + 1194 => 11194, + 1195 => 11195, + 1196 => 11196, + 1197 => 11197, + 1198 => 11198, + 1199 => 11199, + 1200 => 11200, + 1201 => 11201, + 1202 => 11202, + 1203 => 11203, + 1204 => 11204, + 1205 => 11205, + 1206 => 11206, + 1207 => 11207, + 1208 => 11208, + 1209 => 11209, + 1210 => 11210, + 1211 => 11211, + 1212 => 11212, + 1213 => 11213, + 1214 => 11214, + 1215 => 11215, + 1216 => 11216, + 1217 => 11217, + 1218 => 11218, + 1219 => 11219, + 1220 => 11220, + 1221 => 11221, + 1222 => 11222, + 1223 => 11223, + 1224 => 11224, + 1225 => 11225, + 1226 => 11226, + 1227 => 11227, + 1228 => 11228, + 1229 => 11229, + 1230 => 11230, + 1231 => 11231, + 1232 => 11232, + 1233 => 11233, + 1234 => 11234, + 1235 => 11235, + 1236 => 11236, + 1237 => 11237, + 1238 => 11238, + 1239 => 11239, + 1240 => 11240, + 1241 => 11241, + 1242 => 11242, + 1243 => 11243, + 1244 => 11244, + 1245 => 11245, + 1246 => 11246, + 1247 => 11247, + 1248 => 11248, + 1249 => 11249, + 1250 => 11250, + 1251 => 11251, + 1252 => 11252, + 1253 => 11253, + 1254 => 11254, + 1255 => 11255, + 1256 => 11256, + 1257 => 11257, + 1258 => 11258, + 1259 => 11259, + 1260 => 11260, + 1261 => 11261, + 1262 => 11262, + 1263 => 11263, + 1264 => 11264, + 1265 => 11265, + 1266 => 11266, + 1267 => 11267, + 1268 => 11268, + 1269 => 11269, + 1270 => 11270, + 1271 => 11271, + 1272 => 11272, + 1273 => 11273, + 1274 => 11274, + 1275 => 11275, + 1276 => 11276, + 1277 => 11277, + 1278 => 11278, + 1279 => 11279, + 1280 => 11280, + 1281 => 11281, + 1282 => 11282, + 1283 => 11283, + 1284 => 11284, + 1285 => 11285, + 1286 => 11286, + 1287 => 11287, + 1288 => 11288, + 1289 => 11289, + 1290 => 11290, + 1291 => 11291, + 1292 => 11292, + 1293 => 11293, + 1294 => 11294, + 1295 => 11295, + 1296 => 11296, + 1297 => 11297, + 1298 => 11298, + 1299 => 11299, + 1300 => 11300, + 1301 => 11301, + 1302 => 11302, + 1303 => 11303, + 1304 => 11304, + 1305 => 11305, + 1306 => 11306, + 1307 => 11307, + 1308 => 11308, + 1309 => 11309, + 1310 => 11310, + 1311 => 11311, + 1312 => 11312, + 1313 => 11313, + 1314 => 11314, + 1315 => 11315, + 1316 => 11316, + 1317 => 11317, + 1318 => 11318, + 1319 => 11319, + 1320 => 11320, + 1321 => 11321, + 1322 => 11322, + 1323 => 11323, + 1324 => 11324, + 1325 => 11325, + 1326 => 11326, + 1327 => 11327, + 1328 => 11328, + 1329 => 11329, + 1330 => 11330, + 1331 => 11331, + 1332 => 11332, + 1333 => 11333, + 1334 => 11334, + 1335 => 11335, + 1336 => 11336, + 1337 => 11337, + 1338 => 11338, + 1339 => 11339, + 1340 => 11340, + 1341 => 11341, + 1342 => 11342, + 1343 => 11343, + 1344 => 11344, + 1345 => 11345, + 1346 => 11346, + 1347 => 11347, + 1348 => 11348, + 1349 => 11349, + 1350 => 11350, + 1351 => 11351, + 1352 => 11352, + 1353 => 11353, + 1354 => 11354, + 1355 => 11355, + 1356 => 11356, + 1357 => 11357, + 1358 => 11358, + 1359 => 11359, + 1360 => 11360, + 1361 => 11361, + 1362 => 11362, + 1363 => 11363, + 1364 => 11364, + 1365 => 11365, + 1366 => 11366, + 1367 => 11367, + 1368 => 11368, + 1369 => 11369, + 1370 => 11370, + 1371 => 11371, + 1372 => 11372, + 1373 => 11373, + 1374 => 11374, + 1375 => 11375, + 1376 => 11376, + 1377 => 11377, + 1378 => 11378, + 1379 => 11379, + 1380 => 11380, + 1381 => 11381, + 1382 => 11382, + 1383 => 11383, + 1384 => 11384, + 1385 => 11385, + 1386 => 11386, + 1387 => 11387, + 1388 => 11388, + 1389 => 11389, + 1390 => 11390, + 1391 => 11391, + 1392 => 11392, + 1393 => 11393, + 1394 => 11394, + 1395 => 11395, + 1396 => 11396, + 1397 => 11397, + 1398 => 11398, + 1399 => 11399, + 1400 => 11400, + 1401 => 11401, + 1402 => 11402, + 1403 => 11403, + 1404 => 11404, + 1405 => 11405, + 1406 => 11406, + 1407 => 11407, + 1408 => 11408, + 1409 => 11409, + 1410 => 11410, + 1411 => 11411, + 1412 => 11412, + 1413 => 11413, + 1414 => 11414, + 1415 => 11415, + 1416 => 11416, + 1417 => 11417, + 1418 => 11418, + 1419 => 11419, + 1420 => 11420, + 1421 => 11421, + 1422 => 11422, + 1423 => 11423, + 1424 => 11424, + 1425 => 11425, + 1426 => 11426, + 1427 => 11427, + 1428 => 11428, + 1429 => 11429, + 1430 => 11430, + 1431 => 11431, + 1432 => 11432, + 1433 => 11433, + 1434 => 11434, + 1435 => 11435, + 1436 => 11436, + 1437 => 11437, + 1438 => 11438, + 1439 => 11439, + 1440 => 11440, + 1441 => 11441, + 1442 => 11442, + 1443 => 11443, + 1444 => 11444, + 1445 => 11445, + 1446 => 11446, + 1447 => 11447, + 1448 => 11448, + 1449 => 11449, + 1450 => 11450, + 1451 => 11451, + 1452 => 11452, + 1453 => 11453, + 1454 => 11454, + 1455 => 11455, + 1456 => 11456, + 1457 => 11457, + 1458 => 11458, + 1459 => 11459, + 1460 => 11460, + 1461 => 11461, + 1462 => 11462, + 1463 => 11463, + 1464 => 11464, + 1465 => 11465, + 1466 => 11466, + 1467 => 11467, + 1468 => 11468, + 1469 => 11469, + 1470 => 11470, + 1471 => 11471, + 1472 => 11472, + 1473 => 11473, + 1474 => 11474, + 1475 => 11475, + 1476 => 11476, + 1477 => 11477, + 1478 => 11478, + 1479 => 11479, + 1480 => 11480, + 1481 => 11481, + 1482 => 11482, + 1483 => 11483, + 1484 => 11484, + 1485 => 11485, + 1486 => 11486, + 1487 => 11487, + 1488 => 11488, + 1489 => 11489, + 1490 => 11490, + 1491 => 11491, + 1492 => 11492, + 1493 => 11493, + 1494 => 11494, + 1495 => 11495, + 1496 => 11496, + 1497 => 11497, + 1498 => 11498, + 1499 => 11499, + 1500 => 11500, + 1501 => 11501, + 1502 => 11502, + 1503 => 11503, + 1504 => 11504, + 1505 => 11505, + 1506 => 11506, + 1507 => 11507, + 1508 => 11508, + 1509 => 11509, + 1510 => 11510, + 1511 => 11511, + 1512 => 11512, + 1513 => 11513, + 1514 => 11514, + 1515 => 11515, + 1516 => 11516, + 1517 => 11517, + 1518 => 11518, + 1519 => 11519, + 1520 => 11520, + 1521 => 11521, + 1522 => 11522, + 1523 => 11523, + 1524 => 11524, + 1525 => 11525, + 1526 => 11526, + 1527 => 11527, + 1528 => 11528, + 1529 => 11529, + 1530 => 11530, + 1531 => 11531, + 1532 => 11532, + 1533 => 11533, + 1534 => 11534, + 1535 => 11535, + 1536 => 11536, + 1537 => 11537, + 1538 => 11538, + 1539 => 11539, + 1540 => 11540, + 1541 => 11541, + 1542 => 11542, + 1543 => 11543, + 1544 => 11544, + 1545 => 11545, + 1546 => 11546, + 1547 => 11547, + 1548 => 11548, + 1549 => 11549, + 1550 => 11550, + 1551 => 11551, + 1552 => 11552, + 1553 => 11553, + 1554 => 11554, + 1555 => 11555, + 1556 => 11556, + 1557 => 11557, + 1558 => 11558, + 1559 => 11559, + 1560 => 11560, + 1561 => 11561, + 1562 => 11562, + 1563 => 11563, + 1564 => 11564, + 1565 => 11565, + 1566 => 11566, + 1567 => 11567, + 1568 => 11568, + 1569 => 11569, + 1570 => 11570, + 1571 => 11571, + 1572 => 11572, + 1573 => 11573, + 1574 => 11574, + 1575 => 11575, + 1576 => 11576, + 1577 => 11577, + 1578 => 11578, + 1579 => 11579, + 1580 => 11580, + 1581 => 11581, + 1582 => 11582, + 1583 => 11583, + 1584 => 11584, + 1585 => 11585, + 1586 => 11586, + 1587 => 11587, + 1588 => 11588, + 1589 => 11589, + 1590 => 11590, + 1591 => 11591, + 1592 => 11592, + 1593 => 11593, + 1594 => 11594, + 1595 => 11595, + 1596 => 11596, + 1597 => 11597, + 1598 => 11598, + 1599 => 11599, + 1600 => 11600, + 1601 => 11601, + 1602 => 11602, + 1603 => 11603, + 1604 => 11604, + 1605 => 11605, + 1606 => 11606, + 1607 => 11607, + 1608 => 11608, + 1609 => 11609, + 1610 => 11610, + 1611 => 11611, + 1612 => 11612, + 1613 => 11613, + 1614 => 11614, + 1615 => 11615, + 1616 => 11616, + 1617 => 11617, + 1618 => 11618, + 1619 => 11619, + 1620 => 11620, + 1621 => 11621, + 1622 => 11622, + 1623 => 11623, + 1624 => 11624, + 1625 => 11625, + 1626 => 11626, + 1627 => 11627, + 1628 => 11628, + 1629 => 11629, + 1630 => 11630, + 1631 => 11631, + 1632 => 11632, + 1633 => 11633, + 1634 => 11634, + 1635 => 11635, + 1636 => 11636, + 1637 => 11637, + 1638 => 11638, + 1639 => 11639, + 1640 => 11640, + 1641 => 11641, + 1642 => 11642, + 1643 => 11643, + 1644 => 11644, + 1645 => 11645, + 1646 => 11646, + 1647 => 11647, + 1648 => 11648, + 1649 => 11649, + 1650 => 11650, + 1651 => 11651, + 1652 => 11652, + 1653 => 11653, + 1654 => 11654, + 1655 => 11655, + 1656 => 11656, + 1657 => 11657, + 1658 => 11658, + 1659 => 11659, + 1660 => 11660, + 1661 => 11661, + 1662 => 11662, + 1663 => 11663, + 1664 => 11664, + 1665 => 11665, + 1666 => 11666, + 1667 => 11667, + 1668 => 11668, + 1669 => 11669, + 1670 => 11670, + 1671 => 11671, + 1672 => 11672, + 1673 => 11673, + 1674 => 11674, + 1675 => 11675, + 1676 => 11676, + 1677 => 11677, + 1678 => 11678, + 1679 => 11679, + 1680 => 11680, + 1681 => 11681, + 1682 => 11682, + 1683 => 11683, + 1684 => 11684, + 1685 => 11685, + 1686 => 11686, + 1687 => 11687, + 1688 => 11688, + 1689 => 11689, + 1690 => 11690, + 1691 => 11691, + 1692 => 11692, + 1693 => 11693, + 1694 => 11694, + 1695 => 11695, + 1696 => 11696, + 1697 => 11697, + 1698 => 11698, + 1699 => 11699, + 1700 => 11700, + 1701 => 11701, + 1702 => 11702, + 1703 => 11703, + 1704 => 11704, + 1705 => 11705, + 1706 => 11706, + 1707 => 11707, + 1708 => 11708, + 1709 => 11709, + 1710 => 11710, + 1711 => 11711, + 1712 => 11712, + 1713 => 11713, + 1714 => 11714, + 1715 => 11715, + 1716 => 11716, + 1717 => 11717, + 1718 => 11718, + 1719 => 11719, + 1720 => 11720, + 1721 => 11721, + 1722 => 11722, + 1723 => 11723, + 1724 => 11724, + 1725 => 11725, + 1726 => 11726, + 1727 => 11727, + 1728 => 11728, + 1729 => 11729, + 1730 => 11730, + 1731 => 11731, + 1732 => 11732, + 1733 => 11733, + 1734 => 11734, + 1735 => 11735, + 1736 => 11736, + 1737 => 11737, + 1738 => 11738, + 1739 => 11739, + 1740 => 11740, + 1741 => 11741, + 1742 => 11742, + 1743 => 11743, + 1744 => 11744, + 1745 => 11745, + 1746 => 11746, + 1747 => 11747, + 1748 => 11748, + 1749 => 11749, + 1750 => 11750, + 1751 => 11751, + 1752 => 11752, + 1753 => 11753, + 1754 => 11754, + 1755 => 11755, + 1756 => 11756, + 1757 => 11757, + 1758 => 11758, + 1759 => 11759, + 1760 => 11760, + 1761 => 11761, + 1762 => 11762, + 1763 => 11763, + 1764 => 11764, + 1765 => 11765, + 1766 => 11766, + 1767 => 11767, + 1768 => 11768, + 1769 => 11769, + 1770 => 11770, + 1771 => 11771, + 1772 => 11772, + 1773 => 11773, + 1774 => 11774, + 1775 => 11775, + 1776 => 11776, + 1777 => 11777, + 1778 => 11778, + 1779 => 11779, + 1780 => 11780, + 1781 => 11781, + 1782 => 11782, + 1783 => 11783, + 1784 => 11784, + 1785 => 11785, + 1786 => 11786, + 1787 => 11787, + 1788 => 11788, + 1789 => 11789, + 1790 => 11790, + 1791 => 11791, + 1792 => 11792, + 1793 => 11793, + 1794 => 11794, + 1795 => 11795, + 1796 => 11796, + 1797 => 11797, + 1798 => 11798, + 1799 => 11799, + 1800 => 11800, + 1801 => 11801, + 1802 => 11802, + 1803 => 11803, + 1804 => 11804, + 1805 => 11805, + 1806 => 11806, + 1807 => 11807, + 1808 => 11808, + 1809 => 11809, + 1810 => 11810, + 1811 => 11811, + 1812 => 11812, + 1813 => 11813, + 1814 => 11814, + 1815 => 11815, + 1816 => 11816, + 1817 => 11817, + 1818 => 11818, + 1819 => 11819, + 1820 => 11820, + 1821 => 11821, + 1822 => 11822, + 1823 => 11823, + 1824 => 11824, + 1825 => 11825, + 1826 => 11826, + 1827 => 11827, + 1828 => 11828, + 1829 => 11829, + 1830 => 11830, + 1831 => 11831, + 1832 => 11832, + 1833 => 11833, + 1834 => 11834, + 1835 => 11835, + 1836 => 11836, + 1837 => 11837, + 1838 => 11838, + 1839 => 11839, + 1840 => 11840, + 1841 => 11841, + 1842 => 11842, + 1843 => 11843, + 1844 => 11844, + 1845 => 11845, + 1846 => 11846, + 1847 => 11847, + 1848 => 11848, + 1849 => 11849, + 1850 => 11850, + 1851 => 11851, + 1852 => 11852, + 1853 => 11853, + 1854 => 11854, + 1855 => 11855, + 1856 => 11856, + 1857 => 11857, + 1858 => 11858, + 1859 => 11859, + 1860 => 11860, + 1861 => 11861, + 1862 => 11862, + 1863 => 11863, + 1864 => 11864, + 1865 => 11865, + 1866 => 11866, + 1867 => 11867, + 1868 => 11868, + 1869 => 11869, + 1870 => 11870, + 1871 => 11871, + 1872 => 11872, + 1873 => 11873, + 1874 => 11874, + 1875 => 11875, + 1876 => 11876, + 1877 => 11877, + 1878 => 11878, + 1879 => 11879, + 1880 => 11880, + 1881 => 11881, + 1882 => 11882, + 1883 => 11883, + 1884 => 11884, + 1885 => 11885, + 1886 => 11886, + 1887 => 11887, + 1888 => 11888, + 1889 => 11889, + 1890 => 11890, + 1891 => 11891, + 1892 => 11892, + 1893 => 11893, + 1894 => 11894, + 1895 => 11895, + 1896 => 11896, + 1897 => 11897, + 1898 => 11898, + 1899 => 11899, + 1900 => 11900, + 1901 => 11901, + 1902 => 11902, + 1903 => 11903, + 1904 => 11904, + 1905 => 11905, + 1906 => 11906, + 1907 => 11907, + 1908 => 11908, + 1909 => 11909, + 1910 => 11910, + 1911 => 11911, + 1912 => 11912, + 1913 => 11913, + 1914 => 11914, + 1915 => 11915, + 1916 => 11916, + 1917 => 11917, + 1918 => 11918, + 1919 => 11919, + 1920 => 11920, + 1921 => 11921, + 1922 => 11922, + 1923 => 11923, + 1924 => 11924, + 1925 => 11925, + 1926 => 11926, + 1927 => 11927, + 1928 => 11928, + 1929 => 11929, + 1930 => 11930, + 1931 => 11931, + 1932 => 11932, + 1933 => 11933, + 1934 => 11934, + 1935 => 11935, + 1936 => 11936, + 1937 => 11937, + 1938 => 11938, + 1939 => 11939, + 1940 => 11940, + 1941 => 11941, + 1942 => 11942, + 1943 => 11943, + 1944 => 11944, + 1945 => 11945, + 1946 => 11946, + 1947 => 11947, + 1948 => 11948, + 1949 => 11949, + 1950 => 11950, + 1951 => 11951, + 1952 => 11952, + 1953 => 11953, + 1954 => 11954, + 1955 => 11955, + 1956 => 11956, + 1957 => 11957, + 1958 => 11958, + 1959 => 11959, + 1960 => 11960, + 1961 => 11961, + 1962 => 11962, + 1963 => 11963, + 1964 => 11964, + 1965 => 11965, + 1966 => 11966, + 1967 => 11967, + 1968 => 11968, + 1969 => 11969, + 1970 => 11970, + 1971 => 11971, + 1972 => 11972, + 1973 => 11973, + 1974 => 11974, + 1975 => 11975, + 1976 => 11976, + 1977 => 11977, + 1978 => 11978, + 1979 => 11979, + 1980 => 11980, + 1981 => 11981, + 1982 => 11982, + 1983 => 11983, + 1984 => 11984, + 1985 => 11985, + 1986 => 11986, + 1987 => 11987, + 1988 => 11988, + 1989 => 11989, + 1990 => 11990, + 1991 => 11991, + 1992 => 11992, + 1993 => 11993, + 1994 => 11994, + 1995 => 11995, + 1996 => 11996, + 1997 => 11997, + 1998 => 11998, + 1999 => 11999, + 2000 => 12000, + 2001 => 12001, + 2002 => 12002, + 2003 => 12003, + 2004 => 12004, + 2005 => 12005, + 2006 => 12006, + 2007 => 12007, + 2008 => 12008, + 2009 => 12009, + 2010 => 12010, + 2011 => 12011, + 2012 => 12012, + 2013 => 12013, + 2014 => 12014, + 2015 => 12015, + 2016 => 12016, + 2017 => 12017, + 2018 => 12018, + 2019 => 12019, + 2020 => 12020, + 2021 => 12021, + 2022 => 12022, + 2023 => 12023, + 2024 => 12024, + 2025 => 12025, + 2026 => 12026, + 2027 => 12027, + 2028 => 12028, + 2029 => 12029, + 2030 => 12030, + 2031 => 12031, + 2032 => 12032, + 2033 => 12033, + 2034 => 12034, + 2035 => 12035, + 2036 => 12036, + 2037 => 12037, + 2038 => 12038, + 2039 => 12039, + 2040 => 12040, + 2041 => 12041, + 2042 => 12042, + 2043 => 12043, + 2044 => 12044, + 2045 => 12045, + 2046 => 12046, + 2047 => 12047, + 2048 => 12048, + 2049 => 12049, + 2050 => 12050, + 2051 => 12051, + 2052 => 12052, + 2053 => 12053, + 2054 => 12054, + 2055 => 12055, + 2056 => 12056, + 2057 => 12057, + 2058 => 12058, + 2059 => 12059, + 2060 => 12060, + 2061 => 12061, + 2062 => 12062, + 2063 => 12063, + 2064 => 12064, + 2065 => 12065, + 2066 => 12066, + 2067 => 12067, + 2068 => 12068, + 2069 => 12069, + 2070 => 12070, + 2071 => 12071, + 2072 => 12072, + 2073 => 12073, + 2074 => 12074, + 2075 => 12075, + 2076 => 12076, + 2077 => 12077, + 2078 => 12078, + 2079 => 12079, + 2080 => 12080, + 2081 => 12081, + 2082 => 12082, + 2083 => 12083, + 2084 => 12084, + 2085 => 12085, + 2086 => 12086, + 2087 => 12087, + 2088 => 12088, + 2089 => 12089, + 2090 => 12090, + 2091 => 12091, + 2092 => 12092, + 2093 => 12093, + 2094 => 12094, + 2095 => 12095, + 2096 => 12096, + 2097 => 12097, + 2098 => 12098, + 2099 => 12099, + 2100 => 12100, + 2101 => 12101, + 2102 => 12102, + 2103 => 12103, + 2104 => 12104, + 2105 => 12105, + 2106 => 12106, + 2107 => 12107, + 2108 => 12108, + 2109 => 12109, + 2110 => 12110, + 2111 => 12111, + 2112 => 12112, + 2113 => 12113, + 2114 => 12114, + 2115 => 12115, + 2116 => 12116, + 2117 => 12117, + 2118 => 12118, + 2119 => 12119, + 2120 => 12120, + 2121 => 12121, + 2122 => 12122, + 2123 => 12123, + 2124 => 12124, + 2125 => 12125, + 2126 => 12126, + 2127 => 12127, + 2128 => 12128, + 2129 => 12129, + 2130 => 12130, + 2131 => 12131, + 2132 => 12132, + 2133 => 12133, + 2134 => 12134, + 2135 => 12135, + 2136 => 12136, + 2137 => 12137, + 2138 => 12138, + 2139 => 12139, + 2140 => 12140, + 2141 => 12141, + 2142 => 12142, + 2143 => 12143, + 2144 => 12144, + 2145 => 12145, + 2146 => 12146, + 2147 => 12147, + 2148 => 12148, + 2149 => 12149, + 2150 => 12150, + 2151 => 12151, + 2152 => 12152, + 2153 => 12153, + 2154 => 12154, + 2155 => 12155, + 2156 => 12156, + 2157 => 12157, + 2158 => 12158, + 2159 => 12159, + 2160 => 12160, + 2161 => 12161, + 2162 => 12162, + 2163 => 12163, + 2164 => 12164, + 2165 => 12165, + 2166 => 12166, + 2167 => 12167, + 2168 => 12168, + 2169 => 12169, + 2170 => 12170, + 2171 => 12171, + 2172 => 12172, + 2173 => 12173, + 2174 => 12174, + 2175 => 12175, + 2176 => 12176, + 2177 => 12177, + 2178 => 12178, + 2179 => 12179, + 2180 => 12180, + 2181 => 12181, + 2182 => 12182, + 2183 => 12183, + 2184 => 12184, + 2185 => 12185, + 2186 => 12186, + 2187 => 12187, + 2188 => 12188, + 2189 => 12189, + 2190 => 12190, + 2191 => 12191, + 2192 => 12192, + 2193 => 12193, + 2194 => 12194, + 2195 => 12195, + 2196 => 12196, + 2197 => 12197, + 2198 => 12198, + 2199 => 12199, + 2200 => 12200, + 2201 => 12201, + 2202 => 12202, + 2203 => 12203, + 2204 => 12204, + 2205 => 12205, + 2206 => 12206, + 2207 => 12207, + 2208 => 12208, + 2209 => 12209, + 2210 => 12210, + 2211 => 12211, + 2212 => 12212, + 2213 => 12213, + 2214 => 12214, + 2215 => 12215, + 2216 => 12216, + 2217 => 12217, + 2218 => 12218, + 2219 => 12219, + 2220 => 12220, + 2221 => 12221, + 2222 => 12222, + 2223 => 12223, + 2224 => 12224, + 2225 => 12225, + 2226 => 12226, + 2227 => 12227, + 2228 => 12228, + 2229 => 12229, + 2230 => 12230, + 2231 => 12231, + 2232 => 12232, + 2233 => 12233, + 2234 => 12234, + 2235 => 12235, + 2236 => 12236, + 2237 => 12237, + 2238 => 12238, + 2239 => 12239, + 2240 => 12240, + 2241 => 12241, + 2242 => 12242, + 2243 => 12243, + 2244 => 12244, + 2245 => 12245, + 2246 => 12246, + 2247 => 12247, + 2248 => 12248, + 2249 => 12249, + 2250 => 12250, + 2251 => 12251, + 2252 => 12252, + 2253 => 12253, + 2254 => 12254, + 2255 => 12255, + 2256 => 12256, + 2257 => 12257, + 2258 => 12258, + 2259 => 12259, + 2260 => 12260, + 2261 => 12261, + 2262 => 12262, + 2263 => 12263, + 2264 => 12264, + 2265 => 12265, + 2266 => 12266, + 2267 => 12267, + 2268 => 12268, + 2269 => 12269, + 2270 => 12270, + 2271 => 12271, + 2272 => 12272, + 2273 => 12273, + 2274 => 12274, + 2275 => 12275, + 2276 => 12276, + 2277 => 12277, + 2278 => 12278, + 2279 => 12279, + 2280 => 12280, + 2281 => 12281, + 2282 => 12282, + 2283 => 12283, + 2284 => 12284, + 2285 => 12285, + 2286 => 12286, + 2287 => 12287, + 2288 => 12288, + 2289 => 12289, + 2290 => 12290, + 2291 => 12291, + 2292 => 12292, + 2293 => 12293, + 2294 => 12294, + 2295 => 12295, + 2296 => 12296, + 2297 => 12297, + 2298 => 12298, + 2299 => 12299, + 2300 => 12300, + 2301 => 12301, + 2302 => 12302, + 2303 => 12303, + 2304 => 12304, + 2305 => 12305, + 2306 => 12306, + 2307 => 12307, + 2308 => 12308, + 2309 => 12309, + 2310 => 12310, + 2311 => 12311, + 2312 => 12312, + 2313 => 12313, + 2314 => 12314, + 2315 => 12315, + 2316 => 12316, + 2317 => 12317, + 2318 => 12318, + 2319 => 12319, + 2320 => 12320, + 2321 => 12321, + 2322 => 12322, + 2323 => 12323, + 2324 => 12324, + 2325 => 12325, + 2326 => 12326, + 2327 => 12327, + 2328 => 12328, + 2329 => 12329, + 2330 => 12330, + 2331 => 12331, + 2332 => 12332, + 2333 => 12333, + 2334 => 12334, + 2335 => 12335, + 2336 => 12336, + 2337 => 12337, + 2338 => 12338, + 2339 => 12339, + 2340 => 12340, + 2341 => 12341, + 2342 => 12342, + 2343 => 12343, + 2344 => 12344, + 2345 => 12345, + 2346 => 12346, + 2347 => 12347, + 2348 => 12348, + 2349 => 12349, + 2350 => 12350, + 2351 => 12351, + 2352 => 12352, + 2353 => 12353, + 2354 => 12354, + 2355 => 12355, + 2356 => 12356, + 2357 => 12357, + 2358 => 12358, + 2359 => 12359, + 2360 => 12360, + 2361 => 12361, + 2362 => 12362, + 2363 => 12363, + 2364 => 12364, + 2365 => 12365, + 2366 => 12366, + 2367 => 12367, + 2368 => 12368, + 2369 => 12369, + 2370 => 12370, + 2371 => 12371, + 2372 => 12372, + 2373 => 12373, + 2374 => 12374, + 2375 => 12375, + 2376 => 12376, + 2377 => 12377, + 2378 => 12378, + 2379 => 12379, + 2380 => 12380, + 2381 => 12381, + 2382 => 12382, + 2383 => 12383, + 2384 => 12384, + 2385 => 12385, + 2386 => 12386, + 2387 => 12387, + 2388 => 12388, + 2389 => 12389, + 2390 => 12390, + 2391 => 12391, + 2392 => 12392, + 2393 => 12393, + 2394 => 12394, + 2395 => 12395, + 2396 => 12396, + 2397 => 12397, + 2398 => 12398, + 2399 => 12399, + 2400 => 12400, + 2401 => 12401, + 2402 => 12402, + 2403 => 12403, + 2404 => 12404, + 2405 => 12405, + 2406 => 12406, + 2407 => 12407, + 2408 => 12408, + 2409 => 12409, + 2410 => 12410, + 2411 => 12411, + 2412 => 12412, + 2413 => 12413, + 2414 => 12414, + 2415 => 12415, + 2416 => 12416, + 2417 => 12417, + 2418 => 12418, + 2419 => 12419, + 2420 => 12420, + 2421 => 12421, + 2422 => 12422, + 2423 => 12423, + 2424 => 12424, + 2425 => 12425, + 2426 => 12426, + 2427 => 12427, + 2428 => 12428, + 2429 => 12429, + 2430 => 12430, + 2431 => 12431, + 2432 => 12432, + 2433 => 12433, + 2434 => 12434, + 2435 => 12435, + 2436 => 12436, + 2437 => 12437, + 2438 => 12438, + 2439 => 12439, + 2440 => 12440, + 2441 => 12441, + 2442 => 12442, + 2443 => 12443, + 2444 => 12444, + 2445 => 12445, + 2446 => 12446, + 2447 => 12447, + 2448 => 12448, + 2449 => 12449, + 2450 => 12450, + 2451 => 12451, + 2452 => 12452, + 2453 => 12453, + 2454 => 12454, + 2455 => 12455, + 2456 => 12456, + 2457 => 12457, + 2458 => 12458, + 2459 => 12459, + 2460 => 12460, + 2461 => 12461, + 2462 => 12462, + 2463 => 12463, + 2464 => 12464, + 2465 => 12465, + 2466 => 12466, + 2467 => 12467, + 2468 => 12468, + 2469 => 12469, + 2470 => 12470, + 2471 => 12471, + 2472 => 12472, + 2473 => 12473, + 2474 => 12474, + 2475 => 12475, + 2476 => 12476, + 2477 => 12477, + 2478 => 12478, + 2479 => 12479, + 2480 => 12480, + 2481 => 12481, + 2482 => 12482, + 2483 => 12483, + 2484 => 12484, + 2485 => 12485, + 2486 => 12486, + 2487 => 12487, + 2488 => 12488, + 2489 => 12489, + 2490 => 12490, + 2491 => 12491, + 2492 => 12492, + 2493 => 12493, + 2494 => 12494, + 2495 => 12495, + 2496 => 12496, + 2497 => 12497, + 2498 => 12498, + 2499 => 12499, + 2500 => 12500, + 2501 => 12501, + 2502 => 12502, + 2503 => 12503, + 2504 => 12504, + 2505 => 12505, + 2506 => 12506, + 2507 => 12507, + 2508 => 12508, + 2509 => 12509, + 2510 => 12510, + 2511 => 12511, + 2512 => 12512, + 2513 => 12513, + 2514 => 12514, + 2515 => 12515, + 2516 => 12516, + 2517 => 12517, + 2518 => 12518, + 2519 => 12519, + 2520 => 12520, + 2521 => 12521, + 2522 => 12522, + 2523 => 12523, + 2524 => 12524, + 2525 => 12525, + 2526 => 12526, + 2527 => 12527, + 2528 => 12528, + 2529 => 12529, + 2530 => 12530, + 2531 => 12531, + 2532 => 12532, + 2533 => 12533, + 2534 => 12534, + 2535 => 12535, + 2536 => 12536, + 2537 => 12537, + 2538 => 12538, + 2539 => 12539, + 2540 => 12540, + 2541 => 12541, + 2542 => 12542, + 2543 => 12543, + 2544 => 12544, + 2545 => 12545, + 2546 => 12546, + 2547 => 12547, + 2548 => 12548, + 2549 => 12549, + 2550 => 12550, + 2551 => 12551, + 2552 => 12552, + 2553 => 12553, + 2554 => 12554, + 2555 => 12555, + 2556 => 12556, + 2557 => 12557, + 2558 => 12558, + 2559 => 12559, + 2560 => 12560, + 2561 => 12561, + 2562 => 12562, + 2563 => 12563, + 2564 => 12564, + 2565 => 12565, + 2566 => 12566, + 2567 => 12567, + 2568 => 12568, + 2569 => 12569, + 2570 => 12570, + 2571 => 12571, + 2572 => 12572, + 2573 => 12573, + 2574 => 12574, + 2575 => 12575, + 2576 => 12576, + 2577 => 12577, + 2578 => 12578, + 2579 => 12579, + 2580 => 12580, + 2581 => 12581, + 2582 => 12582, + 2583 => 12583, + 2584 => 12584, + 2585 => 12585, + 2586 => 12586, + 2587 => 12587, + 2588 => 12588, + 2589 => 12589, + 2590 => 12590, + 2591 => 12591, + 2592 => 12592, + 2593 => 12593, + 2594 => 12594, + 2595 => 12595, + 2596 => 12596, + 2597 => 12597, + 2598 => 12598, + 2599 => 12599, + 2600 => 12600, + 2601 => 12601, + 2602 => 12602, + 2603 => 12603, + 2604 => 12604, + 2605 => 12605, + 2606 => 12606, + 2607 => 12607, + 2608 => 12608, + 2609 => 12609, + 2610 => 12610, + 2611 => 12611, + 2612 => 12612, + 2613 => 12613, + 2614 => 12614, + 2615 => 12615, + 2616 => 12616, + 2617 => 12617, + 2618 => 12618, + 2619 => 12619, + 2620 => 12620, + 2621 => 12621, + 2622 => 12622, + 2623 => 12623, + 2624 => 12624, + 2625 => 12625, + 2626 => 12626, + 2627 => 12627, + 2628 => 12628, + 2629 => 12629, + 2630 => 12630, + 2631 => 12631, + 2632 => 12632, + 2633 => 12633, + 2634 => 12634, + 2635 => 12635, + 2636 => 12636, + 2637 => 12637, + 2638 => 12638, + 2639 => 12639, + 2640 => 12640, + 2641 => 12641, + 2642 => 12642, + 2643 => 12643, + 2644 => 12644, + 2645 => 12645, + 2646 => 12646, + 2647 => 12647, + 2648 => 12648, + 2649 => 12649, + 2650 => 12650, + 2651 => 12651, + 2652 => 12652, + 2653 => 12653, + 2654 => 12654, + 2655 => 12655, + 2656 => 12656, + 2657 => 12657, + 2658 => 12658, + 2659 => 12659, + 2660 => 12660, + 2661 => 12661, + 2662 => 12662, + 2663 => 12663, + 2664 => 12664, + 2665 => 12665, + 2666 => 12666, + 2667 => 12667, + 2668 => 12668, + 2669 => 12669, + 2670 => 12670, + 2671 => 12671, + 2672 => 12672, + 2673 => 12673, + 2674 => 12674, + 2675 => 12675, + 2676 => 12676, + 2677 => 12677, + 2678 => 12678, + 2679 => 12679, + 2680 => 12680, + 2681 => 12681, + 2682 => 12682, + 2683 => 12683, + 2684 => 12684, + 2685 => 12685, + 2686 => 12686, + 2687 => 12687, + 2688 => 12688, + 2689 => 12689, + 2690 => 12690, + 2691 => 12691, + 2692 => 12692, + 2693 => 12693, + 2694 => 12694, + 2695 => 12695, + 2696 => 12696, + 2697 => 12697, + 2698 => 12698, + 2699 => 12699, + 2700 => 12700, + 2701 => 12701, + 2702 => 12702, + 2703 => 12703, + 2704 => 12704, + 2705 => 12705, + 2706 => 12706, + 2707 => 12707, + 2708 => 12708, + 2709 => 12709, + 2710 => 12710, + 2711 => 12711, + 2712 => 12712, + 2713 => 12713, + 2714 => 12714, + 2715 => 12715, + 2716 => 12716, + 2717 => 12717, + 2718 => 12718, + 2719 => 12719, + 2720 => 12720, + 2721 => 12721, + 2722 => 12722, + 2723 => 12723, + 2724 => 12724, + 2725 => 12725, + 2726 => 12726, + 2727 => 12727, + 2728 => 12728, + 2729 => 12729, + 2730 => 12730, + 2731 => 12731, + 2732 => 12732, + 2733 => 12733, + 2734 => 12734, + 2735 => 12735, + 2736 => 12736, + 2737 => 12737, + 2738 => 12738, + 2739 => 12739, + 2740 => 12740, + 2741 => 12741, + 2742 => 12742, + 2743 => 12743, + 2744 => 12744, + 2745 => 12745, + 2746 => 12746, + 2747 => 12747, + 2748 => 12748, + 2749 => 12749, + 2750 => 12750, + 2751 => 12751, + 2752 => 12752, + 2753 => 12753, + 2754 => 12754, + 2755 => 12755, + 2756 => 12756, + 2757 => 12757, + 2758 => 12758, + 2759 => 12759, + 2760 => 12760, + 2761 => 12761, + 2762 => 12762, + 2763 => 12763, + 2764 => 12764, + 2765 => 12765, + 2766 => 12766, + 2767 => 12767, + 2768 => 12768, + 2769 => 12769, + 2770 => 12770, + 2771 => 12771, + 2772 => 12772, + 2773 => 12773, + 2774 => 12774, + 2775 => 12775, + 2776 => 12776, + 2777 => 12777, + 2778 => 12778, + 2779 => 12779, + 2780 => 12780, + 2781 => 12781, + 2782 => 12782, + 2783 => 12783, + 2784 => 12784, + 2785 => 12785, + 2786 => 12786, + 2787 => 12787, + 2788 => 12788, + 2789 => 12789, + 2790 => 12790, + 2791 => 12791, + 2792 => 12792, + 2793 => 12793, + 2794 => 12794, + 2795 => 12795, + 2796 => 12796, + 2797 => 12797, + 2798 => 12798, + 2799 => 12799, + 2800 => 12800, + 2801 => 12801, + 2802 => 12802, + 2803 => 12803, + 2804 => 12804, + 2805 => 12805, + 2806 => 12806, + 2807 => 12807, + 2808 => 12808, + 2809 => 12809, + 2810 => 12810, + 2811 => 12811, + 2812 => 12812, + 2813 => 12813, + 2814 => 12814, + 2815 => 12815, + 2816 => 12816, + 2817 => 12817, + 2818 => 12818, + 2819 => 12819, + 2820 => 12820, + 2821 => 12821, + 2822 => 12822, + 2823 => 12823, + 2824 => 12824, + 2825 => 12825, + 2826 => 12826, + 2827 => 12827, + 2828 => 12828, + 2829 => 12829, + 2830 => 12830, + 2831 => 12831, + 2832 => 12832, + 2833 => 12833, + 2834 => 12834, + 2835 => 12835, + 2836 => 12836, + 2837 => 12837, + 2838 => 12838, + 2839 => 12839, + 2840 => 12840, + 2841 => 12841, + 2842 => 12842, + 2843 => 12843, + 2844 => 12844, + 2845 => 12845, + 2846 => 12846, + 2847 => 12847, + 2848 => 12848, + 2849 => 12849, + 2850 => 12850, + 2851 => 12851, + 2852 => 12852, + 2853 => 12853, + 2854 => 12854, + 2855 => 12855, + 2856 => 12856, + 2857 => 12857, + 2858 => 12858, + 2859 => 12859, + 2860 => 12860, + 2861 => 12861, + 2862 => 12862, + 2863 => 12863, + 2864 => 12864, + 2865 => 12865, + 2866 => 12866, + 2867 => 12867, + 2868 => 12868, + 2869 => 12869, + 2870 => 12870, + 2871 => 12871, + 2872 => 12872, + 2873 => 12873, + 2874 => 12874, + 2875 => 12875, + 2876 => 12876, + 2877 => 12877, + 2878 => 12878, + 2879 => 12879, + 2880 => 12880, + 2881 => 12881, + 2882 => 12882, + 2883 => 12883, + 2884 => 12884, + 2885 => 12885, + 2886 => 12886, + 2887 => 12887, + 2888 => 12888, + 2889 => 12889, + 2890 => 12890, + 2891 => 12891, + 2892 => 12892, + 2893 => 12893, + 2894 => 12894, + 2895 => 12895, + 2896 => 12896, + 2897 => 12897, + 2898 => 12898, + 2899 => 12899, + 2900 => 12900, + 2901 => 12901, + 2902 => 12902, + 2903 => 12903, + 2904 => 12904, + 2905 => 12905, + 2906 => 12906, + 2907 => 12907, + 2908 => 12908, + 2909 => 12909, + 2910 => 12910, + 2911 => 12911, + 2912 => 12912, + 2913 => 12913, + 2914 => 12914, + 2915 => 12915, + 2916 => 12916, + 2917 => 12917, + 2918 => 12918, + 2919 => 12919, + 2920 => 12920, + 2921 => 12921, + 2922 => 12922, + 2923 => 12923, + 2924 => 12924, + 2925 => 12925, + 2926 => 12926, + 2927 => 12927, + 2928 => 12928, + 2929 => 12929, + 2930 => 12930, + 2931 => 12931, + 2932 => 12932, + 2933 => 12933, + 2934 => 12934, + 2935 => 12935, + 2936 => 12936, + 2937 => 12937, + 2938 => 12938, + 2939 => 12939, + 2940 => 12940, + 2941 => 12941, + 2942 => 12942, + 2943 => 12943, + 2944 => 12944, + 2945 => 12945, + 2946 => 12946, + 2947 => 12947, + 2948 => 12948, + 2949 => 12949, + 2950 => 12950, + 2951 => 12951, + 2952 => 12952, + 2953 => 12953, + 2954 => 12954, + 2955 => 12955, + 2956 => 12956, + 2957 => 12957, + 2958 => 12958, + 2959 => 12959, + 2960 => 12960, + 2961 => 12961, + 2962 => 12962, + 2963 => 12963, + 2964 => 12964, + 2965 => 12965, + 2966 => 12966, + 2967 => 12967, + 2968 => 12968, + 2969 => 12969, + 2970 => 12970, + 2971 => 12971, + 2972 => 12972, + 2973 => 12973, + 2974 => 12974, + 2975 => 12975, + 2976 => 12976, + 2977 => 12977, + 2978 => 12978, + 2979 => 12979, + 2980 => 12980, + 2981 => 12981, + 2982 => 12982, + 2983 => 12983, + 2984 => 12984, + 2985 => 12985, + 2986 => 12986, + 2987 => 12987, + 2988 => 12988, + 2989 => 12989, + 2990 => 12990, + 2991 => 12991, + 2992 => 12992, + 2993 => 12993, + 2994 => 12994, + 2995 => 12995, + 2996 => 12996, + 2997 => 12997, + 2998 => 12998, + 2999 => 12999, + 3000 => 13000, + 3001 => 13001, + 3002 => 13002, + 3003 => 13003, + 3004 => 13004, + 3005 => 13005, + 3006 => 13006, + 3007 => 13007, + 3008 => 13008, + 3009 => 13009, + 3010 => 13010, + 3011 => 13011, + 3012 => 13012, + 3013 => 13013, + 3014 => 13014, + 3015 => 13015, + 3016 => 13016, + 3017 => 13017, + 3018 => 13018, + 3019 => 13019, + 3020 => 13020, + 3021 => 13021, + 3022 => 13022, + 3023 => 13023, + 3024 => 13024, + 3025 => 13025, + 3026 => 13026, + 3027 => 13027, + 3028 => 13028, + 3029 => 13029, + 3030 => 13030, + 3031 => 13031, + 3032 => 13032, + 3033 => 13033, + 3034 => 13034, + 3035 => 13035, + 3036 => 13036, + 3037 => 13037, + 3038 => 13038, + 3039 => 13039, + 3040 => 13040, + 3041 => 13041, + 3042 => 13042, + 3043 => 13043, + 3044 => 13044, + 3045 => 13045, + 3046 => 13046, + 3047 => 13047, + 3048 => 13048, + 3049 => 13049, + 3050 => 13050, + 3051 => 13051, + 3052 => 13052, + 3053 => 13053, + 3054 => 13054, + 3055 => 13055, + 3056 => 13056, + 3057 => 13057, + 3058 => 13058, + 3059 => 13059, + 3060 => 13060, + 3061 => 13061, + 3062 => 13062, + 3063 => 13063, + 3064 => 13064, + 3065 => 13065, + 3066 => 13066, + 3067 => 13067, + 3068 => 13068, + 3069 => 13069, + 3070 => 13070, + 3071 => 13071, + 3072 => 13072, + 3073 => 13073, + 3074 => 13074, + 3075 => 13075, + 3076 => 13076, + 3077 => 13077, + 3078 => 13078, + 3079 => 13079, + 3080 => 13080, + 3081 => 13081, + 3082 => 13082, + 3083 => 13083, + 3084 => 13084, + 3085 => 13085, + 3086 => 13086, + 3087 => 13087, + 3088 => 13088, + 3089 => 13089, + 3090 => 13090, + 3091 => 13091, + 3092 => 13092, + 3093 => 13093, + 3094 => 13094, + 3095 => 13095, + 3096 => 13096, + 3097 => 13097, + 3098 => 13098, + 3099 => 13099, + 3100 => 13100, + 3101 => 13101, + 3102 => 13102, + 3103 => 13103, + 3104 => 13104, + 3105 => 13105, + 3106 => 13106, + 3107 => 13107, + 3108 => 13108, + 3109 => 13109, + 3110 => 13110, + 3111 => 13111, + 3112 => 13112, + 3113 => 13113, + 3114 => 13114, + 3115 => 13115, + 3116 => 13116, + 3117 => 13117, + 3118 => 13118, + 3119 => 13119, + 3120 => 13120, + 3121 => 13121, + 3122 => 13122, + 3123 => 13123, + 3124 => 13124, + 3125 => 13125, + 3126 => 13126, + 3127 => 13127, + 3128 => 13128, + 3129 => 13129, + 3130 => 13130, + 3131 => 13131, + 3132 => 13132, + 3133 => 13133, + 3134 => 13134, + 3135 => 13135, + 3136 => 13136, + 3137 => 13137, + 3138 => 13138, + 3139 => 13139, + 3140 => 13140, + 3141 => 13141, + 3142 => 13142, + 3143 => 13143, + 3144 => 13144, + 3145 => 13145, + 3146 => 13146, + 3147 => 13147, + 3148 => 13148, + 3149 => 13149, + 3150 => 13150, + 3151 => 13151, + 3152 => 13152, + 3153 => 13153, + 3154 => 13154, + 3155 => 13155, + 3156 => 13156, + 3157 => 13157, + 3158 => 13158, + 3159 => 13159, + 3160 => 13160, + 3161 => 13161, + 3162 => 13162, + 3163 => 13163, + 3164 => 13164, + 3165 => 13165, + 3166 => 13166, + 3167 => 13167, + 3168 => 13168, + 3169 => 13169, + 3170 => 13170, + 3171 => 13171, + 3172 => 13172, + 3173 => 13173, + 3174 => 13174, + 3175 => 13175, + 3176 => 13176, + 3177 => 13177, + 3178 => 13178, + 3179 => 13179, + 3180 => 13180, + 3181 => 13181, + 3182 => 13182, + 3183 => 13183, + 3184 => 13184, + 3185 => 13185, + 3186 => 13186, + 3187 => 13187, + 3188 => 13188, + 3189 => 13189, + 3190 => 13190, + 3191 => 13191, + 3192 => 13192, + 3193 => 13193, + 3194 => 13194, + 3195 => 13195, + 3196 => 13196, + 3197 => 13197, + 3198 => 13198, + 3199 => 13199, + 3200 => 13200, + 3201 => 13201, + 3202 => 13202, + 3203 => 13203, + 3204 => 13204, + 3205 => 13205, + 3206 => 13206, + 3207 => 13207, + 3208 => 13208, + 3209 => 13209, + 3210 => 13210, + 3211 => 13211, + 3212 => 13212, + 3213 => 13213, + 3214 => 13214, + 3215 => 13215, + 3216 => 13216, + 3217 => 13217, + 3218 => 13218, + 3219 => 13219, + 3220 => 13220, + 3221 => 13221, + 3222 => 13222, + 3223 => 13223, + 3224 => 13224, + 3225 => 13225, + 3226 => 13226, + 3227 => 13227, + 3228 => 13228, + 3229 => 13229, + 3230 => 13230, + 3231 => 13231, + 3232 => 13232, + 3233 => 13233, + 3234 => 13234, + 3235 => 13235, + 3236 => 13236, + 3237 => 13237, + 3238 => 13238, + 3239 => 13239, + 3240 => 13240, + 3241 => 13241, + 3242 => 13242, + 3243 => 13243, + 3244 => 13244, + 3245 => 13245, + 3246 => 13246, + 3247 => 13247, + 3248 => 13248, + 3249 => 13249, + 3250 => 13250, + 3251 => 13251, + 3252 => 13252, + 3253 => 13253, + 3254 => 13254, + 3255 => 13255, + 3256 => 13256, + 3257 => 13257, + 3258 => 13258, + 3259 => 13259, + 3260 => 13260, + 3261 => 13261, + 3262 => 13262, + 3263 => 13263, + 3264 => 13264, + 3265 => 13265, + 3266 => 13266, + 3267 => 13267, + 3268 => 13268, + 3269 => 13269, + 3270 => 13270, + 3271 => 13271, + 3272 => 13272, + 3273 => 13273, + 3274 => 13274, + 3275 => 13275, + 3276 => 13276, + 3277 => 13277, + 3278 => 13278, + 3279 => 13279, + 3280 => 13280, + 3281 => 13281, + 3282 => 13282, + 3283 => 13283, + 3284 => 13284, + 3285 => 13285, + 3286 => 13286, + 3287 => 13287, + 3288 => 13288, + 3289 => 13289, + 3290 => 13290, + 3291 => 13291, + 3292 => 13292, + 3293 => 13293, + 3294 => 13294, + 3295 => 13295, + 3296 => 13296, + 3297 => 13297, + 3298 => 13298, + 3299 => 13299, + 3300 => 13300, + 3301 => 13301, + 3302 => 13302, + 3303 => 13303, + 3304 => 13304, + 3305 => 13305, + 3306 => 13306, + 3307 => 13307, + 3308 => 13308, + 3309 => 13309, + 3310 => 13310, + 3311 => 13311, + 3312 => 13312, + 3313 => 13313, + 3314 => 13314, + 3315 => 13315, + 3316 => 13316, + 3317 => 13317, + 3318 => 13318, + 3319 => 13319, + 3320 => 13320, + 3321 => 13321, + 3322 => 13322, + 3323 => 13323, + 3324 => 13324, + 3325 => 13325, + 3326 => 13326, + 3327 => 13327, + 3328 => 13328, + 3329 => 13329, + 3330 => 13330, + 3331 => 13331, + 3332 => 13332, + 3333 => 13333, + 3334 => 13334, + 3335 => 13335, + 3336 => 13336, + 3337 => 13337, + 3338 => 13338, + 3339 => 13339, + 3340 => 13340, + 3341 => 13341, + 3342 => 13342, + 3343 => 13343, + 3344 => 13344, + 3345 => 13345, + 3346 => 13346, + 3347 => 13347, + 3348 => 13348, + 3349 => 13349, + 3350 => 13350, + 3351 => 13351, + 3352 => 13352, + 3353 => 13353, + 3354 => 13354, + 3355 => 13355, + 3356 => 13356, + 3357 => 13357, + 3358 => 13358, + 3359 => 13359, + 3360 => 13360, + 3361 => 13361, + 3362 => 13362, + 3363 => 13363, + 3364 => 13364, + 3365 => 13365, + 3366 => 13366, + 3367 => 13367, + 3368 => 13368, + 3369 => 13369, + 3370 => 13370, + 3371 => 13371, + 3372 => 13372, + 3373 => 13373, + 3374 => 13374, + 3375 => 13375, + 3376 => 13376, + 3377 => 13377, + 3378 => 13378, + 3379 => 13379, + 3380 => 13380, + 3381 => 13381, + 3382 => 13382, + 3383 => 13383, + 3384 => 13384, + 3385 => 13385, + 3386 => 13386, + 3387 => 13387, + 3388 => 13388, + 3389 => 13389, + 3390 => 13390, + 3391 => 13391, + 3392 => 13392, + 3393 => 13393, + 3394 => 13394, + 3395 => 13395, + 3396 => 13396, + 3397 => 13397, + 3398 => 13398, + 3399 => 13399, + 3400 => 13400, + 3401 => 13401, + 3402 => 13402, + 3403 => 13403, + 3404 => 13404, + 3405 => 13405, + 3406 => 13406, + 3407 => 13407, + 3408 => 13408, + 3409 => 13409, + 3410 => 13410, + 3411 => 13411, + 3412 => 13412, + 3413 => 13413, + 3414 => 13414, + 3415 => 13415, + 3416 => 13416, + 3417 => 13417, + 3418 => 13418, + 3419 => 13419, + 3420 => 13420, + 3421 => 13421, + 3422 => 13422, + 3423 => 13423, + 3424 => 13424, + 3425 => 13425, + 3426 => 13426, + 3427 => 13427, + 3428 => 13428, + 3429 => 13429, + 3430 => 13430, + 3431 => 13431, + 3432 => 13432, + 3433 => 13433, + 3434 => 13434, + 3435 => 13435, + 3436 => 13436, + 3437 => 13437, + 3438 => 13438, + 3439 => 13439, + 3440 => 13440, + 3441 => 13441, + 3442 => 13442, + 3443 => 13443, + 3444 => 13444, + 3445 => 13445, + 3446 => 13446, + 3447 => 13447, + 3448 => 13448, + 3449 => 13449, + 3450 => 13450, + 3451 => 13451, + 3452 => 13452, + 3453 => 13453, + 3454 => 13454, + 3455 => 13455, + 3456 => 13456, + 3457 => 13457, + 3458 => 13458, + 3459 => 13459, + 3460 => 13460, + 3461 => 13461, + 3462 => 13462, + 3463 => 13463, + 3464 => 13464, + 3465 => 13465, + 3466 => 13466, + 3467 => 13467, + 3468 => 13468, + 3469 => 13469, + 3470 => 13470, + 3471 => 13471, + 3472 => 13472, + 3473 => 13473, + 3474 => 13474, + 3475 => 13475, + 3476 => 13476, + 3477 => 13477, + 3478 => 13478, + 3479 => 13479, + 3480 => 13480, + 3481 => 13481, + 3482 => 13482, + 3483 => 13483, + 3484 => 13484, + 3485 => 13485, + 3486 => 13486, + 3487 => 13487, + 3488 => 13488, + 3489 => 13489, + 3490 => 13490, + 3491 => 13491, + 3492 => 13492, + 3493 => 13493, + 3494 => 13494, + 3495 => 13495, + 3496 => 13496, + 3497 => 13497, + 3498 => 13498, + 3499 => 13499, + 3500 => 13500, + 3501 => 13501, + 3502 => 13502, + 3503 => 13503, + 3504 => 13504, + 3505 => 13505, + 3506 => 13506, + 3507 => 13507, + 3508 => 13508, + 3509 => 13509, + 3510 => 13510, + 3511 => 13511, + 3512 => 13512, + 3513 => 13513, + 3514 => 13514, + 3515 => 13515, + 3516 => 13516, + 3517 => 13517, + 3518 => 13518, + 3519 => 13519, + 3520 => 13520, + 3521 => 13521, + 3522 => 13522, + 3523 => 13523, + 3524 => 13524, + 3525 => 13525, + 3526 => 13526, + 3527 => 13527, + 3528 => 13528, + 3529 => 13529, + 3530 => 13530, + 3531 => 13531, + 3532 => 13532, + 3533 => 13533, + 3534 => 13534, + 3535 => 13535, + 3536 => 13536, + 3537 => 13537, + 3538 => 13538, + 3539 => 13539, + 3540 => 13540, + 3541 => 13541, + 3542 => 13542, + 3543 => 13543, + 3544 => 13544, + 3545 => 13545, + 3546 => 13546, + 3547 => 13547, + 3548 => 13548, + 3549 => 13549, + 3550 => 13550, + 3551 => 13551, + 3552 => 13552, + 3553 => 13553, + 3554 => 13554, + 3555 => 13555, + 3556 => 13556, + 3557 => 13557, + 3558 => 13558, + 3559 => 13559, + 3560 => 13560, + 3561 => 13561, + 3562 => 13562, + 3563 => 13563, + 3564 => 13564, + 3565 => 13565, + 3566 => 13566, + 3567 => 13567, + 3568 => 13568, + 3569 => 13569, + 3570 => 13570, + 3571 => 13571, + 3572 => 13572, + 3573 => 13573, + 3574 => 13574, + 3575 => 13575, + 3576 => 13576, + 3577 => 13577, + 3578 => 13578, + 3579 => 13579, + 3580 => 13580, + 3581 => 13581, + 3582 => 13582, + 3583 => 13583, + 3584 => 13584, + 3585 => 13585, + 3586 => 13586, + 3587 => 13587, + 3588 => 13588, + 3589 => 13589, + 3590 => 13590, + 3591 => 13591, + 3592 => 13592, + 3593 => 13593, + 3594 => 13594, + 3595 => 13595, + 3596 => 13596, + 3597 => 13597, + 3598 => 13598, + 3599 => 13599, + 3600 => 13600, + 3601 => 13601, + 3602 => 13602, + 3603 => 13603, + 3604 => 13604, + 3605 => 13605, + 3606 => 13606, + 3607 => 13607, + 3608 => 13608, + 3609 => 13609, + 3610 => 13610, + 3611 => 13611, + 3612 => 13612, + 3613 => 13613, + 3614 => 13614, + 3615 => 13615, + 3616 => 13616, + 3617 => 13617, + 3618 => 13618, + 3619 => 13619, + 3620 => 13620, + 3621 => 13621, + 3622 => 13622, + 3623 => 13623, + 3624 => 13624, + 3625 => 13625, + 3626 => 13626, + 3627 => 13627, + 3628 => 13628, + 3629 => 13629, + 3630 => 13630, + 3631 => 13631, + 3632 => 13632, + 3633 => 13633, + 3634 => 13634, + 3635 => 13635, + 3636 => 13636, + 3637 => 13637, + 3638 => 13638, + 3639 => 13639, + 3640 => 13640, + 3641 => 13641, + 3642 => 13642, + 3643 => 13643, + 3644 => 13644, + 3645 => 13645, + 3646 => 13646, + 3647 => 13647, + 3648 => 13648, + 3649 => 13649, + 3650 => 13650, + 3651 => 13651, + 3652 => 13652, + 3653 => 13653, + 3654 => 13654, + 3655 => 13655, + 3656 => 13656, + 3657 => 13657, + 3658 => 13658, + 3659 => 13659, + 3660 => 13660, + 3661 => 13661, + 3662 => 13662, + 3663 => 13663, + 3664 => 13664, + 3665 => 13665, + 3666 => 13666, + 3667 => 13667, + 3668 => 13668, + 3669 => 13669, + 3670 => 13670, + 3671 => 13671, + 3672 => 13672, + 3673 => 13673, + 3674 => 13674, + 3675 => 13675, + 3676 => 13676, + 3677 => 13677, + 3678 => 13678, + 3679 => 13679, + 3680 => 13680, + 3681 => 13681, + 3682 => 13682, + 3683 => 13683, + 3684 => 13684, + 3685 => 13685, + 3686 => 13686, + 3687 => 13687, + 3688 => 13688, + 3689 => 13689, + 3690 => 13690, + 3691 => 13691, + 3692 => 13692, + 3693 => 13693, + 3694 => 13694, + 3695 => 13695, + 3696 => 13696, + 3697 => 13697, + 3698 => 13698, + 3699 => 13699, + 3700 => 13700, + 3701 => 13701, + 3702 => 13702, + 3703 => 13703, + 3704 => 13704, + 3705 => 13705, + 3706 => 13706, + 3707 => 13707, + 3708 => 13708, + 3709 => 13709, + 3710 => 13710, + 3711 => 13711, + 3712 => 13712, + 3713 => 13713, + 3714 => 13714, + 3715 => 13715, + 3716 => 13716, + 3717 => 13717, + 3718 => 13718, + 3719 => 13719, + 3720 => 13720, + 3721 => 13721, + 3722 => 13722, + 3723 => 13723, + 3724 => 13724, + 3725 => 13725, + 3726 => 13726, + 3727 => 13727, + 3728 => 13728, + 3729 => 13729, + 3730 => 13730, + 3731 => 13731, + 3732 => 13732, + 3733 => 13733, + 3734 => 13734, + 3735 => 13735, + 3736 => 13736, + 3737 => 13737, + 3738 => 13738, + 3739 => 13739, + 3740 => 13740, + 3741 => 13741, + 3742 => 13742, + 3743 => 13743, + 3744 => 13744, + 3745 => 13745, + 3746 => 13746, + 3747 => 13747, + 3748 => 13748, + 3749 => 13749, + 3750 => 13750, + 3751 => 13751, + 3752 => 13752, + 3753 => 13753, + 3754 => 13754, + 3755 => 13755, + 3756 => 13756, + 3757 => 13757, + 3758 => 13758, + 3759 => 13759, + 3760 => 13760, + 3761 => 13761, + 3762 => 13762, + 3763 => 13763, + 3764 => 13764, + 3765 => 13765, + 3766 => 13766, + 3767 => 13767, + 3768 => 13768, + 3769 => 13769, + 3770 => 13770, + 3771 => 13771, + 3772 => 13772, + 3773 => 13773, + 3774 => 13774, + 3775 => 13775, + 3776 => 13776, + 3777 => 13777, + 3778 => 13778, + 3779 => 13779, + 3780 => 13780, + 3781 => 13781, + 3782 => 13782, + 3783 => 13783, + 3784 => 13784, + 3785 => 13785, + 3786 => 13786, + 3787 => 13787, + 3788 => 13788, + 3789 => 13789, + 3790 => 13790, + 3791 => 13791, + 3792 => 13792, + 3793 => 13793, + 3794 => 13794, + 3795 => 13795, + 3796 => 13796, + 3797 => 13797, + 3798 => 13798, + 3799 => 13799, + 3800 => 13800, + 3801 => 13801, + 3802 => 13802, + 3803 => 13803, + 3804 => 13804, + 3805 => 13805, + 3806 => 13806, + 3807 => 13807, + 3808 => 13808, + 3809 => 13809, + 3810 => 13810, + 3811 => 13811, + 3812 => 13812, + 3813 => 13813, + 3814 => 13814, + 3815 => 13815, + 3816 => 13816, + 3817 => 13817, + 3818 => 13818, + 3819 => 13819, + 3820 => 13820, + 3821 => 13821, + 3822 => 13822, + 3823 => 13823, + 3824 => 13824, + 3825 => 13825, + 3826 => 13826, + 3827 => 13827, + 3828 => 13828, + 3829 => 13829, + 3830 => 13830, + 3831 => 13831, + 3832 => 13832, + 3833 => 13833, + 3834 => 13834, + 3835 => 13835, + 3836 => 13836, + 3837 => 13837, + 3838 => 13838, + 3839 => 13839, + 3840 => 13840, + 3841 => 13841, + 3842 => 13842, + 3843 => 13843, + 3844 => 13844, + 3845 => 13845, + 3846 => 13846, + 3847 => 13847, + 3848 => 13848, + 3849 => 13849, + 3850 => 13850, + 3851 => 13851, + 3852 => 13852, + 3853 => 13853, + 3854 => 13854, + 3855 => 13855, + 3856 => 13856, + 3857 => 13857, + 3858 => 13858, + 3859 => 13859, + 3860 => 13860, + 3861 => 13861, + 3862 => 13862, + 3863 => 13863, + 3864 => 13864, + 3865 => 13865, + 3866 => 13866, + 3867 => 13867, + 3868 => 13868, + 3869 => 13869, + 3870 => 13870, + 3871 => 13871, + 3872 => 13872, + 3873 => 13873, + 3874 => 13874, + 3875 => 13875, + 3876 => 13876, + 3877 => 13877, + 3878 => 13878, + 3879 => 13879, + 3880 => 13880, + 3881 => 13881, + 3882 => 13882, + 3883 => 13883, + 3884 => 13884, + 3885 => 13885, + 3886 => 13886, + 3887 => 13887, + 3888 => 13888, + 3889 => 13889, + 3890 => 13890, + 3891 => 13891, + 3892 => 13892, + 3893 => 13893, + 3894 => 13894, + 3895 => 13895, + 3896 => 13896, + 3897 => 13897, + 3898 => 13898, + 3899 => 13899, + 3900 => 13900, + 3901 => 13901, + 3902 => 13902, + 3903 => 13903, + 3904 => 13904, + 3905 => 13905, + 3906 => 13906, + 3907 => 13907, + 3908 => 13908, + 3909 => 13909, + 3910 => 13910, + 3911 => 13911, + 3912 => 13912, + 3913 => 13913, + 3914 => 13914, + 3915 => 13915, + 3916 => 13916, + 3917 => 13917, + 3918 => 13918, + 3919 => 13919, + 3920 => 13920, + 3921 => 13921, + 3922 => 13922, + 3923 => 13923, + 3924 => 13924, + 3925 => 13925, + 3926 => 13926, + 3927 => 13927, + 3928 => 13928, + 3929 => 13929, + 3930 => 13930, + 3931 => 13931, + 3932 => 13932, + 3933 => 13933, + 3934 => 13934, + 3935 => 13935, + 3936 => 13936, + 3937 => 13937, + 3938 => 13938, + 3939 => 13939, + 3940 => 13940, + 3941 => 13941, + 3942 => 13942, + 3943 => 13943, + 3944 => 13944, + 3945 => 13945, + 3946 => 13946, + 3947 => 13947, + 3948 => 13948, + 3949 => 13949, + 3950 => 13950, + 3951 => 13951, + 3952 => 13952, + 3953 => 13953, + 3954 => 13954, + 3955 => 13955, + 3956 => 13956, + 3957 => 13957, + 3958 => 13958, + 3959 => 13959, + 3960 => 13960, + 3961 => 13961, + 3962 => 13962, + 3963 => 13963, + 3964 => 13964, + 3965 => 13965, + 3966 => 13966, + 3967 => 13967, + 3968 => 13968, + 3969 => 13969, + 3970 => 13970, + 3971 => 13971, + 3972 => 13972, + 3973 => 13973, + 3974 => 13974, + 3975 => 13975, + 3976 => 13976, + 3977 => 13977, + 3978 => 13978, + 3979 => 13979, + 3980 => 13980, + 3981 => 13981, + 3982 => 13982, + 3983 => 13983, + 3984 => 13984, + 3985 => 13985, + 3986 => 13986, + 3987 => 13987, + 3988 => 13988, + 3989 => 13989, + 3990 => 13990, + 3991 => 13991, + 3992 => 13992, + 3993 => 13993, + 3994 => 13994, + 3995 => 13995, + 3996 => 13996, + 3997 => 13997, + 3998 => 13998, + 3999 => 13999, + 4000 => 14000, + 4001 => 14001, + 4002 => 14002, + 4003 => 14003, + 4004 => 14004, + 4005 => 14005, + 4006 => 14006, + 4007 => 14007, + 4008 => 14008, + 4009 => 14009, + 4010 => 14010, + 4011 => 14011, + 4012 => 14012, + 4013 => 14013, + 4014 => 14014, + 4015 => 14015, + 4016 => 14016, + 4017 => 14017, + 4018 => 14018, + 4019 => 14019, + 4020 => 14020, + 4021 => 14021, + 4022 => 14022, + 4023 => 14023, + 4024 => 14024, + 4025 => 14025, + 4026 => 14026, + 4027 => 14027, + 4028 => 14028, + 4029 => 14029, + 4030 => 14030, + 4031 => 14031, + 4032 => 14032, + 4033 => 14033, + 4034 => 14034, + 4035 => 14035, + 4036 => 14036, + 4037 => 14037, + 4038 => 14038, + 4039 => 14039, + 4040 => 14040, + 4041 => 14041, + 4042 => 14042, + 4043 => 14043, + 4044 => 14044, + 4045 => 14045, + 4046 => 14046, + 4047 => 14047, + 4048 => 14048, + 4049 => 14049, + 4050 => 14050, + 4051 => 14051, + 4052 => 14052, + 4053 => 14053, + 4054 => 14054, + 4055 => 14055, + 4056 => 14056, + 4057 => 14057, + 4058 => 14058, + 4059 => 14059, + 4060 => 14060, + 4061 => 14061, + 4062 => 14062, + 4063 => 14063, + 4064 => 14064, + 4065 => 14065, + 4066 => 14066, + 4067 => 14067, + 4068 => 14068, + 4069 => 14069, + 4070 => 14070, + 4071 => 14071, + 4072 => 14072, + 4073 => 14073, + 4074 => 14074, + 4075 => 14075, + 4076 => 14076, + 4077 => 14077, + 4078 => 14078, + 4079 => 14079, + 4080 => 14080, + 4081 => 14081, + 4082 => 14082, + 4083 => 14083, + 4084 => 14084, + 4085 => 14085, + 4086 => 14086, + 4087 => 14087, + 4088 => 14088, + 4089 => 14089, + 4090 => 14090, + 4091 => 14091, + 4092 => 14092, + 4093 => 14093, + 4094 => 14094, + 4095 => 14095, + 4096 => 14096, + 4097 => 14097, + 4098 => 14098, + 4099 => 14099, + 4100 => 14100, + 4101 => 14101, + 4102 => 14102, + 4103 => 14103, + 4104 => 14104, + 4105 => 14105, + 4106 => 14106, + 4107 => 14107, + 4108 => 14108, + 4109 => 14109, + 4110 => 14110, + 4111 => 14111, + 4112 => 14112, + 4113 => 14113, + 4114 => 14114, + 4115 => 14115, + 4116 => 14116, + 4117 => 14117, + 4118 => 14118, + 4119 => 14119, + 4120 => 14120, + 4121 => 14121, + 4122 => 14122, + 4123 => 14123, + 4124 => 14124, + 4125 => 14125, + 4126 => 14126, + 4127 => 14127, + 4128 => 14128, + 4129 => 14129, + 4130 => 14130, + 4131 => 14131, + 4132 => 14132, + 4133 => 14133, + 4134 => 14134, + 4135 => 14135, + 4136 => 14136, + 4137 => 14137, + 4138 => 14138, + 4139 => 14139, + 4140 => 14140, + 4141 => 14141, + 4142 => 14142, + 4143 => 14143, + 4144 => 14144, + 4145 => 14145, + 4146 => 14146, + 4147 => 14147, + 4148 => 14148, + 4149 => 14149, + 4150 => 14150, + 4151 => 14151, + 4152 => 14152, + 4153 => 14153, + 4154 => 14154, + 4155 => 14155, + 4156 => 14156, + 4157 => 14157, + 4158 => 14158, + 4159 => 14159, + 4160 => 14160, + 4161 => 14161, + 4162 => 14162, + 4163 => 14163, + 4164 => 14164, + 4165 => 14165, + 4166 => 14166, + 4167 => 14167, + 4168 => 14168, + 4169 => 14169, + 4170 => 14170, + 4171 => 14171, + 4172 => 14172, + 4173 => 14173, + 4174 => 14174, + 4175 => 14175, + 4176 => 14176, + 4177 => 14177, + 4178 => 14178, + 4179 => 14179, + 4180 => 14180, + 4181 => 14181, + 4182 => 14182, + 4183 => 14183, + 4184 => 14184, + 4185 => 14185, + 4186 => 14186, + 4187 => 14187, + 4188 => 14188, + 4189 => 14189, + 4190 => 14190, + 4191 => 14191, + 4192 => 14192, + 4193 => 14193, + 4194 => 14194, + 4195 => 14195, + 4196 => 14196, + 4197 => 14197, + 4198 => 14198, + 4199 => 14199, + 4200 => 14200, + 4201 => 14201, + 4202 => 14202, + 4203 => 14203, + 4204 => 14204, + 4205 => 14205, + 4206 => 14206, + 4207 => 14207, + 4208 => 14208, + 4209 => 14209, + 4210 => 14210, + 4211 => 14211, + 4212 => 14212, + 4213 => 14213, + 4214 => 14214, + 4215 => 14215, + 4216 => 14216, + 4217 => 14217, + 4218 => 14218, + 4219 => 14219, + 4220 => 14220, + 4221 => 14221, + 4222 => 14222, + 4223 => 14223, + 4224 => 14224, + 4225 => 14225, + 4226 => 14226, + 4227 => 14227, + 4228 => 14228, + 4229 => 14229, + 4230 => 14230, + 4231 => 14231, + 4232 => 14232, + 4233 => 14233, + 4234 => 14234, + 4235 => 14235, + 4236 => 14236, + 4237 => 14237, + 4238 => 14238, + 4239 => 14239, + 4240 => 14240, + 4241 => 14241, + 4242 => 14242, + 4243 => 14243, + 4244 => 14244, + 4245 => 14245, + 4246 => 14246, + 4247 => 14247, + 4248 => 14248, + 4249 => 14249, + 4250 => 14250, + 4251 => 14251, + 4252 => 14252, + 4253 => 14253, + 4254 => 14254, + 4255 => 14255, + 4256 => 14256, + 4257 => 14257, + 4258 => 14258, + 4259 => 14259, + 4260 => 14260, + 4261 => 14261, + 4262 => 14262, + 4263 => 14263, + 4264 => 14264, + 4265 => 14265, + 4266 => 14266, + 4267 => 14267, + 4268 => 14268, + 4269 => 14269, + 4270 => 14270, + 4271 => 14271, + 4272 => 14272, + 4273 => 14273, + 4274 => 14274, + 4275 => 14275, + 4276 => 14276, + 4277 => 14277, + 4278 => 14278, + 4279 => 14279, + 4280 => 14280, + 4281 => 14281, + 4282 => 14282, + 4283 => 14283, + 4284 => 14284, + 4285 => 14285, + 4286 => 14286, + 4287 => 14287, + 4288 => 14288, + 4289 => 14289, + 4290 => 14290, + 4291 => 14291, + 4292 => 14292, + 4293 => 14293, + 4294 => 14294, + 4295 => 14295, + 4296 => 14296, + 4297 => 14297, + 4298 => 14298, + 4299 => 14299, + 4300 => 14300, + 4301 => 14301, + 4302 => 14302, + 4303 => 14303, + 4304 => 14304, + 4305 => 14305, + 4306 => 14306, + 4307 => 14307, + 4308 => 14308, + 4309 => 14309, + 4310 => 14310, + 4311 => 14311, + 4312 => 14312, + 4313 => 14313, + 4314 => 14314, + 4315 => 14315, + 4316 => 14316, + 4317 => 14317, + 4318 => 14318, + 4319 => 14319, + 4320 => 14320, + 4321 => 14321, + 4322 => 14322, + 4323 => 14323, + 4324 => 14324, + 4325 => 14325, + 4326 => 14326, + 4327 => 14327, + 4328 => 14328, + 4329 => 14329, + 4330 => 14330, + 4331 => 14331, + 4332 => 14332, + 4333 => 14333, + 4334 => 14334, + 4335 => 14335, + 4336 => 14336, + 4337 => 14337, + 4338 => 14338, + 4339 => 14339, + 4340 => 14340, + 4341 => 14341, + 4342 => 14342, + 4343 => 14343, + 4344 => 14344, + 4345 => 14345, + 4346 => 14346, + 4347 => 14347, + 4348 => 14348, + 4349 => 14349, + 4350 => 14350, + 4351 => 14351, + 4352 => 14352, + 4353 => 14353, + 4354 => 14354, + 4355 => 14355, + 4356 => 14356, + 4357 => 14357, + 4358 => 14358, + 4359 => 14359, + 4360 => 14360, + 4361 => 14361, + 4362 => 14362, + 4363 => 14363, + 4364 => 14364, + 4365 => 14365, + 4366 => 14366, + 4367 => 14367, + 4368 => 14368, + 4369 => 14369, + 4370 => 14370, + 4371 => 14371, + 4372 => 14372, + 4373 => 14373, + 4374 => 14374, + 4375 => 14375, + 4376 => 14376, + 4377 => 14377, + 4378 => 14378, + 4379 => 14379, + 4380 => 14380, + 4381 => 14381, + 4382 => 14382, + 4383 => 14383, + 4384 => 14384, + 4385 => 14385, + 4386 => 14386, + 4387 => 14387, + 4388 => 14388, + 4389 => 14389, + 4390 => 14390, + 4391 => 14391, + 4392 => 14392, + 4393 => 14393, + 4394 => 14394, + 4395 => 14395, + 4396 => 14396, + 4397 => 14397, + 4398 => 14398, + 4399 => 14399, + 4400 => 14400, + 4401 => 14401, + 4402 => 14402, + 4403 => 14403, + 4404 => 14404, + 4405 => 14405, + 4406 => 14406, + 4407 => 14407, + 4408 => 14408, + 4409 => 14409, + 4410 => 14410, + 4411 => 14411, + 4412 => 14412, + 4413 => 14413, + 4414 => 14414, + 4415 => 14415, + 4416 => 14416, + 4417 => 14417, + 4418 => 14418, + 4419 => 14419, + 4420 => 14420, + 4421 => 14421, + 4422 => 14422, + 4423 => 14423, + 4424 => 14424, + 4425 => 14425, + 4426 => 14426, + 4427 => 14427, + 4428 => 14428, + 4429 => 14429, + 4430 => 14430, + 4431 => 14431, + 4432 => 14432, + 4433 => 14433, + 4434 => 14434, + 4435 => 14435, + 4436 => 14436, + 4437 => 14437, + 4438 => 14438, + 4439 => 14439, + 4440 => 14440, + 4441 => 14441, + 4442 => 14442, + 4443 => 14443, + 4444 => 14444, + 4445 => 14445, + 4446 => 14446, + 4447 => 14447, + 4448 => 14448, + 4449 => 14449, + 4450 => 14450, + 4451 => 14451, + 4452 => 14452, + 4453 => 14453, + 4454 => 14454, + 4455 => 14455, + 4456 => 14456, + 4457 => 14457, + 4458 => 14458, + 4459 => 14459, + 4460 => 14460, + 4461 => 14461, + 4462 => 14462, + 4463 => 14463, + 4464 => 14464, + 4465 => 14465, + 4466 => 14466, + 4467 => 14467, + 4468 => 14468, + 4469 => 14469, + 4470 => 14470, + 4471 => 14471, + 4472 => 14472, + 4473 => 14473, + 4474 => 14474, + 4475 => 14475, + 4476 => 14476, + 4477 => 14477, + 4478 => 14478, + 4479 => 14479, + 4480 => 14480, + 4481 => 14481, + 4482 => 14482, + 4483 => 14483, + 4484 => 14484, + 4485 => 14485, + 4486 => 14486, + 4487 => 14487, + 4488 => 14488, + 4489 => 14489, + 4490 => 14490, + 4491 => 14491, + 4492 => 14492, + 4493 => 14493, + 4494 => 14494, + 4495 => 14495, + 4496 => 14496, + 4497 => 14497, + 4498 => 14498, + 4499 => 14499, + 4500 => 14500, + 4501 => 14501, + 4502 => 14502, + 4503 => 14503, + 4504 => 14504, + 4505 => 14505, + 4506 => 14506, + 4507 => 14507, + 4508 => 14508, + 4509 => 14509, + 4510 => 14510, + 4511 => 14511, + 4512 => 14512, + 4513 => 14513, + 4514 => 14514, + 4515 => 14515, + 4516 => 14516, + 4517 => 14517, + 4518 => 14518, + 4519 => 14519, + 4520 => 14520, + 4521 => 14521, + 4522 => 14522, + 4523 => 14523, + 4524 => 14524, + 4525 => 14525, + 4526 => 14526, + 4527 => 14527, + 4528 => 14528, + 4529 => 14529, + 4530 => 14530, + 4531 => 14531, + 4532 => 14532, + 4533 => 14533, + 4534 => 14534, + 4535 => 14535, + 4536 => 14536, + 4537 => 14537, + 4538 => 14538, + 4539 => 14539, + 4540 => 14540, + 4541 => 14541, + 4542 => 14542, + 4543 => 14543, + 4544 => 14544, + 4545 => 14545, + 4546 => 14546, + 4547 => 14547, + 4548 => 14548, + 4549 => 14549, + 4550 => 14550, + 4551 => 14551, + 4552 => 14552, + 4553 => 14553, + 4554 => 14554, + 4555 => 14555, + 4556 => 14556, + 4557 => 14557, + 4558 => 14558, + 4559 => 14559, + 4560 => 14560, + 4561 => 14561, + 4562 => 14562, + 4563 => 14563, + 4564 => 14564, + 4565 => 14565, + 4566 => 14566, + 4567 => 14567, + 4568 => 14568, + 4569 => 14569, + 4570 => 14570, + 4571 => 14571, + 4572 => 14572, + 4573 => 14573, + 4574 => 14574, + 4575 => 14575, + 4576 => 14576, + 4577 => 14577, + 4578 => 14578, + 4579 => 14579, + 4580 => 14580, + 4581 => 14581, + 4582 => 14582, + 4583 => 14583, + 4584 => 14584, + 4585 => 14585, + 4586 => 14586, + 4587 => 14587, + 4588 => 14588, + 4589 => 14589, + 4590 => 14590, + 4591 => 14591, + 4592 => 14592, + 4593 => 14593, + 4594 => 14594, + 4595 => 14595, + 4596 => 14596, + 4597 => 14597, + 4598 => 14598, + 4599 => 14599, + 4600 => 14600, + 4601 => 14601, + 4602 => 14602, + 4603 => 14603, + 4604 => 14604, + 4605 => 14605, + 4606 => 14606, + 4607 => 14607, + 4608 => 14608, + 4609 => 14609, + 4610 => 14610, + 4611 => 14611, + 4612 => 14612, + 4613 => 14613, + 4614 => 14614, + 4615 => 14615, + 4616 => 14616, + 4617 => 14617, + 4618 => 14618, + 4619 => 14619, + 4620 => 14620, + 4621 => 14621, + 4622 => 14622, + 4623 => 14623, + 4624 => 14624, + 4625 => 14625, + 4626 => 14626, + 4627 => 14627, + 4628 => 14628, + 4629 => 14629, + 4630 => 14630, + 4631 => 14631, + 4632 => 14632, + 4633 => 14633, + 4634 => 14634, + 4635 => 14635, + 4636 => 14636, + 4637 => 14637, + 4638 => 14638, + 4639 => 14639, + 4640 => 14640, + 4641 => 14641, + 4642 => 14642, + 4643 => 14643, + 4644 => 14644, + 4645 => 14645, + 4646 => 14646, + 4647 => 14647, + 4648 => 14648, + 4649 => 14649, + 4650 => 14650, + 4651 => 14651, + 4652 => 14652, + 4653 => 14653, + 4654 => 14654, + 4655 => 14655, + 4656 => 14656, + 4657 => 14657, + 4658 => 14658, + 4659 => 14659, + 4660 => 14660, + 4661 => 14661, + 4662 => 14662, + 4663 => 14663, + 4664 => 14664, + 4665 => 14665, + 4666 => 14666, + 4667 => 14667, + 4668 => 14668, + 4669 => 14669, + 4670 => 14670, + 4671 => 14671, + 4672 => 14672, + 4673 => 14673, + 4674 => 14674, + 4675 => 14675, + 4676 => 14676, + 4677 => 14677, + 4678 => 14678, + 4679 => 14679, + 4680 => 14680, + 4681 => 14681, + 4682 => 14682, + 4683 => 14683, + 4684 => 14684, + 4685 => 14685, + 4686 => 14686, + 4687 => 14687, + 4688 => 14688, + 4689 => 14689, + 4690 => 14690, + 4691 => 14691, + 4692 => 14692, + 4693 => 14693, + 4694 => 14694, + 4695 => 14695, + 4696 => 14696, + 4697 => 14697, + 4698 => 14698, + 4699 => 14699, + 4700 => 14700, + 4701 => 14701, + 4702 => 14702, + 4703 => 14703, + 4704 => 14704, + 4705 => 14705, + 4706 => 14706, + 4707 => 14707, + 4708 => 14708, + 4709 => 14709, + 4710 => 14710, + 4711 => 14711, + 4712 => 14712, + 4713 => 14713, + 4714 => 14714, + 4715 => 14715, + 4716 => 14716, + 4717 => 14717, + 4718 => 14718, + 4719 => 14719, + 4720 => 14720, + 4721 => 14721, + 4722 => 14722, + 4723 => 14723, + 4724 => 14724, + 4725 => 14725, + 4726 => 14726, + 4727 => 14727, + 4728 => 14728, + 4729 => 14729, + 4730 => 14730, + 4731 => 14731, + 4732 => 14732, + 4733 => 14733, + 4734 => 14734, + 4735 => 14735, + 4736 => 14736, + 4737 => 14737, + 4738 => 14738, + 4739 => 14739, + 4740 => 14740, + 4741 => 14741, + 4742 => 14742, + 4743 => 14743, + 4744 => 14744, + 4745 => 14745, + 4746 => 14746, + 4747 => 14747, + 4748 => 14748, + 4749 => 14749, + 4750 => 14750, + 4751 => 14751, + 4752 => 14752, + 4753 => 14753, + 4754 => 14754, + 4755 => 14755, + 4756 => 14756, + 4757 => 14757, + 4758 => 14758, + 4759 => 14759, + 4760 => 14760, + 4761 => 14761, + 4762 => 14762, + 4763 => 14763, + 4764 => 14764, + 4765 => 14765, + 4766 => 14766, + 4767 => 14767, + 4768 => 14768, + 4769 => 14769, + 4770 => 14770, + 4771 => 14771, + 4772 => 14772, + 4773 => 14773, + 4774 => 14774, + 4775 => 14775, + 4776 => 14776, + 4777 => 14777, + 4778 => 14778, + 4779 => 14779, + 4780 => 14780, + 4781 => 14781, + 4782 => 14782, + 4783 => 14783, + 4784 => 14784, + 4785 => 14785, + 4786 => 14786, + 4787 => 14787, + 4788 => 14788, + 4789 => 14789, + 4790 => 14790, + 4791 => 14791, + 4792 => 14792, + 4793 => 14793, + 4794 => 14794, + 4795 => 14795, + 4796 => 14796, + 4797 => 14797, + 4798 => 14798, + 4799 => 14799, + 4800 => 14800, + 4801 => 14801, + 4802 => 14802, + 4803 => 14803, + 4804 => 14804, + 4805 => 14805, + 4806 => 14806, + 4807 => 14807, + 4808 => 14808, + 4809 => 14809, + 4810 => 14810, + 4811 => 14811, + 4812 => 14812, + 4813 => 14813, + 4814 => 14814, + 4815 => 14815, + 4816 => 14816, + 4817 => 14817, + 4818 => 14818, + 4819 => 14819, + 4820 => 14820, + 4821 => 14821, + 4822 => 14822, + 4823 => 14823, + 4824 => 14824, + 4825 => 14825, + 4826 => 14826, + 4827 => 14827, + 4828 => 14828, + 4829 => 14829, + 4830 => 14830, + 4831 => 14831, + 4832 => 14832, + 4833 => 14833, + 4834 => 14834, + 4835 => 14835, + 4836 => 14836, + 4837 => 14837, + 4838 => 14838, + 4839 => 14839, + 4840 => 14840, + 4841 => 14841, + 4842 => 14842, + 4843 => 14843, + 4844 => 14844, + 4845 => 14845, + 4846 => 14846, + 4847 => 14847, + 4848 => 14848, + 4849 => 14849, + 4850 => 14850, + 4851 => 14851, + 4852 => 14852, + 4853 => 14853, + 4854 => 14854, + 4855 => 14855, + 4856 => 14856, + 4857 => 14857, + 4858 => 14858, + 4859 => 14859, + 4860 => 14860, + 4861 => 14861, + 4862 => 14862, + 4863 => 14863, + 4864 => 14864, + 4865 => 14865, + 4866 => 14866, + 4867 => 14867, + 4868 => 14868, + 4869 => 14869, + 4870 => 14870, + 4871 => 14871, + 4872 => 14872, + 4873 => 14873, + 4874 => 14874, + 4875 => 14875, + 4876 => 14876, + 4877 => 14877, + 4878 => 14878, + 4879 => 14879, + 4880 => 14880, + 4881 => 14881, + 4882 => 14882, + 4883 => 14883, + 4884 => 14884, + 4885 => 14885, + 4886 => 14886, + 4887 => 14887, + 4888 => 14888, + 4889 => 14889, + 4890 => 14890, + 4891 => 14891, + 4892 => 14892, + 4893 => 14893, + 4894 => 14894, + 4895 => 14895, + 4896 => 14896, + 4897 => 14897, + 4898 => 14898, + 4899 => 14899, + 4900 => 14900, + 4901 => 14901, + 4902 => 14902, + 4903 => 14903, + 4904 => 14904, + 4905 => 14905, + 4906 => 14906, + 4907 => 14907, + 4908 => 14908, + 4909 => 14909, + 4910 => 14910, + 4911 => 14911, + 4912 => 14912, + 4913 => 14913, + 4914 => 14914, + 4915 => 14915, + 4916 => 14916, + 4917 => 14917, + 4918 => 14918, + 4919 => 14919, + 4920 => 14920, + 4921 => 14921, + 4922 => 14922, + 4923 => 14923, + 4924 => 14924, + 4925 => 14925, + 4926 => 14926, + 4927 => 14927, + 4928 => 14928, + 4929 => 14929, + 4930 => 14930, + 4931 => 14931, + 4932 => 14932, + 4933 => 14933, + 4934 => 14934, + 4935 => 14935, + 4936 => 14936, + 4937 => 14937, + 4938 => 14938, + 4939 => 14939, + 4940 => 14940, + 4941 => 14941, + 4942 => 14942, + 4943 => 14943, + 4944 => 14944, + 4945 => 14945, + 4946 => 14946, + 4947 => 14947, + 4948 => 14948, + 4949 => 14949, + 4950 => 14950, + 4951 => 14951, + 4952 => 14952, + 4953 => 14953, + 4954 => 14954, + 4955 => 14955, + 4956 => 14956, + 4957 => 14957, + 4958 => 14958, + 4959 => 14959, + 4960 => 14960, + 4961 => 14961, + 4962 => 14962, + 4963 => 14963, + 4964 => 14964, + 4965 => 14965, + 4966 => 14966, + 4967 => 14967, + 4968 => 14968, + 4969 => 14969, + 4970 => 14970, + 4971 => 14971, + 4972 => 14972, + 4973 => 14973, + 4974 => 14974, + 4975 => 14975, + 4976 => 14976, + 4977 => 14977, + 4978 => 14978, + 4979 => 14979, + 4980 => 14980, + 4981 => 14981, + 4982 => 14982, + 4983 => 14983, + 4984 => 14984, + 4985 => 14985, + 4986 => 14986, + 4987 => 14987, + 4988 => 14988, + 4989 => 14989, + 4990 => 14990, + 4991 => 14991, + 4992 => 14992, + 4993 => 14993, + 4994 => 14994, + 4995 => 14995, + 4996 => 14996, + 4997 => 14997, + 4998 => 14998, + 4999 => 14999, + 5000 => 15000, + 5001 => 15001, + 5002 => 15002, + 5003 => 15003, + 5004 => 15004, + 5005 => 15005, + 5006 => 15006, + 5007 => 15007, + 5008 => 15008, + 5009 => 15009, + 5010 => 15010, + 5011 => 15011, + 5012 => 15012, + 5013 => 15013, + 5014 => 15014, + 5015 => 15015, + 5016 => 15016, + 5017 => 15017, + 5018 => 15018, + 5019 => 15019, + 5020 => 15020, + 5021 => 15021, + 5022 => 15022, + 5023 => 15023, + 5024 => 15024, + 5025 => 15025, + 5026 => 15026, + 5027 => 15027, + 5028 => 15028, + 5029 => 15029, + 5030 => 15030, + 5031 => 15031, + 5032 => 15032, + 5033 => 15033, + 5034 => 15034, + 5035 => 15035, + 5036 => 15036, + 5037 => 15037, + 5038 => 15038, + 5039 => 15039, + 5040 => 15040, + 5041 => 15041, + 5042 => 15042, + 5043 => 15043, + 5044 => 15044, + 5045 => 15045, + 5046 => 15046, + 5047 => 15047, + 5048 => 15048, + 5049 => 15049, + 5050 => 15050, + 5051 => 15051, + 5052 => 15052, + 5053 => 15053, + 5054 => 15054, + 5055 => 15055, + 5056 => 15056, + 5057 => 15057, + 5058 => 15058, + 5059 => 15059, + 5060 => 15060, + 5061 => 15061, + 5062 => 15062, + 5063 => 15063, + 5064 => 15064, + 5065 => 15065, + 5066 => 15066, + 5067 => 15067, + 5068 => 15068, + 5069 => 15069, + 5070 => 15070, + 5071 => 15071, + 5072 => 15072, + 5073 => 15073, + 5074 => 15074, + 5075 => 15075, + 5076 => 15076, + 5077 => 15077, + 5078 => 15078, + 5079 => 15079, + 5080 => 15080, + 5081 => 15081, + 5082 => 15082, + 5083 => 15083, + 5084 => 15084, + 5085 => 15085, + 5086 => 15086, + 5087 => 15087, + 5088 => 15088, + 5089 => 15089, + 5090 => 15090, + 5091 => 15091, + 5092 => 15092, + 5093 => 15093, + 5094 => 15094, + 5095 => 15095, + 5096 => 15096, + 5097 => 15097, + 5098 => 15098, + 5099 => 15099, + 5100 => 15100, + 5101 => 15101, + 5102 => 15102, + 5103 => 15103, + 5104 => 15104, + 5105 => 15105, + 5106 => 15106, + 5107 => 15107, + 5108 => 15108, + 5109 => 15109, + 5110 => 15110, + 5111 => 15111, + 5112 => 15112, + 5113 => 15113, + 5114 => 15114, + 5115 => 15115, + 5116 => 15116, + 5117 => 15117, + 5118 => 15118, + 5119 => 15119, + 5120 => 15120, + 5121 => 15121, + 5122 => 15122, + 5123 => 15123, + 5124 => 15124, + 5125 => 15125, + 5126 => 15126, + 5127 => 15127, + 5128 => 15128, + 5129 => 15129, + 5130 => 15130, + 5131 => 15131, + 5132 => 15132, + 5133 => 15133, + 5134 => 15134, + 5135 => 15135, + 5136 => 15136, + 5137 => 15137, + 5138 => 15138, + 5139 => 15139, + 5140 => 15140, + 5141 => 15141, + 5142 => 15142, + 5143 => 15143, + 5144 => 15144, + 5145 => 15145, + 5146 => 15146, + 5147 => 15147, + 5148 => 15148, + 5149 => 15149, + 5150 => 15150, + 5151 => 15151, + 5152 => 15152, + 5153 => 15153, + 5154 => 15154, + 5155 => 15155, + 5156 => 15156, + 5157 => 15157, + 5158 => 15158, + 5159 => 15159, + 5160 => 15160, + 5161 => 15161, + 5162 => 15162, + 5163 => 15163, + 5164 => 15164, + 5165 => 15165, + 5166 => 15166, + 5167 => 15167, + 5168 => 15168, + 5169 => 15169, + 5170 => 15170, + 5171 => 15171, + 5172 => 15172, + 5173 => 15173, + 5174 => 15174, + 5175 => 15175, + 5176 => 15176, + 5177 => 15177, + 5178 => 15178, + 5179 => 15179, + 5180 => 15180, + 5181 => 15181, + 5182 => 15182, + 5183 => 15183, + 5184 => 15184, + 5185 => 15185, + 5186 => 15186, + 5187 => 15187, + 5188 => 15188, + 5189 => 15189, + 5190 => 15190, + 5191 => 15191, + 5192 => 15192, + 5193 => 15193, + 5194 => 15194, + 5195 => 15195, + 5196 => 15196, + 5197 => 15197, + 5198 => 15198, + 5199 => 15199, + 5200 => 15200, + 5201 => 15201, + 5202 => 15202, + 5203 => 15203, + 5204 => 15204, + 5205 => 15205, + 5206 => 15206, + 5207 => 15207, + 5208 => 15208, + 5209 => 15209, + 5210 => 15210, + 5211 => 15211, + 5212 => 15212, + 5213 => 15213, + 5214 => 15214, + 5215 => 15215, + 5216 => 15216, + 5217 => 15217, + 5218 => 15218, + 5219 => 15219, + 5220 => 15220, + 5221 => 15221, + 5222 => 15222, + 5223 => 15223, + 5224 => 15224, + 5225 => 15225, + 5226 => 15226, + 5227 => 15227, + 5228 => 15228, + 5229 => 15229, + 5230 => 15230, + 5231 => 15231, + 5232 => 15232, + 5233 => 15233, + 5234 => 15234, + 5235 => 15235, + 5236 => 15236, + 5237 => 15237, + 5238 => 15238, + 5239 => 15239, + 5240 => 15240, + 5241 => 15241, + 5242 => 15242, + 5243 => 15243, + 5244 => 15244, + 5245 => 15245, + 5246 => 15246, + 5247 => 15247, + 5248 => 15248, + 5249 => 15249, + 5250 => 15250, + 5251 => 15251, + 5252 => 15252, + 5253 => 15253, + 5254 => 15254, + 5255 => 15255, + 5256 => 15256, + 5257 => 15257, + 5258 => 15258, + 5259 => 15259, + 5260 => 15260, + 5261 => 15261, + 5262 => 15262, + 5263 => 15263, + 5264 => 15264, + 5265 => 15265, + 5266 => 15266, + 5267 => 15267, + 5268 => 15268, + 5269 => 15269, + 5270 => 15270, + 5271 => 15271, + 5272 => 15272, + 5273 => 15273, + 5274 => 15274, + 5275 => 15275, + 5276 => 15276, + 5277 => 15277, + 5278 => 15278, + 5279 => 15279, + 5280 => 15280, + 5281 => 15281, + 5282 => 15282, + 5283 => 15283, + 5284 => 15284, + 5285 => 15285, + 5286 => 15286, + 5287 => 15287, + 5288 => 15288, + 5289 => 15289, + 5290 => 15290, + 5291 => 15291, + 5292 => 15292, + 5293 => 15293, + 5294 => 15294, + 5295 => 15295, + 5296 => 15296, + 5297 => 15297, + 5298 => 15298, + 5299 => 15299, + 5300 => 15300, + 5301 => 15301, + 5302 => 15302, + 5303 => 15303, + 5304 => 15304, + 5305 => 15305, + 5306 => 15306, + 5307 => 15307, + 5308 => 15308, + 5309 => 15309, + 5310 => 15310, + 5311 => 15311, + 5312 => 15312, + 5313 => 15313, + 5314 => 15314, + 5315 => 15315, + 5316 => 15316, + 5317 => 15317, + 5318 => 15318, + 5319 => 15319, + 5320 => 15320, + 5321 => 15321, + 5322 => 15322, + 5323 => 15323, + 5324 => 15324, + 5325 => 15325, + 5326 => 15326, + 5327 => 15327, + 5328 => 15328, + 5329 => 15329, + 5330 => 15330, + 5331 => 15331, + 5332 => 15332, + 5333 => 15333, + 5334 => 15334, + 5335 => 15335, + 5336 => 15336, + 5337 => 15337, + 5338 => 15338, + 5339 => 15339, + 5340 => 15340, + 5341 => 15341, + 5342 => 15342, + 5343 => 15343, + 5344 => 15344, + 5345 => 15345, + 5346 => 15346, + 5347 => 15347, + 5348 => 15348, + 5349 => 15349, + 5350 => 15350, + 5351 => 15351, + 5352 => 15352, + 5353 => 15353, + 5354 => 15354, + 5355 => 15355, + 5356 => 15356, + 5357 => 15357, + 5358 => 15358, + 5359 => 15359, + 5360 => 15360, + 5361 => 15361, + 5362 => 15362, + 5363 => 15363, + 5364 => 15364, + 5365 => 15365, + 5366 => 15366, + 5367 => 15367, + 5368 => 15368, + 5369 => 15369, + 5370 => 15370, + 5371 => 15371, + 5372 => 15372, + 5373 => 15373, + 5374 => 15374, + 5375 => 15375, + 5376 => 15376, + 5377 => 15377, + 5378 => 15378, + 5379 => 15379, + 5380 => 15380, + 5381 => 15381, + 5382 => 15382, + 5383 => 15383, + 5384 => 15384, + 5385 => 15385, + 5386 => 15386, + 5387 => 15387, + 5388 => 15388, + 5389 => 15389, + 5390 => 15390, + 5391 => 15391, + 5392 => 15392, + 5393 => 15393, + 5394 => 15394, + 5395 => 15395, + 5396 => 15396, + 5397 => 15397, + 5398 => 15398, + 5399 => 15399, + 5400 => 15400, + 5401 => 15401, + 5402 => 15402, + 5403 => 15403, + 5404 => 15404, + 5405 => 15405, + 5406 => 15406, + 5407 => 15407, + 5408 => 15408, + 5409 => 15409, + 5410 => 15410, + 5411 => 15411, + 5412 => 15412, + 5413 => 15413, + 5414 => 15414, + 5415 => 15415, + 5416 => 15416, + 5417 => 15417, + 5418 => 15418, + 5419 => 15419, + 5420 => 15420, + 5421 => 15421, + 5422 => 15422, + 5423 => 15423, + 5424 => 15424, + 5425 => 15425, + 5426 => 15426, + 5427 => 15427, + 5428 => 15428, + 5429 => 15429, + 5430 => 15430, + 5431 => 15431, + 5432 => 15432, + 5433 => 15433, + 5434 => 15434, + 5435 => 15435, + 5436 => 15436, + 5437 => 15437, + 5438 => 15438, + 5439 => 15439, + 5440 => 15440, + 5441 => 15441, + 5442 => 15442, + 5443 => 15443, + 5444 => 15444, + 5445 => 15445, + 5446 => 15446, + 5447 => 15447, + 5448 => 15448, + 5449 => 15449, + 5450 => 15450, + 5451 => 15451, + 5452 => 15452, + 5453 => 15453, + 5454 => 15454, + 5455 => 15455, + 5456 => 15456, + 5457 => 15457, + 5458 => 15458, + 5459 => 15459, + 5460 => 15460, + 5461 => 15461, + 5462 => 15462, + 5463 => 15463, + 5464 => 15464, + 5465 => 15465, + 5466 => 15466, + 5467 => 15467, + 5468 => 15468, + 5469 => 15469, + 5470 => 15470, + 5471 => 15471, + 5472 => 15472, + 5473 => 15473, + 5474 => 15474, + 5475 => 15475, + 5476 => 15476, + 5477 => 15477, + 5478 => 15478, + 5479 => 15479, + 5480 => 15480, + 5481 => 15481, + 5482 => 15482, + 5483 => 15483, + 5484 => 15484, + 5485 => 15485, + 5486 => 15486, + 5487 => 15487, + 5488 => 15488, + 5489 => 15489, + 5490 => 15490, + 5491 => 15491, + 5492 => 15492, + 5493 => 15493, + 5494 => 15494, + 5495 => 15495, + 5496 => 15496, + 5497 => 15497, + 5498 => 15498, + 5499 => 15499, + 5500 => 15500, + 5501 => 15501, + 5502 => 15502, + 5503 => 15503, + 5504 => 15504, + 5505 => 15505, + 5506 => 15506, + 5507 => 15507, + 5508 => 15508, + 5509 => 15509, + 5510 => 15510, + 5511 => 15511, + 5512 => 15512, + 5513 => 15513, + 5514 => 15514, + 5515 => 15515, + 5516 => 15516, + 5517 => 15517, + 5518 => 15518, + 5519 => 15519, + 5520 => 15520, + 5521 => 15521, + 5522 => 15522, + 5523 => 15523, + 5524 => 15524, + 5525 => 15525, + 5526 => 15526, + 5527 => 15527, + 5528 => 15528, + 5529 => 15529, + 5530 => 15530, + 5531 => 15531, + 5532 => 15532, + 5533 => 15533, + 5534 => 15534, + 5535 => 15535, + 5536 => 15536, + 5537 => 15537, + 5538 => 15538, + 5539 => 15539, + 5540 => 15540, + 5541 => 15541, + 5542 => 15542, + 5543 => 15543, + 5544 => 15544, + 5545 => 15545, + 5546 => 15546, + 5547 => 15547, + 5548 => 15548, + 5549 => 15549, + 5550 => 15550, + 5551 => 15551, + 5552 => 15552, + 5553 => 15553, + 5554 => 15554, + 5555 => 15555, + 5556 => 15556, + 5557 => 15557, + 5558 => 15558, + 5559 => 15559, + 5560 => 15560, + 5561 => 15561, + 5562 => 15562, + 5563 => 15563, + 5564 => 15564, + 5565 => 15565, + 5566 => 15566, + 5567 => 15567, + 5568 => 15568, + 5569 => 15569, + 5570 => 15570, + 5571 => 15571, + 5572 => 15572, + 5573 => 15573, + 5574 => 15574, + 5575 => 15575, + 5576 => 15576, + 5577 => 15577, + 5578 => 15578, + 5579 => 15579, + 5580 => 15580, + 5581 => 15581, + 5582 => 15582, + 5583 => 15583, + 5584 => 15584, + 5585 => 15585, + 5586 => 15586, + 5587 => 15587, + 5588 => 15588, + 5589 => 15589, + 5590 => 15590, + 5591 => 15591, + 5592 => 15592, + 5593 => 15593, + 5594 => 15594, + 5595 => 15595, + 5596 => 15596, + 5597 => 15597, + 5598 => 15598, + 5599 => 15599, + 5600 => 15600, + 5601 => 15601, + 5602 => 15602, + 5603 => 15603, + 5604 => 15604, + 5605 => 15605, + 5606 => 15606, + 5607 => 15607, + 5608 => 15608, + 5609 => 15609, + 5610 => 15610, + 5611 => 15611, + 5612 => 15612, + 5613 => 15613, + 5614 => 15614, + 5615 => 15615, + 5616 => 15616, + 5617 => 15617, + 5618 => 15618, + 5619 => 15619, + 5620 => 15620, + 5621 => 15621, + 5622 => 15622, + 5623 => 15623, + 5624 => 15624, + 5625 => 15625, + 5626 => 15626, + 5627 => 15627, + 5628 => 15628, + 5629 => 15629, + 5630 => 15630, + 5631 => 15631, + 5632 => 15632, + 5633 => 15633, + 5634 => 15634, + 5635 => 15635, + 5636 => 15636, + 5637 => 15637, + 5638 => 15638, + 5639 => 15639, + 5640 => 15640, + 5641 => 15641, + 5642 => 15642, + 5643 => 15643, + 5644 => 15644, + 5645 => 15645, + 5646 => 15646, + 5647 => 15647, + 5648 => 15648, + 5649 => 15649, + 5650 => 15650, + 5651 => 15651, + 5652 => 15652, + 5653 => 15653, + 5654 => 15654, + 5655 => 15655, + 5656 => 15656, + 5657 => 15657, + 5658 => 15658, + 5659 => 15659, + 5660 => 15660, + 5661 => 15661, + 5662 => 15662, + 5663 => 15663, + 5664 => 15664, + 5665 => 15665, + 5666 => 15666, + 5667 => 15667, + 5668 => 15668, + 5669 => 15669, + 5670 => 15670, + 5671 => 15671, + 5672 => 15672, + 5673 => 15673, + 5674 => 15674, + 5675 => 15675, + 5676 => 15676, + 5677 => 15677, + 5678 => 15678, + 5679 => 15679, + 5680 => 15680, + 5681 => 15681, + 5682 => 15682, + 5683 => 15683, + 5684 => 15684, + 5685 => 15685, + 5686 => 15686, + 5687 => 15687, + 5688 => 15688, + 5689 => 15689, + 5690 => 15690, + 5691 => 15691, + 5692 => 15692, + 5693 => 15693, + 5694 => 15694, + 5695 => 15695, + 5696 => 15696, + 5697 => 15697, + 5698 => 15698, + 5699 => 15699, + 5700 => 15700, + 5701 => 15701, + 5702 => 15702, + 5703 => 15703, + 5704 => 15704, + 5705 => 15705, + 5706 => 15706, + 5707 => 15707, + 5708 => 15708, + 5709 => 15709, + 5710 => 15710, + 5711 => 15711, + 5712 => 15712, + 5713 => 15713, + 5714 => 15714, + 5715 => 15715, + 5716 => 15716, + 5717 => 15717, + 5718 => 15718, + 5719 => 15719, + 5720 => 15720, + 5721 => 15721, + 5722 => 15722, + 5723 => 15723, + 5724 => 15724, + 5725 => 15725, + 5726 => 15726, + 5727 => 15727, + 5728 => 15728, + 5729 => 15729, + 5730 => 15730, + 5731 => 15731, + 5732 => 15732, + 5733 => 15733, + 5734 => 15734, + 5735 => 15735, + 5736 => 15736, + 5737 => 15737, + 5738 => 15738, + 5739 => 15739, + 5740 => 15740, + 5741 => 15741, + 5742 => 15742, + 5743 => 15743, + 5744 => 15744, + 5745 => 15745, + 5746 => 15746, + 5747 => 15747, + 5748 => 15748, + 5749 => 15749, + 5750 => 15750, + 5751 => 15751, + 5752 => 15752, + 5753 => 15753, + 5754 => 15754, + 5755 => 15755, + 5756 => 15756, + 5757 => 15757, + 5758 => 15758, + 5759 => 15759, + 5760 => 15760, + 5761 => 15761, + 5762 => 15762, + 5763 => 15763, + 5764 => 15764, + 5765 => 15765, + 5766 => 15766, + 5767 => 15767, + 5768 => 15768, + 5769 => 15769, + 5770 => 15770, + 5771 => 15771, + 5772 => 15772, + 5773 => 15773, + 5774 => 15774, + 5775 => 15775, + 5776 => 15776, + 5777 => 15777, + 5778 => 15778, + 5779 => 15779, + 5780 => 15780, + 5781 => 15781, + 5782 => 15782, + 5783 => 15783, + 5784 => 15784, + 5785 => 15785, + 5786 => 15786, + 5787 => 15787, + 5788 => 15788, + 5789 => 15789, + 5790 => 15790, + 5791 => 15791, + 5792 => 15792, + 5793 => 15793, + 5794 => 15794, + 5795 => 15795, + 5796 => 15796, + 5797 => 15797, + 5798 => 15798, + 5799 => 15799, + 5800 => 15800, + 5801 => 15801, + 5802 => 15802, + 5803 => 15803, + 5804 => 15804, + 5805 => 15805, + 5806 => 15806, + 5807 => 15807, + 5808 => 15808, + 5809 => 15809, + 5810 => 15810, + 5811 => 15811, + 5812 => 15812, + 5813 => 15813, + 5814 => 15814, + 5815 => 15815, + 5816 => 15816, + 5817 => 15817, + 5818 => 15818, + 5819 => 15819, + 5820 => 15820, + 5821 => 15821, + 5822 => 15822, + 5823 => 15823, + 5824 => 15824, + 5825 => 15825, + 5826 => 15826, + 5827 => 15827, + 5828 => 15828, + 5829 => 15829, + 5830 => 15830, + 5831 => 15831, + 5832 => 15832, + 5833 => 15833, + 5834 => 15834, + 5835 => 15835, + 5836 => 15836, + 5837 => 15837, + 5838 => 15838, + 5839 => 15839, + 5840 => 15840, + 5841 => 15841, + 5842 => 15842, + 5843 => 15843, + 5844 => 15844, + 5845 => 15845, + 5846 => 15846, + 5847 => 15847, + 5848 => 15848, + 5849 => 15849, + 5850 => 15850, + 5851 => 15851, + 5852 => 15852, + 5853 => 15853, + 5854 => 15854, + 5855 => 15855, + 5856 => 15856, + 5857 => 15857, + 5858 => 15858, + 5859 => 15859, + 5860 => 15860, + 5861 => 15861, + 5862 => 15862, + 5863 => 15863, + 5864 => 15864, + 5865 => 15865, + 5866 => 15866, + 5867 => 15867, + 5868 => 15868, + 5869 => 15869, + 5870 => 15870, + 5871 => 15871, + 5872 => 15872, + 5873 => 15873, + 5874 => 15874, + 5875 => 15875, + 5876 => 15876, + 5877 => 15877, + 5878 => 15878, + 5879 => 15879, + 5880 => 15880, + 5881 => 15881, + 5882 => 15882, + 5883 => 15883, + 5884 => 15884, + 5885 => 15885, + 5886 => 15886, + 5887 => 15887, + 5888 => 15888, + 5889 => 15889, + 5890 => 15890, + 5891 => 15891, + 5892 => 15892, + 5893 => 15893, + 5894 => 15894, + 5895 => 15895, + 5896 => 15896, + 5897 => 15897, + 5898 => 15898, + 5899 => 15899, + 5900 => 15900, + 5901 => 15901, + 5902 => 15902, + 5903 => 15903, + 5904 => 15904, + 5905 => 15905, + 5906 => 15906, + 5907 => 15907, + 5908 => 15908, + 5909 => 15909, + 5910 => 15910, + 5911 => 15911, + 5912 => 15912, + 5913 => 15913, + 5914 => 15914, + 5915 => 15915, + 5916 => 15916, + 5917 => 15917, + 5918 => 15918, + 5919 => 15919, + 5920 => 15920, + 5921 => 15921, + 5922 => 15922, + 5923 => 15923, + 5924 => 15924, + 5925 => 15925, + 5926 => 15926, + 5927 => 15927, + 5928 => 15928, + 5929 => 15929, + 5930 => 15930, + 5931 => 15931, + 5932 => 15932, + 5933 => 15933, + 5934 => 15934, + 5935 => 15935, + 5936 => 15936, + 5937 => 15937, + 5938 => 15938, + 5939 => 15939, + 5940 => 15940, + 5941 => 15941, + 5942 => 15942, + 5943 => 15943, + 5944 => 15944, + 5945 => 15945, + 5946 => 15946, + 5947 => 15947, + 5948 => 15948, + 5949 => 15949, + 5950 => 15950, + 5951 => 15951, + 5952 => 15952, + 5953 => 15953, + 5954 => 15954, + 5955 => 15955, + 5956 => 15956, + 5957 => 15957, + 5958 => 15958, + 5959 => 15959, + 5960 => 15960, + 5961 => 15961, + 5962 => 15962, + 5963 => 15963, + 5964 => 15964, + 5965 => 15965, + 5966 => 15966, + 5967 => 15967, + 5968 => 15968, + 5969 => 15969, + 5970 => 15970, + 5971 => 15971, + 5972 => 15972, + 5973 => 15973, + 5974 => 15974, + 5975 => 15975, + 5976 => 15976, + 5977 => 15977, + 5978 => 15978, + 5979 => 15979, + 5980 => 15980, + 5981 => 15981, + 5982 => 15982, + 5983 => 15983, + 5984 => 15984, + 5985 => 15985, + 5986 => 15986, + 5987 => 15987, + 5988 => 15988, + 5989 => 15989, + 5990 => 15990, + 5991 => 15991, + 5992 => 15992, + 5993 => 15993, + 5994 => 15994, + 5995 => 15995, + 5996 => 15996, + 5997 => 15997, + 5998 => 15998, + 5999 => 15999, + 6000 => 16000, + 6001 => 16001, + 6002 => 16002, + 6003 => 16003, + 6004 => 16004, + 6005 => 16005, + 6006 => 16006, + 6007 => 16007, + 6008 => 16008, + 6009 => 16009, + 6010 => 16010, + 6011 => 16011, + 6012 => 16012, + 6013 => 16013, + 6014 => 16014, + 6015 => 16015, + 6016 => 16016, + 6017 => 16017, + 6018 => 16018, + 6019 => 16019, + 6020 => 16020, + 6021 => 16021, + 6022 => 16022, + 6023 => 16023, + 6024 => 16024, + 6025 => 16025, + 6026 => 16026, + 6027 => 16027, + 6028 => 16028, + 6029 => 16029, + 6030 => 16030, + 6031 => 16031, + 6032 => 16032, + 6033 => 16033, + 6034 => 16034, + 6035 => 16035, + 6036 => 16036, + 6037 => 16037, + 6038 => 16038, + 6039 => 16039, + 6040 => 16040, + 6041 => 16041, + 6042 => 16042, + 6043 => 16043, + 6044 => 16044, + 6045 => 16045, + 6046 => 16046, + 6047 => 16047, + 6048 => 16048, + 6049 => 16049, + 6050 => 16050, + 6051 => 16051, + 6052 => 16052, + 6053 => 16053, + 6054 => 16054, + 6055 => 16055, + 6056 => 16056, + 6057 => 16057, + 6058 => 16058, + 6059 => 16059, + 6060 => 16060, + 6061 => 16061, + 6062 => 16062, + 6063 => 16063, + 6064 => 16064, + 6065 => 16065, + 6066 => 16066, + 6067 => 16067, + 6068 => 16068, + 6069 => 16069, + 6070 => 16070, + 6071 => 16071, + 6072 => 16072, + 6073 => 16073, + 6074 => 16074, + 6075 => 16075, + 6076 => 16076, + 6077 => 16077, + 6078 => 16078, + 6079 => 16079, + 6080 => 16080, + 6081 => 16081, + 6082 => 16082, + 6083 => 16083, + 6084 => 16084, + 6085 => 16085, + 6086 => 16086, + 6087 => 16087, + 6088 => 16088, + 6089 => 16089, + 6090 => 16090, + 6091 => 16091, + 6092 => 16092, + 6093 => 16093, + 6094 => 16094, + 6095 => 16095, + 6096 => 16096, + 6097 => 16097, + 6098 => 16098, + 6099 => 16099, + 6100 => 16100, + 6101 => 16101, + 6102 => 16102, + 6103 => 16103, + 6104 => 16104, + 6105 => 16105, + 6106 => 16106, + 6107 => 16107, + 6108 => 16108, + 6109 => 16109, + 6110 => 16110, + 6111 => 16111, + 6112 => 16112, + 6113 => 16113, + 6114 => 16114, + 6115 => 16115, + 6116 => 16116, + 6117 => 16117, + 6118 => 16118, + 6119 => 16119, + 6120 => 16120, + 6121 => 16121, + 6122 => 16122, + 6123 => 16123, + 6124 => 16124, + 6125 => 16125, + 6126 => 16126, + 6127 => 16127, + 6128 => 16128, + 6129 => 16129, + 6130 => 16130, + 6131 => 16131, + 6132 => 16132, + 6133 => 16133, + 6134 => 16134, + 6135 => 16135, + 6136 => 16136, + 6137 => 16137, + 6138 => 16138, + 6139 => 16139, + 6140 => 16140, + 6141 => 16141, + 6142 => 16142, + 6143 => 16143, + 6144 => 16144, + 6145 => 16145, + 6146 => 16146, + 6147 => 16147, + 6148 => 16148, + 6149 => 16149, + 6150 => 16150, + 6151 => 16151, + 6152 => 16152, + 6153 => 16153, + 6154 => 16154, + 6155 => 16155, + 6156 => 16156, + 6157 => 16157, + 6158 => 16158, + 6159 => 16159, + 6160 => 16160, + 6161 => 16161, + 6162 => 16162, + 6163 => 16163, + 6164 => 16164, + 6165 => 16165, + 6166 => 16166, + 6167 => 16167, + 6168 => 16168, + 6169 => 16169, + 6170 => 16170, + 6171 => 16171, + 6172 => 16172, + 6173 => 16173, + 6174 => 16174, + 6175 => 16175, + 6176 => 16176, + 6177 => 16177, + 6178 => 16178, + 6179 => 16179, + 6180 => 16180, + 6181 => 16181, + 6182 => 16182, + 6183 => 16183, + 6184 => 16184, + 6185 => 16185, + 6186 => 16186, + 6187 => 16187, + 6188 => 16188, + 6189 => 16189, + 6190 => 16190, + 6191 => 16191, + 6192 => 16192, + 6193 => 16193, + 6194 => 16194, + 6195 => 16195, + 6196 => 16196, + 6197 => 16197, + 6198 => 16198, + 6199 => 16199, + 6200 => 16200, + 6201 => 16201, + 6202 => 16202, + 6203 => 16203, + 6204 => 16204, + 6205 => 16205, + 6206 => 16206, + 6207 => 16207, + 6208 => 16208, + 6209 => 16209, + 6210 => 16210, + 6211 => 16211, + 6212 => 16212, + 6213 => 16213, + 6214 => 16214, + 6215 => 16215, + 6216 => 16216, + 6217 => 16217, + 6218 => 16218, + 6219 => 16219, + 6220 => 16220, + 6221 => 16221, + 6222 => 16222, + 6223 => 16223, + 6224 => 16224, + 6225 => 16225, + 6226 => 16226, + 6227 => 16227, + 6228 => 16228, + 6229 => 16229, + 6230 => 16230, + 6231 => 16231, + 6232 => 16232, + 6233 => 16233, + 6234 => 16234, + 6235 => 16235, + 6236 => 16236, + 6237 => 16237, + 6238 => 16238, + 6239 => 16239, + 6240 => 16240, + 6241 => 16241, + 6242 => 16242, + 6243 => 16243, + 6244 => 16244, + 6245 => 16245, + 6246 => 16246, + 6247 => 16247, + 6248 => 16248, + 6249 => 16249, + 6250 => 16250, + 6251 => 16251, + 6252 => 16252, + 6253 => 16253, + 6254 => 16254, + 6255 => 16255, + 6256 => 16256, + 6257 => 16257, + 6258 => 16258, + 6259 => 16259, + 6260 => 16260, + 6261 => 16261, + 6262 => 16262, + 6263 => 16263, + 6264 => 16264, + 6265 => 16265, + 6266 => 16266, + 6267 => 16267, + 6268 => 16268, + 6269 => 16269, + 6270 => 16270, + 6271 => 16271, + 6272 => 16272, + 6273 => 16273, + 6274 => 16274, + 6275 => 16275, + 6276 => 16276, + 6277 => 16277, + 6278 => 16278, + 6279 => 16279, + 6280 => 16280, + 6281 => 16281, + 6282 => 16282, + 6283 => 16283, + 6284 => 16284, + 6285 => 16285, + 6286 => 16286, + 6287 => 16287, + 6288 => 16288, + 6289 => 16289, + 6290 => 16290, + 6291 => 16291, + 6292 => 16292, + 6293 => 16293, + 6294 => 16294, + 6295 => 16295, + 6296 => 16296, + 6297 => 16297, + 6298 => 16298, + 6299 => 16299, + 6300 => 16300, + 6301 => 16301, + 6302 => 16302, + 6303 => 16303, + 6304 => 16304, + 6305 => 16305, + 6306 => 16306, + 6307 => 16307, + 6308 => 16308, + 6309 => 16309, + 6310 => 16310, + 6311 => 16311, + 6312 => 16312, + 6313 => 16313, + 6314 => 16314, + 6315 => 16315, + 6316 => 16316, + 6317 => 16317, + 6318 => 16318, + 6319 => 16319, + 6320 => 16320, + 6321 => 16321, + 6322 => 16322, + 6323 => 16323, + 6324 => 16324, + 6325 => 16325, + 6326 => 16326, + 6327 => 16327, + 6328 => 16328, + 6329 => 16329, + 6330 => 16330, + 6331 => 16331, + 6332 => 16332, + 6333 => 16333, + 6334 => 16334, + 6335 => 16335, + 6336 => 16336, + 6337 => 16337, + 6338 => 16338, + 6339 => 16339, + 6340 => 16340, + 6341 => 16341, + 6342 => 16342, + 6343 => 16343, + 6344 => 16344, + 6345 => 16345, + 6346 => 16346, + 6347 => 16347, + 6348 => 16348, + 6349 => 16349, + 6350 => 16350, + 6351 => 16351, + 6352 => 16352, + 6353 => 16353, + 6354 => 16354, + 6355 => 16355, + 6356 => 16356, + 6357 => 16357, + 6358 => 16358, + 6359 => 16359, + 6360 => 16360, + 6361 => 16361, + 6362 => 16362, + 6363 => 16363, + 6364 => 16364, + 6365 => 16365, + 6366 => 16366, + 6367 => 16367, + 6368 => 16368, + 6369 => 16369, + 6370 => 16370, + 6371 => 16371, + 6372 => 16372, + 6373 => 16373, + 6374 => 16374, + 6375 => 16375, + 6376 => 16376, + 6377 => 16377, + 6378 => 16378, + 6379 => 16379, + 6380 => 16380, + 6381 => 16381, + 6382 => 16382, + 6383 => 16383, + 6384 => 16384, + 6385 => 16385, + 6386 => 16386, + 6387 => 16387, + 6388 => 16388, + 6389 => 16389, + 6390 => 16390, + 6391 => 16391, + 6392 => 16392, + 6393 => 16393, + 6394 => 16394, + 6395 => 16395, + 6396 => 16396, + 6397 => 16397, + 6398 => 16398, + 6399 => 16399, + 6400 => 16400, + 6401 => 16401, + 6402 => 16402, + 6403 => 16403, + 6404 => 16404, + 6405 => 16405, + 6406 => 16406, + 6407 => 16407, + 6408 => 16408, + 6409 => 16409, + 6410 => 16410, + 6411 => 16411, + 6412 => 16412, + 6413 => 16413, + 6414 => 16414, + 6415 => 16415, + 6416 => 16416, + 6417 => 16417, + 6418 => 16418, + 6419 => 16419, + 6420 => 16420, + 6421 => 16421, + 6422 => 16422, + 6423 => 16423, + 6424 => 16424, + 6425 => 16425, + 6426 => 16426, + 6427 => 16427, + 6428 => 16428, + 6429 => 16429, + 6430 => 16430, + 6431 => 16431, + 6432 => 16432, + 6433 => 16433, + 6434 => 16434, + 6435 => 16435, + 6436 => 16436, + 6437 => 16437, + 6438 => 16438, + 6439 => 16439, + 6440 => 16440, + 6441 => 16441, + 6442 => 16442, + 6443 => 16443, + 6444 => 16444, + 6445 => 16445, + 6446 => 16446, + 6447 => 16447, + 6448 => 16448, + 6449 => 16449, + 6450 => 16450, + 6451 => 16451, + 6452 => 16452, + 6453 => 16453, + 6454 => 16454, + 6455 => 16455, + 6456 => 16456, + 6457 => 16457, + 6458 => 16458, + 6459 => 16459, + 6460 => 16460, + 6461 => 16461, + 6462 => 16462, + 6463 => 16463, + 6464 => 16464, + 6465 => 16465, + 6466 => 16466, + 6467 => 16467, + 6468 => 16468, + 6469 => 16469, + 6470 => 16470, + 6471 => 16471, + 6472 => 16472, + 6473 => 16473, + 6474 => 16474, + 6475 => 16475, + 6476 => 16476, + 6477 => 16477, + 6478 => 16478, + 6479 => 16479, + 6480 => 16480, + 6481 => 16481, + 6482 => 16482, + 6483 => 16483, + 6484 => 16484, + 6485 => 16485, + 6486 => 16486, + 6487 => 16487, + 6488 => 16488, + 6489 => 16489, + 6490 => 16490, + 6491 => 16491, + 6492 => 16492, + 6493 => 16493, + 6494 => 16494, + 6495 => 16495, + 6496 => 16496, + 6497 => 16497, + 6498 => 16498, + 6499 => 16499, + 6500 => 16500, +]; + +const TEST_ARRAY_2 = [ + 10001 => 20001, + 10002 => 20002, + 10003 => 20003, + 10004 => 20004, + 10005 => 20005, + 10006 => 20006, + 10007 => 20007, + 10008 => 20008, + 10009 => 20009, + 10010 => 20010, + 10011 => 20011, + 10012 => 20012, + 10013 => 20013, + 10014 => 20014, + 10015 => 20015, + 10016 => 20016, + 10017 => 20017, + 10018 => 20018, + 10019 => 20019, + 10020 => 20020, + 10021 => 20021, + 10022 => 20022, + 10023 => 20023, + 10024 => 20024, + 10025 => 20025, + 10026 => 20026, + 10027 => 20027, + 10028 => 20028, + 10029 => 20029, + 10030 => 20030, + 10031 => 20031, + 10032 => 20032, + 10033 => 20033, + 10034 => 20034, + 10035 => 20035, + 10036 => 20036, + 10037 => 20037, + 10038 => 20038, + 10039 => 20039, + 10040 => 20040, + 10041 => 20041, + 10042 => 20042, + 10043 => 20043, + 10044 => 20044, + 10045 => 20045, + 10046 => 20046, + 10047 => 20047, + 10048 => 20048, + 10049 => 20049, + 10050 => 20050, + 10051 => 20051, + 10052 => 20052, + 10053 => 20053, + 10054 => 20054, + 10055 => 20055, + 10056 => 20056, + 10057 => 20057, + 10058 => 20058, + 10059 => 20059, + 10060 => 20060, + 10061 => 20061, + 10062 => 20062, + 10063 => 20063, + 10064 => 20064, + 10065 => 20065, + 10066 => 20066, + 10067 => 20067, + 10068 => 20068, + 10069 => 20069, + 10070 => 20070, + 10071 => 20071, + 10072 => 20072, + 10073 => 20073, + 10074 => 20074, + 10075 => 20075, + 10076 => 20076, + 10077 => 20077, + 10078 => 20078, + 10079 => 20079, + 10080 => 20080, + 10081 => 20081, + 10082 => 20082, + 10083 => 20083, + 10084 => 20084, + 10085 => 20085, + 10086 => 20086, + 10087 => 20087, + 10088 => 20088, + 10089 => 20089, + 10090 => 20090, + 10091 => 20091, + 10092 => 20092, + 10093 => 20093, + 10094 => 20094, + 10095 => 20095, + 10096 => 20096, + 10097 => 20097, + 10098 => 20098, + 10099 => 20099, + 10100 => 20100, + 10101 => 20101, + 10102 => 20102, + 10103 => 20103, + 10104 => 20104, + 10105 => 20105, + 10106 => 20106, + 10107 => 20107, + 10108 => 20108, + 10109 => 20109, + 10110 => 20110, + 10111 => 20111, + 10112 => 20112, + 10113 => 20113, + 10114 => 20114, + 10115 => 20115, + 10116 => 20116, + 10117 => 20117, + 10118 => 20118, + 10119 => 20119, + 10120 => 20120, + 10121 => 20121, + 10122 => 20122, + 10123 => 20123, + 10124 => 20124, + 10125 => 20125, + 10126 => 20126, + 10127 => 20127, + 10128 => 20128, + 10129 => 20129, + 10130 => 20130, + 10131 => 20131, + 10132 => 20132, + 10133 => 20133, + 10134 => 20134, + 10135 => 20135, + 10136 => 20136, + 10137 => 20137, + 10138 => 20138, + 10139 => 20139, + 10140 => 20140, + 10141 => 20141, + 10142 => 20142, + 10143 => 20143, + 10144 => 20144, + 10145 => 20145, + 10146 => 20146, + 10147 => 20147, + 10148 => 20148, + 10149 => 20149, + 10150 => 20150, + 10151 => 20151, + 10152 => 20152, + 10153 => 20153, + 10154 => 20154, + 10155 => 20155, + 10156 => 20156, + 10157 => 20157, + 10158 => 20158, + 10159 => 20159, + 10160 => 20160, + 10161 => 20161, + 10162 => 20162, + 10163 => 20163, + 10164 => 20164, + 10165 => 20165, + 10166 => 20166, + 10167 => 20167, + 10168 => 20168, + 10169 => 20169, + 10170 => 20170, + 10171 => 20171, + 10172 => 20172, + 10173 => 20173, + 10174 => 20174, + 10175 => 20175, + 10176 => 20176, + 10177 => 20177, + 10178 => 20178, + 10179 => 20179, + 10180 => 20180, + 10181 => 20181, + 10182 => 20182, + 10183 => 20183, + 10184 => 20184, + 10185 => 20185, + 10186 => 20186, + 10187 => 20187, + 10188 => 20188, + 10189 => 20189, + 10190 => 20190, + 10191 => 20191, + 10192 => 20192, + 10193 => 20193, + 10194 => 20194, + 10195 => 20195, + 10196 => 20196, + 10197 => 20197, + 10198 => 20198, + 10199 => 20199, + 10200 => 20200, + 10201 => 20201, + 10202 => 20202, + 10203 => 20203, + 10204 => 20204, + 10205 => 20205, + 10206 => 20206, + 10207 => 20207, + 10208 => 20208, + 10209 => 20209, + 10210 => 20210, + 10211 => 20211, + 10212 => 20212, + 10213 => 20213, + 10214 => 20214, + 10215 => 20215, + 10216 => 20216, + 10217 => 20217, + 10218 => 20218, + 10219 => 20219, + 10220 => 20220, + 10221 => 20221, + 10222 => 20222, + 10223 => 20223, + 10224 => 20224, + 10225 => 20225, + 10226 => 20226, + 10227 => 20227, + 10228 => 20228, + 10229 => 20229, + 10230 => 20230, + 10231 => 20231, + 10232 => 20232, + 10233 => 20233, + 10234 => 20234, + 10235 => 20235, + 10236 => 20236, + 10237 => 20237, + 10238 => 20238, + 10239 => 20239, + 10240 => 20240, + 10241 => 20241, + 10242 => 20242, + 10243 => 20243, + 10244 => 20244, + 10245 => 20245, + 10246 => 20246, + 10247 => 20247, + 10248 => 20248, + 10249 => 20249, + 10250 => 20250, + 10251 => 20251, + 10252 => 20252, + 10253 => 20253, + 10254 => 20254, + 10255 => 20255, + 10256 => 20256, + 10257 => 20257, + 10258 => 20258, + 10259 => 20259, + 10260 => 20260, + 10261 => 20261, + 10262 => 20262, + 10263 => 20263, + 10264 => 20264, + 10265 => 20265, + 10266 => 20266, + 10267 => 20267, + 10268 => 20268, + 10269 => 20269, + 10270 => 20270, + 10271 => 20271, + 10272 => 20272, + 10273 => 20273, + 10274 => 20274, + 10275 => 20275, + 10276 => 20276, + 10277 => 20277, + 10278 => 20278, + 10279 => 20279, + 10280 => 20280, + 10281 => 20281, + 10282 => 20282, + 10283 => 20283, + 10284 => 20284, + 10285 => 20285, + 10286 => 20286, + 10287 => 20287, + 10288 => 20288, + 10289 => 20289, + 10290 => 20290, + 10291 => 20291, + 10292 => 20292, + 10293 => 20293, + 10294 => 20294, + 10295 => 20295, + 10296 => 20296, + 10297 => 20297, + 10298 => 20298, + 10299 => 20299, + 10300 => 20300, + 10301 => 20301, + 10302 => 20302, + 10303 => 20303, + 10304 => 20304, + 10305 => 20305, + 10306 => 20306, + 10307 => 20307, + 10308 => 20308, + 10309 => 20309, + 10310 => 20310, + 10311 => 20311, + 10312 => 20312, + 10313 => 20313, + 10314 => 20314, + 10315 => 20315, + 10316 => 20316, + 10317 => 20317, + 10318 => 20318, + 10319 => 20319, + 10320 => 20320, + 10321 => 20321, + 10322 => 20322, + 10323 => 20323, + 10324 => 20324, + 10325 => 20325, + 10326 => 20326, + 10327 => 20327, + 10328 => 20328, + 10329 => 20329, + 10330 => 20330, + 10331 => 20331, + 10332 => 20332, + 10333 => 20333, + 10334 => 20334, + 10335 => 20335, + 10336 => 20336, + 10337 => 20337, + 10338 => 20338, + 10339 => 20339, + 10340 => 20340, + 10341 => 20341, + 10342 => 20342, + 10343 => 20343, + 10344 => 20344, + 10345 => 20345, + 10346 => 20346, + 10347 => 20347, + 10348 => 20348, + 10349 => 20349, + 10350 => 20350, + 10351 => 20351, + 10352 => 20352, + 10353 => 20353, + 10354 => 20354, + 10355 => 20355, + 10356 => 20356, + 10357 => 20357, + 10358 => 20358, + 10359 => 20359, + 10360 => 20360, + 10361 => 20361, + 10362 => 20362, + 10363 => 20363, + 10364 => 20364, + 10365 => 20365, + 10366 => 20366, + 10367 => 20367, + 10368 => 20368, + 10369 => 20369, + 10370 => 20370, + 10371 => 20371, + 10372 => 20372, + 10373 => 20373, + 10374 => 20374, + 10375 => 20375, + 10376 => 20376, + 10377 => 20377, + 10378 => 20378, + 10379 => 20379, + 10380 => 20380, + 10381 => 20381, + 10382 => 20382, + 10383 => 20383, + 10384 => 20384, + 10385 => 20385, + 10386 => 20386, + 10387 => 20387, + 10388 => 20388, + 10389 => 20389, + 10390 => 20390, + 10391 => 20391, + 10392 => 20392, + 10393 => 20393, + 10394 => 20394, + 10395 => 20395, + 10396 => 20396, + 10397 => 20397, + 10398 => 20398, + 10399 => 20399, + 10400 => 20400, + 10401 => 20401, + 10402 => 20402, + 10403 => 20403, + 10404 => 20404, + 10405 => 20405, + 10406 => 20406, + 10407 => 20407, + 10408 => 20408, + 10409 => 20409, + 10410 => 20410, + 10411 => 20411, + 10412 => 20412, + 10413 => 20413, + 10414 => 20414, + 10415 => 20415, + 10416 => 20416, + 10417 => 20417, + 10418 => 20418, + 10419 => 20419, + 10420 => 20420, + 10421 => 20421, + 10422 => 20422, + 10423 => 20423, + 10424 => 20424, + 10425 => 20425, + 10426 => 20426, + 10427 => 20427, + 10428 => 20428, + 10429 => 20429, + 10430 => 20430, + 10431 => 20431, + 10432 => 20432, + 10433 => 20433, + 10434 => 20434, + 10435 => 20435, + 10436 => 20436, + 10437 => 20437, + 10438 => 20438, + 10439 => 20439, + 10440 => 20440, + 10441 => 20441, + 10442 => 20442, + 10443 => 20443, + 10444 => 20444, + 10445 => 20445, + 10446 => 20446, + 10447 => 20447, + 10448 => 20448, + 10449 => 20449, + 10450 => 20450, + 10451 => 20451, + 10452 => 20452, + 10453 => 20453, + 10454 => 20454, + 10455 => 20455, + 10456 => 20456, + 10457 => 20457, + 10458 => 20458, + 10459 => 20459, + 10460 => 20460, + 10461 => 20461, + 10462 => 20462, + 10463 => 20463, + 10464 => 20464, + 10465 => 20465, + 10466 => 20466, + 10467 => 20467, + 10468 => 20468, + 10469 => 20469, + 10470 => 20470, + 10471 => 20471, + 10472 => 20472, + 10473 => 20473, + 10474 => 20474, + 10475 => 20475, + 10476 => 20476, + 10477 => 20477, + 10478 => 20478, + 10479 => 20479, + 10480 => 20480, + 10481 => 20481, + 10482 => 20482, + 10483 => 20483, + 10484 => 20484, + 10485 => 20485, + 10486 => 20486, + 10487 => 20487, + 10488 => 20488, + 10489 => 20489, + 10490 => 20490, + 10491 => 20491, + 10492 => 20492, + 10493 => 20493, + 10494 => 20494, + 10495 => 20495, + 10496 => 20496, + 10497 => 20497, + 10498 => 20498, + 10499 => 20499, + 10500 => 20500, + 10501 => 20501, + 10502 => 20502, + 10503 => 20503, + 10504 => 20504, + 10505 => 20505, + 10506 => 20506, + 10507 => 20507, + 10508 => 20508, + 10509 => 20509, + 10510 => 20510, + 10511 => 20511, + 10512 => 20512, + 10513 => 20513, + 10514 => 20514, + 10515 => 20515, + 10516 => 20516, + 10517 => 20517, + 10518 => 20518, + 10519 => 20519, + 10520 => 20520, + 10521 => 20521, + 10522 => 20522, + 10523 => 20523, + 10524 => 20524, + 10525 => 20525, + 10526 => 20526, + 10527 => 20527, + 10528 => 20528, + 10529 => 20529, + 10530 => 20530, + 10531 => 20531, + 10532 => 20532, + 10533 => 20533, + 10534 => 20534, + 10535 => 20535, + 10536 => 20536, + 10537 => 20537, + 10538 => 20538, + 10539 => 20539, + 10540 => 20540, + 10541 => 20541, + 10542 => 20542, + 10543 => 20543, + 10544 => 20544, + 10545 => 20545, + 10546 => 20546, + 10547 => 20547, + 10548 => 20548, + 10549 => 20549, + 10550 => 20550, + 10551 => 20551, + 10552 => 20552, + 10553 => 20553, + 10554 => 20554, + 10555 => 20555, + 10556 => 20556, + 10557 => 20557, + 10558 => 20558, + 10559 => 20559, + 10560 => 20560, + 10561 => 20561, + 10562 => 20562, + 10563 => 20563, + 10564 => 20564, + 10565 => 20565, + 10566 => 20566, + 10567 => 20567, + 10568 => 20568, + 10569 => 20569, + 10570 => 20570, + 10571 => 20571, + 10572 => 20572, + 10573 => 20573, + 10574 => 20574, + 10575 => 20575, + 10576 => 20576, + 10577 => 20577, + 10578 => 20578, + 10579 => 20579, + 10580 => 20580, + 10581 => 20581, + 10582 => 20582, + 10583 => 20583, + 10584 => 20584, + 10585 => 20585, + 10586 => 20586, + 10587 => 20587, + 10588 => 20588, + 10589 => 20589, + 10590 => 20590, + 10591 => 20591, + 10592 => 20592, + 10593 => 20593, + 10594 => 20594, + 10595 => 20595, + 10596 => 20596, + 10597 => 20597, + 10598 => 20598, + 10599 => 20599, + 10600 => 20600, + 10601 => 20601, + 10602 => 20602, + 10603 => 20603, + 10604 => 20604, + 10605 => 20605, + 10606 => 20606, + 10607 => 20607, + 10608 => 20608, + 10609 => 20609, + 10610 => 20610, + 10611 => 20611, + 10612 => 20612, + 10613 => 20613, + 10614 => 20614, + 10615 => 20615, + 10616 => 20616, + 10617 => 20617, + 10618 => 20618, + 10619 => 20619, + 10620 => 20620, + 10621 => 20621, + 10622 => 20622, + 10623 => 20623, + 10624 => 20624, + 10625 => 20625, + 10626 => 20626, + 10627 => 20627, + 10628 => 20628, + 10629 => 20629, + 10630 => 20630, + 10631 => 20631, + 10632 => 20632, + 10633 => 20633, + 10634 => 20634, + 10635 => 20635, + 10636 => 20636, + 10637 => 20637, + 10638 => 20638, + 10639 => 20639, + 10640 => 20640, + 10641 => 20641, + 10642 => 20642, + 10643 => 20643, + 10644 => 20644, + 10645 => 20645, + 10646 => 20646, + 10647 => 20647, + 10648 => 20648, + 10649 => 20649, + 10650 => 20650, + 10651 => 20651, + 10652 => 20652, + 10653 => 20653, + 10654 => 20654, + 10655 => 20655, + 10656 => 20656, + 10657 => 20657, + 10658 => 20658, + 10659 => 20659, + 10660 => 20660, + 10661 => 20661, + 10662 => 20662, + 10663 => 20663, + 10664 => 20664, + 10665 => 20665, + 10666 => 20666, + 10667 => 20667, + 10668 => 20668, + 10669 => 20669, + 10670 => 20670, + 10671 => 20671, + 10672 => 20672, + 10673 => 20673, + 10674 => 20674, + 10675 => 20675, + 10676 => 20676, + 10677 => 20677, + 10678 => 20678, + 10679 => 20679, + 10680 => 20680, + 10681 => 20681, + 10682 => 20682, + 10683 => 20683, + 10684 => 20684, + 10685 => 20685, + 10686 => 20686, + 10687 => 20687, + 10688 => 20688, + 10689 => 20689, + 10690 => 20690, + 10691 => 20691, + 10692 => 20692, + 10693 => 20693, + 10694 => 20694, + 10695 => 20695, + 10696 => 20696, + 10697 => 20697, + 10698 => 20698, + 10699 => 20699, + 10700 => 20700, + 10701 => 20701, + 10702 => 20702, + 10703 => 20703, + 10704 => 20704, + 10705 => 20705, + 10706 => 20706, + 10707 => 20707, + 10708 => 20708, + 10709 => 20709, + 10710 => 20710, + 10711 => 20711, + 10712 => 20712, + 10713 => 20713, + 10714 => 20714, + 10715 => 20715, + 10716 => 20716, + 10717 => 20717, + 10718 => 20718, + 10719 => 20719, + 10720 => 20720, + 10721 => 20721, + 10722 => 20722, + 10723 => 20723, + 10724 => 20724, + 10725 => 20725, + 10726 => 20726, + 10727 => 20727, + 10728 => 20728, + 10729 => 20729, + 10730 => 20730, + 10731 => 20731, + 10732 => 20732, + 10733 => 20733, + 10734 => 20734, + 10735 => 20735, + 10736 => 20736, + 10737 => 20737, + 10738 => 20738, + 10739 => 20739, + 10740 => 20740, + 10741 => 20741, + 10742 => 20742, + 10743 => 20743, + 10744 => 20744, + 10745 => 20745, + 10746 => 20746, + 10747 => 20747, + 10748 => 20748, + 10749 => 20749, + 10750 => 20750, + 10751 => 20751, + 10752 => 20752, + 10753 => 20753, + 10754 => 20754, + 10755 => 20755, + 10756 => 20756, + 10757 => 20757, + 10758 => 20758, + 10759 => 20759, + 10760 => 20760, + 10761 => 20761, + 10762 => 20762, + 10763 => 20763, + 10764 => 20764, + 10765 => 20765, + 10766 => 20766, + 10767 => 20767, + 10768 => 20768, + 10769 => 20769, + 10770 => 20770, + 10771 => 20771, + 10772 => 20772, + 10773 => 20773, + 10774 => 20774, + 10775 => 20775, + 10776 => 20776, + 10777 => 20777, + 10778 => 20778, + 10779 => 20779, + 10780 => 20780, + 10781 => 20781, + 10782 => 20782, + 10783 => 20783, + 10784 => 20784, + 10785 => 20785, + 10786 => 20786, + 10787 => 20787, + 10788 => 20788, + 10789 => 20789, + 10790 => 20790, + 10791 => 20791, + 10792 => 20792, + 10793 => 20793, + 10794 => 20794, + 10795 => 20795, + 10796 => 20796, + 10797 => 20797, + 10798 => 20798, + 10799 => 20799, + 10800 => 20800, + 10801 => 20801, + 10802 => 20802, + 10803 => 20803, + 10804 => 20804, + 10805 => 20805, + 10806 => 20806, + 10807 => 20807, + 10808 => 20808, + 10809 => 20809, + 10810 => 20810, + 10811 => 20811, + 10812 => 20812, + 10813 => 20813, + 10814 => 20814, + 10815 => 20815, + 10816 => 20816, + 10817 => 20817, + 10818 => 20818, + 10819 => 20819, + 10820 => 20820, + 10821 => 20821, + 10822 => 20822, + 10823 => 20823, + 10824 => 20824, + 10825 => 20825, + 10826 => 20826, + 10827 => 20827, + 10828 => 20828, + 10829 => 20829, + 10830 => 20830, + 10831 => 20831, + 10832 => 20832, + 10833 => 20833, + 10834 => 20834, + 10835 => 20835, + 10836 => 20836, + 10837 => 20837, + 10838 => 20838, + 10839 => 20839, + 10840 => 20840, + 10841 => 20841, + 10842 => 20842, + 10843 => 20843, + 10844 => 20844, + 10845 => 20845, + 10846 => 20846, + 10847 => 20847, + 10848 => 20848, + 10849 => 20849, + 10850 => 20850, + 10851 => 20851, + 10852 => 20852, + 10853 => 20853, + 10854 => 20854, + 10855 => 20855, + 10856 => 20856, + 10857 => 20857, + 10858 => 20858, + 10859 => 20859, + 10860 => 20860, + 10861 => 20861, + 10862 => 20862, + 10863 => 20863, + 10864 => 20864, + 10865 => 20865, + 10866 => 20866, + 10867 => 20867, + 10868 => 20868, + 10869 => 20869, + 10870 => 20870, + 10871 => 20871, + 10872 => 20872, + 10873 => 20873, + 10874 => 20874, + 10875 => 20875, + 10876 => 20876, + 10877 => 20877, + 10878 => 20878, + 10879 => 20879, + 10880 => 20880, + 10881 => 20881, + 10882 => 20882, + 10883 => 20883, + 10884 => 20884, + 10885 => 20885, + 10886 => 20886, + 10887 => 20887, + 10888 => 20888, + 10889 => 20889, + 10890 => 20890, + 10891 => 20891, + 10892 => 20892, + 10893 => 20893, + 10894 => 20894, + 10895 => 20895, + 10896 => 20896, + 10897 => 20897, + 10898 => 20898, + 10899 => 20899, + 10900 => 20900, + 10901 => 20901, + 10902 => 20902, + 10903 => 20903, + 10904 => 20904, + 10905 => 20905, + 10906 => 20906, + 10907 => 20907, + 10908 => 20908, + 10909 => 20909, + 10910 => 20910, + 10911 => 20911, + 10912 => 20912, + 10913 => 20913, + 10914 => 20914, + 10915 => 20915, + 10916 => 20916, + 10917 => 20917, + 10918 => 20918, + 10919 => 20919, + 10920 => 20920, + 10921 => 20921, + 10922 => 20922, + 10923 => 20923, + 10924 => 20924, + 10925 => 20925, + 10926 => 20926, + 10927 => 20927, + 10928 => 20928, + 10929 => 20929, + 10930 => 20930, + 10931 => 20931, + 10932 => 20932, + 10933 => 20933, + 10934 => 20934, + 10935 => 20935, + 10936 => 20936, + 10937 => 20937, + 10938 => 20938, + 10939 => 20939, + 10940 => 20940, + 10941 => 20941, + 10942 => 20942, + 10943 => 20943, + 10944 => 20944, + 10945 => 20945, + 10946 => 20946, + 10947 => 20947, + 10948 => 20948, + 10949 => 20949, + 10950 => 20950, + 10951 => 20951, + 10952 => 20952, + 10953 => 20953, + 10954 => 20954, + 10955 => 20955, + 10956 => 20956, + 10957 => 20957, + 10958 => 20958, + 10959 => 20959, + 10960 => 20960, + 10961 => 20961, + 10962 => 20962, + 10963 => 20963, + 10964 => 20964, + 10965 => 20965, + 10966 => 20966, + 10967 => 20967, + 10968 => 20968, + 10969 => 20969, + 10970 => 20970, + 10971 => 20971, + 10972 => 20972, + 10973 => 20973, + 10974 => 20974, + 10975 => 20975, + 10976 => 20976, + 10977 => 20977, + 10978 => 20978, + 10979 => 20979, + 10980 => 20980, + 10981 => 20981, + 10982 => 20982, + 10983 => 20983, + 10984 => 20984, + 10985 => 20985, + 10986 => 20986, + 10987 => 20987, + 10988 => 20988, + 10989 => 20989, + 10990 => 20990, + 10991 => 20991, + 10992 => 20992, + 10993 => 20993, + 10994 => 20994, + 10995 => 20995, + 10996 => 20996, + 10997 => 20997, + 10998 => 20998, + 10999 => 20999, + 11000 => 21000, + 11001 => 21001, + 11002 => 21002, + 11003 => 21003, + 11004 => 21004, + 11005 => 21005, + 11006 => 21006, + 11007 => 21007, + 11008 => 21008, + 11009 => 21009, + 11010 => 21010, + 11011 => 21011, + 11012 => 21012, + 11013 => 21013, + 11014 => 21014, + 11015 => 21015, + 11016 => 21016, + 11017 => 21017, + 11018 => 21018, + 11019 => 21019, + 11020 => 21020, + 11021 => 21021, + 11022 => 21022, + 11023 => 21023, + 11024 => 21024, + 11025 => 21025, + 11026 => 21026, + 11027 => 21027, + 11028 => 21028, + 11029 => 21029, + 11030 => 21030, + 11031 => 21031, + 11032 => 21032, + 11033 => 21033, + 11034 => 21034, + 11035 => 21035, + 11036 => 21036, + 11037 => 21037, + 11038 => 21038, + 11039 => 21039, + 11040 => 21040, + 11041 => 21041, + 11042 => 21042, + 11043 => 21043, + 11044 => 21044, + 11045 => 21045, + 11046 => 21046, + 11047 => 21047, + 11048 => 21048, + 11049 => 21049, + 11050 => 21050, + 11051 => 21051, + 11052 => 21052, + 11053 => 21053, + 11054 => 21054, + 11055 => 21055, + 11056 => 21056, + 11057 => 21057, + 11058 => 21058, + 11059 => 21059, + 11060 => 21060, + 11061 => 21061, + 11062 => 21062, + 11063 => 21063, + 11064 => 21064, + 11065 => 21065, + 11066 => 21066, + 11067 => 21067, + 11068 => 21068, + 11069 => 21069, + 11070 => 21070, + 11071 => 21071, + 11072 => 21072, + 11073 => 21073, + 11074 => 21074, + 11075 => 21075, + 11076 => 21076, + 11077 => 21077, + 11078 => 21078, + 11079 => 21079, + 11080 => 21080, + 11081 => 21081, + 11082 => 21082, + 11083 => 21083, + 11084 => 21084, + 11085 => 21085, + 11086 => 21086, + 11087 => 21087, + 11088 => 21088, + 11089 => 21089, + 11090 => 21090, + 11091 => 21091, + 11092 => 21092, + 11093 => 21093, + 11094 => 21094, + 11095 => 21095, + 11096 => 21096, + 11097 => 21097, + 11098 => 21098, + 11099 => 21099, + 11100 => 21100, + 11101 => 21101, + 11102 => 21102, + 11103 => 21103, + 11104 => 21104, + 11105 => 21105, + 11106 => 21106, + 11107 => 21107, + 11108 => 21108, + 11109 => 21109, + 11110 => 21110, + 11111 => 21111, + 11112 => 21112, + 11113 => 21113, + 11114 => 21114, + 11115 => 21115, + 11116 => 21116, + 11117 => 21117, + 11118 => 21118, + 11119 => 21119, + 11120 => 21120, + 11121 => 21121, + 11122 => 21122, + 11123 => 21123, + 11124 => 21124, + 11125 => 21125, + 11126 => 21126, + 11127 => 21127, + 11128 => 21128, + 11129 => 21129, + 11130 => 21130, + 11131 => 21131, + 11132 => 21132, + 11133 => 21133, + 11134 => 21134, + 11135 => 21135, + 11136 => 21136, + 11137 => 21137, + 11138 => 21138, + 11139 => 21139, + 11140 => 21140, + 11141 => 21141, + 11142 => 21142, + 11143 => 21143, + 11144 => 21144, + 11145 => 21145, + 11146 => 21146, + 11147 => 21147, + 11148 => 21148, + 11149 => 21149, + 11150 => 21150, + 11151 => 21151, + 11152 => 21152, + 11153 => 21153, + 11154 => 21154, + 11155 => 21155, + 11156 => 21156, + 11157 => 21157, + 11158 => 21158, + 11159 => 21159, + 11160 => 21160, + 11161 => 21161, + 11162 => 21162, + 11163 => 21163, + 11164 => 21164, + 11165 => 21165, + 11166 => 21166, + 11167 => 21167, + 11168 => 21168, + 11169 => 21169, + 11170 => 21170, + 11171 => 21171, + 11172 => 21172, + 11173 => 21173, + 11174 => 21174, + 11175 => 21175, + 11176 => 21176, + 11177 => 21177, + 11178 => 21178, + 11179 => 21179, + 11180 => 21180, + 11181 => 21181, + 11182 => 21182, + 11183 => 21183, + 11184 => 21184, + 11185 => 21185, + 11186 => 21186, + 11187 => 21187, + 11188 => 21188, + 11189 => 21189, + 11190 => 21190, + 11191 => 21191, + 11192 => 21192, + 11193 => 21193, + 11194 => 21194, + 11195 => 21195, + 11196 => 21196, + 11197 => 21197, + 11198 => 21198, + 11199 => 21199, + 11200 => 21200, + 11201 => 21201, + 11202 => 21202, + 11203 => 21203, + 11204 => 21204, + 11205 => 21205, + 11206 => 21206, + 11207 => 21207, + 11208 => 21208, + 11209 => 21209, + 11210 => 21210, + 11211 => 21211, + 11212 => 21212, + 11213 => 21213, + 11214 => 21214, + 11215 => 21215, + 11216 => 21216, + 11217 => 21217, + 11218 => 21218, + 11219 => 21219, + 11220 => 21220, + 11221 => 21221, + 11222 => 21222, + 11223 => 21223, + 11224 => 21224, + 11225 => 21225, + 11226 => 21226, + 11227 => 21227, + 11228 => 21228, + 11229 => 21229, + 11230 => 21230, + 11231 => 21231, + 11232 => 21232, + 11233 => 21233, + 11234 => 21234, + 11235 => 21235, + 11236 => 21236, + 11237 => 21237, + 11238 => 21238, + 11239 => 21239, + 11240 => 21240, + 11241 => 21241, + 11242 => 21242, + 11243 => 21243, + 11244 => 21244, + 11245 => 21245, + 11246 => 21246, + 11247 => 21247, + 11248 => 21248, + 11249 => 21249, + 11250 => 21250, + 11251 => 21251, + 11252 => 21252, + 11253 => 21253, + 11254 => 21254, + 11255 => 21255, + 11256 => 21256, + 11257 => 21257, + 11258 => 21258, + 11259 => 21259, + 11260 => 21260, + 11261 => 21261, + 11262 => 21262, + 11263 => 21263, + 11264 => 21264, + 11265 => 21265, + 11266 => 21266, + 11267 => 21267, + 11268 => 21268, + 11269 => 21269, + 11270 => 21270, + 11271 => 21271, + 11272 => 21272, + 11273 => 21273, + 11274 => 21274, + 11275 => 21275, + 11276 => 21276, + 11277 => 21277, + 11278 => 21278, + 11279 => 21279, + 11280 => 21280, + 11281 => 21281, + 11282 => 21282, + 11283 => 21283, + 11284 => 21284, + 11285 => 21285, + 11286 => 21286, + 11287 => 21287, + 11288 => 21288, + 11289 => 21289, + 11290 => 21290, + 11291 => 21291, + 11292 => 21292, + 11293 => 21293, + 11294 => 21294, + 11295 => 21295, + 11296 => 21296, + 11297 => 21297, + 11298 => 21298, + 11299 => 21299, + 11300 => 21300, + 11301 => 21301, + 11302 => 21302, + 11303 => 21303, + 11304 => 21304, + 11305 => 21305, + 11306 => 21306, + 11307 => 21307, + 11308 => 21308, + 11309 => 21309, + 11310 => 21310, + 11311 => 21311, + 11312 => 21312, + 11313 => 21313, + 11314 => 21314, + 11315 => 21315, + 11316 => 21316, + 11317 => 21317, + 11318 => 21318, + 11319 => 21319, + 11320 => 21320, + 11321 => 21321, + 11322 => 21322, + 11323 => 21323, + 11324 => 21324, + 11325 => 21325, + 11326 => 21326, + 11327 => 21327, + 11328 => 21328, + 11329 => 21329, + 11330 => 21330, + 11331 => 21331, + 11332 => 21332, + 11333 => 21333, + 11334 => 21334, + 11335 => 21335, + 11336 => 21336, + 11337 => 21337, + 11338 => 21338, + 11339 => 21339, + 11340 => 21340, + 11341 => 21341, + 11342 => 21342, + 11343 => 21343, + 11344 => 21344, + 11345 => 21345, + 11346 => 21346, + 11347 => 21347, + 11348 => 21348, + 11349 => 21349, + 11350 => 21350, + 11351 => 21351, + 11352 => 21352, + 11353 => 21353, + 11354 => 21354, + 11355 => 21355, + 11356 => 21356, + 11357 => 21357, + 11358 => 21358, + 11359 => 21359, + 11360 => 21360, + 11361 => 21361, + 11362 => 21362, + 11363 => 21363, + 11364 => 21364, + 11365 => 21365, + 11366 => 21366, + 11367 => 21367, + 11368 => 21368, + 11369 => 21369, + 11370 => 21370, + 11371 => 21371, + 11372 => 21372, + 11373 => 21373, + 11374 => 21374, + 11375 => 21375, + 11376 => 21376, + 11377 => 21377, + 11378 => 21378, + 11379 => 21379, + 11380 => 21380, + 11381 => 21381, + 11382 => 21382, + 11383 => 21383, + 11384 => 21384, + 11385 => 21385, + 11386 => 21386, + 11387 => 21387, + 11388 => 21388, + 11389 => 21389, + 11390 => 21390, + 11391 => 21391, + 11392 => 21392, + 11393 => 21393, + 11394 => 21394, + 11395 => 21395, + 11396 => 21396, + 11397 => 21397, + 11398 => 21398, + 11399 => 21399, + 11400 => 21400, + 11401 => 21401, + 11402 => 21402, + 11403 => 21403, + 11404 => 21404, + 11405 => 21405, + 11406 => 21406, + 11407 => 21407, + 11408 => 21408, + 11409 => 21409, + 11410 => 21410, + 11411 => 21411, + 11412 => 21412, + 11413 => 21413, + 11414 => 21414, + 11415 => 21415, + 11416 => 21416, + 11417 => 21417, + 11418 => 21418, + 11419 => 21419, + 11420 => 21420, + 11421 => 21421, + 11422 => 21422, + 11423 => 21423, + 11424 => 21424, + 11425 => 21425, + 11426 => 21426, + 11427 => 21427, + 11428 => 21428, + 11429 => 21429, + 11430 => 21430, + 11431 => 21431, + 11432 => 21432, + 11433 => 21433, + 11434 => 21434, + 11435 => 21435, + 11436 => 21436, + 11437 => 21437, + 11438 => 21438, + 11439 => 21439, + 11440 => 21440, + 11441 => 21441, + 11442 => 21442, + 11443 => 21443, + 11444 => 21444, + 11445 => 21445, + 11446 => 21446, + 11447 => 21447, + 11448 => 21448, + 11449 => 21449, + 11450 => 21450, + 11451 => 21451, + 11452 => 21452, + 11453 => 21453, + 11454 => 21454, + 11455 => 21455, + 11456 => 21456, + 11457 => 21457, + 11458 => 21458, + 11459 => 21459, + 11460 => 21460, + 11461 => 21461, + 11462 => 21462, + 11463 => 21463, + 11464 => 21464, + 11465 => 21465, + 11466 => 21466, + 11467 => 21467, + 11468 => 21468, + 11469 => 21469, + 11470 => 21470, + 11471 => 21471, + 11472 => 21472, + 11473 => 21473, + 11474 => 21474, + 11475 => 21475, + 11476 => 21476, + 11477 => 21477, + 11478 => 21478, + 11479 => 21479, + 11480 => 21480, + 11481 => 21481, + 11482 => 21482, + 11483 => 21483, + 11484 => 21484, + 11485 => 21485, + 11486 => 21486, + 11487 => 21487, + 11488 => 21488, + 11489 => 21489, + 11490 => 21490, + 11491 => 21491, + 11492 => 21492, + 11493 => 21493, + 11494 => 21494, + 11495 => 21495, + 11496 => 21496, + 11497 => 21497, + 11498 => 21498, + 11499 => 21499, + 11500 => 21500, + 11501 => 21501, + 11502 => 21502, + 11503 => 21503, + 11504 => 21504, + 11505 => 21505, + 11506 => 21506, + 11507 => 21507, + 11508 => 21508, + 11509 => 21509, + 11510 => 21510, + 11511 => 21511, + 11512 => 21512, + 11513 => 21513, + 11514 => 21514, + 11515 => 21515, + 11516 => 21516, + 11517 => 21517, + 11518 => 21518, + 11519 => 21519, + 11520 => 21520, + 11521 => 21521, + 11522 => 21522, + 11523 => 21523, + 11524 => 21524, + 11525 => 21525, + 11526 => 21526, + 11527 => 21527, + 11528 => 21528, + 11529 => 21529, + 11530 => 21530, + 11531 => 21531, + 11532 => 21532, + 11533 => 21533, + 11534 => 21534, + 11535 => 21535, + 11536 => 21536, + 11537 => 21537, + 11538 => 21538, + 11539 => 21539, + 11540 => 21540, + 11541 => 21541, + 11542 => 21542, + 11543 => 21543, + 11544 => 21544, + 11545 => 21545, + 11546 => 21546, + 11547 => 21547, + 11548 => 21548, + 11549 => 21549, + 11550 => 21550, + 11551 => 21551, + 11552 => 21552, + 11553 => 21553, + 11554 => 21554, + 11555 => 21555, + 11556 => 21556, + 11557 => 21557, + 11558 => 21558, + 11559 => 21559, + 11560 => 21560, + 11561 => 21561, + 11562 => 21562, + 11563 => 21563, + 11564 => 21564, + 11565 => 21565, + 11566 => 21566, + 11567 => 21567, + 11568 => 21568, + 11569 => 21569, + 11570 => 21570, + 11571 => 21571, + 11572 => 21572, + 11573 => 21573, + 11574 => 21574, + 11575 => 21575, + 11576 => 21576, + 11577 => 21577, + 11578 => 21578, + 11579 => 21579, + 11580 => 21580, + 11581 => 21581, + 11582 => 21582, + 11583 => 21583, + 11584 => 21584, + 11585 => 21585, + 11586 => 21586, + 11587 => 21587, + 11588 => 21588, + 11589 => 21589, + 11590 => 21590, + 11591 => 21591, + 11592 => 21592, + 11593 => 21593, + 11594 => 21594, + 11595 => 21595, + 11596 => 21596, + 11597 => 21597, + 11598 => 21598, + 11599 => 21599, + 11600 => 21600, + 11601 => 21601, + 11602 => 21602, + 11603 => 21603, + 11604 => 21604, + 11605 => 21605, + 11606 => 21606, + 11607 => 21607, + 11608 => 21608, + 11609 => 21609, + 11610 => 21610, + 11611 => 21611, + 11612 => 21612, + 11613 => 21613, + 11614 => 21614, + 11615 => 21615, + 11616 => 21616, + 11617 => 21617, + 11618 => 21618, + 11619 => 21619, + 11620 => 21620, + 11621 => 21621, + 11622 => 21622, + 11623 => 21623, + 11624 => 21624, + 11625 => 21625, + 11626 => 21626, + 11627 => 21627, + 11628 => 21628, + 11629 => 21629, + 11630 => 21630, + 11631 => 21631, + 11632 => 21632, + 11633 => 21633, + 11634 => 21634, + 11635 => 21635, + 11636 => 21636, + 11637 => 21637, + 11638 => 21638, + 11639 => 21639, + 11640 => 21640, + 11641 => 21641, + 11642 => 21642, + 11643 => 21643, + 11644 => 21644, + 11645 => 21645, + 11646 => 21646, + 11647 => 21647, + 11648 => 21648, + 11649 => 21649, + 11650 => 21650, + 11651 => 21651, + 11652 => 21652, + 11653 => 21653, + 11654 => 21654, + 11655 => 21655, + 11656 => 21656, + 11657 => 21657, + 11658 => 21658, + 11659 => 21659, + 11660 => 21660, + 11661 => 21661, + 11662 => 21662, + 11663 => 21663, + 11664 => 21664, + 11665 => 21665, + 11666 => 21666, + 11667 => 21667, + 11668 => 21668, + 11669 => 21669, + 11670 => 21670, + 11671 => 21671, + 11672 => 21672, + 11673 => 21673, + 11674 => 21674, + 11675 => 21675, + 11676 => 21676, + 11677 => 21677, + 11678 => 21678, + 11679 => 21679, + 11680 => 21680, + 11681 => 21681, + 11682 => 21682, + 11683 => 21683, + 11684 => 21684, + 11685 => 21685, + 11686 => 21686, + 11687 => 21687, + 11688 => 21688, + 11689 => 21689, + 11690 => 21690, + 11691 => 21691, + 11692 => 21692, + 11693 => 21693, + 11694 => 21694, + 11695 => 21695, + 11696 => 21696, + 11697 => 21697, + 11698 => 21698, + 11699 => 21699, + 11700 => 21700, + 11701 => 21701, + 11702 => 21702, + 11703 => 21703, + 11704 => 21704, + 11705 => 21705, + 11706 => 21706, + 11707 => 21707, + 11708 => 21708, + 11709 => 21709, + 11710 => 21710, + 11711 => 21711, + 11712 => 21712, + 11713 => 21713, + 11714 => 21714, + 11715 => 21715, + 11716 => 21716, + 11717 => 21717, + 11718 => 21718, + 11719 => 21719, + 11720 => 21720, + 11721 => 21721, + 11722 => 21722, + 11723 => 21723, + 11724 => 21724, + 11725 => 21725, + 11726 => 21726, + 11727 => 21727, + 11728 => 21728, + 11729 => 21729, + 11730 => 21730, + 11731 => 21731, + 11732 => 21732, + 11733 => 21733, + 11734 => 21734, + 11735 => 21735, + 11736 => 21736, + 11737 => 21737, + 11738 => 21738, + 11739 => 21739, + 11740 => 21740, + 11741 => 21741, + 11742 => 21742, + 11743 => 21743, + 11744 => 21744, + 11745 => 21745, + 11746 => 21746, + 11747 => 21747, + 11748 => 21748, + 11749 => 21749, + 11750 => 21750, + 11751 => 21751, + 11752 => 21752, + 11753 => 21753, + 11754 => 21754, + 11755 => 21755, + 11756 => 21756, + 11757 => 21757, + 11758 => 21758, + 11759 => 21759, + 11760 => 21760, + 11761 => 21761, + 11762 => 21762, + 11763 => 21763, + 11764 => 21764, + 11765 => 21765, + 11766 => 21766, + 11767 => 21767, + 11768 => 21768, + 11769 => 21769, + 11770 => 21770, + 11771 => 21771, + 11772 => 21772, + 11773 => 21773, + 11774 => 21774, + 11775 => 21775, + 11776 => 21776, + 11777 => 21777, + 11778 => 21778, + 11779 => 21779, + 11780 => 21780, + 11781 => 21781, + 11782 => 21782, + 11783 => 21783, + 11784 => 21784, + 11785 => 21785, + 11786 => 21786, + 11787 => 21787, + 11788 => 21788, + 11789 => 21789, + 11790 => 21790, + 11791 => 21791, + 11792 => 21792, + 11793 => 21793, + 11794 => 21794, + 11795 => 21795, + 11796 => 21796, + 11797 => 21797, + 11798 => 21798, + 11799 => 21799, + 11800 => 21800, + 11801 => 21801, + 11802 => 21802, + 11803 => 21803, + 11804 => 21804, + 11805 => 21805, + 11806 => 21806, + 11807 => 21807, + 11808 => 21808, + 11809 => 21809, + 11810 => 21810, + 11811 => 21811, + 11812 => 21812, + 11813 => 21813, + 11814 => 21814, + 11815 => 21815, + 11816 => 21816, + 11817 => 21817, + 11818 => 21818, + 11819 => 21819, + 11820 => 21820, + 11821 => 21821, + 11822 => 21822, + 11823 => 21823, + 11824 => 21824, + 11825 => 21825, + 11826 => 21826, + 11827 => 21827, + 11828 => 21828, + 11829 => 21829, + 11830 => 21830, + 11831 => 21831, + 11832 => 21832, + 11833 => 21833, + 11834 => 21834, + 11835 => 21835, + 11836 => 21836, + 11837 => 21837, + 11838 => 21838, + 11839 => 21839, + 11840 => 21840, + 11841 => 21841, + 11842 => 21842, + 11843 => 21843, + 11844 => 21844, + 11845 => 21845, + 11846 => 21846, + 11847 => 21847, + 11848 => 21848, + 11849 => 21849, + 11850 => 21850, + 11851 => 21851, + 11852 => 21852, + 11853 => 21853, + 11854 => 21854, + 11855 => 21855, + 11856 => 21856, + 11857 => 21857, + 11858 => 21858, + 11859 => 21859, + 11860 => 21860, + 11861 => 21861, + 11862 => 21862, + 11863 => 21863, + 11864 => 21864, + 11865 => 21865, + 11866 => 21866, + 11867 => 21867, + 11868 => 21868, + 11869 => 21869, + 11870 => 21870, + 11871 => 21871, + 11872 => 21872, + 11873 => 21873, + 11874 => 21874, + 11875 => 21875, + 11876 => 21876, + 11877 => 21877, + 11878 => 21878, + 11879 => 21879, + 11880 => 21880, + 11881 => 21881, + 11882 => 21882, + 11883 => 21883, + 11884 => 21884, + 11885 => 21885, + 11886 => 21886, + 11887 => 21887, + 11888 => 21888, + 11889 => 21889, + 11890 => 21890, + 11891 => 21891, + 11892 => 21892, + 11893 => 21893, + 11894 => 21894, + 11895 => 21895, + 11896 => 21896, + 11897 => 21897, + 11898 => 21898, + 11899 => 21899, + 11900 => 21900, + 11901 => 21901, + 11902 => 21902, + 11903 => 21903, + 11904 => 21904, + 11905 => 21905, + 11906 => 21906, + 11907 => 21907, + 11908 => 21908, + 11909 => 21909, + 11910 => 21910, + 11911 => 21911, + 11912 => 21912, + 11913 => 21913, + 11914 => 21914, + 11915 => 21915, + 11916 => 21916, + 11917 => 21917, + 11918 => 21918, + 11919 => 21919, + 11920 => 21920, + 11921 => 21921, + 11922 => 21922, + 11923 => 21923, + 11924 => 21924, + 11925 => 21925, + 11926 => 21926, + 11927 => 21927, + 11928 => 21928, + 11929 => 21929, + 11930 => 21930, + 11931 => 21931, + 11932 => 21932, + 11933 => 21933, + 11934 => 21934, + 11935 => 21935, + 11936 => 21936, + 11937 => 21937, + 11938 => 21938, + 11939 => 21939, + 11940 => 21940, + 11941 => 21941, + 11942 => 21942, + 11943 => 21943, + 11944 => 21944, + 11945 => 21945, + 11946 => 21946, + 11947 => 21947, + 11948 => 21948, + 11949 => 21949, + 11950 => 21950, + 11951 => 21951, + 11952 => 21952, + 11953 => 21953, + 11954 => 21954, + 11955 => 21955, + 11956 => 21956, + 11957 => 21957, + 11958 => 21958, + 11959 => 21959, + 11960 => 21960, + 11961 => 21961, + 11962 => 21962, + 11963 => 21963, + 11964 => 21964, + 11965 => 21965, + 11966 => 21966, + 11967 => 21967, + 11968 => 21968, + 11969 => 21969, + 11970 => 21970, + 11971 => 21971, + 11972 => 21972, + 11973 => 21973, + 11974 => 21974, + 11975 => 21975, + 11976 => 21976, + 11977 => 21977, + 11978 => 21978, + 11979 => 21979, + 11980 => 21980, + 11981 => 21981, + 11982 => 21982, + 11983 => 21983, + 11984 => 21984, + 11985 => 21985, + 11986 => 21986, + 11987 => 21987, + 11988 => 21988, + 11989 => 21989, + 11990 => 21990, + 11991 => 21991, + 11992 => 21992, + 11993 => 21993, + 11994 => 21994, + 11995 => 21995, + 11996 => 21996, + 11997 => 21997, + 11998 => 21998, + 11999 => 21999, + 12000 => 22000, + 12001 => 22001, + 12002 => 22002, + 12003 => 22003, + 12004 => 22004, + 12005 => 22005, + 12006 => 22006, + 12007 => 22007, + 12008 => 22008, + 12009 => 22009, + 12010 => 22010, + 12011 => 22011, + 12012 => 22012, + 12013 => 22013, + 12014 => 22014, + 12015 => 22015, + 12016 => 22016, + 12017 => 22017, + 12018 => 22018, + 12019 => 22019, + 12020 => 22020, + 12021 => 22021, + 12022 => 22022, + 12023 => 22023, + 12024 => 22024, + 12025 => 22025, + 12026 => 22026, + 12027 => 22027, + 12028 => 22028, + 12029 => 22029, + 12030 => 22030, + 12031 => 22031, + 12032 => 22032, + 12033 => 22033, + 12034 => 22034, + 12035 => 22035, + 12036 => 22036, + 12037 => 22037, + 12038 => 22038, + 12039 => 22039, + 12040 => 22040, + 12041 => 22041, + 12042 => 22042, + 12043 => 22043, + 12044 => 22044, + 12045 => 22045, + 12046 => 22046, + 12047 => 22047, + 12048 => 22048, + 12049 => 22049, + 12050 => 22050, + 12051 => 22051, + 12052 => 22052, + 12053 => 22053, + 12054 => 22054, + 12055 => 22055, + 12056 => 22056, + 12057 => 22057, + 12058 => 22058, + 12059 => 22059, + 12060 => 22060, + 12061 => 22061, + 12062 => 22062, + 12063 => 22063, + 12064 => 22064, + 12065 => 22065, + 12066 => 22066, + 12067 => 22067, + 12068 => 22068, + 12069 => 22069, + 12070 => 22070, + 12071 => 22071, + 12072 => 22072, + 12073 => 22073, + 12074 => 22074, + 12075 => 22075, + 12076 => 22076, + 12077 => 22077, + 12078 => 22078, + 12079 => 22079, + 12080 => 22080, + 12081 => 22081, + 12082 => 22082, + 12083 => 22083, + 12084 => 22084, + 12085 => 22085, + 12086 => 22086, + 12087 => 22087, + 12088 => 22088, + 12089 => 22089, + 12090 => 22090, + 12091 => 22091, + 12092 => 22092, + 12093 => 22093, + 12094 => 22094, + 12095 => 22095, + 12096 => 22096, + 12097 => 22097, + 12098 => 22098, + 12099 => 22099, + 12100 => 22100, + 12101 => 22101, + 12102 => 22102, + 12103 => 22103, + 12104 => 22104, + 12105 => 22105, + 12106 => 22106, + 12107 => 22107, + 12108 => 22108, + 12109 => 22109, + 12110 => 22110, + 12111 => 22111, + 12112 => 22112, + 12113 => 22113, + 12114 => 22114, + 12115 => 22115, + 12116 => 22116, + 12117 => 22117, + 12118 => 22118, + 12119 => 22119, + 12120 => 22120, + 12121 => 22121, + 12122 => 22122, + 12123 => 22123, + 12124 => 22124, + 12125 => 22125, + 12126 => 22126, + 12127 => 22127, + 12128 => 22128, + 12129 => 22129, + 12130 => 22130, + 12131 => 22131, + 12132 => 22132, + 12133 => 22133, + 12134 => 22134, + 12135 => 22135, + 12136 => 22136, + 12137 => 22137, + 12138 => 22138, + 12139 => 22139, + 12140 => 22140, + 12141 => 22141, + 12142 => 22142, + 12143 => 22143, + 12144 => 22144, + 12145 => 22145, + 12146 => 22146, + 12147 => 22147, + 12148 => 22148, + 12149 => 22149, + 12150 => 22150, + 12151 => 22151, + 12152 => 22152, + 12153 => 22153, + 12154 => 22154, + 12155 => 22155, + 12156 => 22156, + 12157 => 22157, + 12158 => 22158, + 12159 => 22159, + 12160 => 22160, + 12161 => 22161, + 12162 => 22162, + 12163 => 22163, + 12164 => 22164, + 12165 => 22165, + 12166 => 22166, + 12167 => 22167, + 12168 => 22168, + 12169 => 22169, + 12170 => 22170, + 12171 => 22171, + 12172 => 22172, + 12173 => 22173, + 12174 => 22174, + 12175 => 22175, + 12176 => 22176, + 12177 => 22177, + 12178 => 22178, + 12179 => 22179, + 12180 => 22180, + 12181 => 22181, + 12182 => 22182, + 12183 => 22183, + 12184 => 22184, + 12185 => 22185, + 12186 => 22186, + 12187 => 22187, + 12188 => 22188, + 12189 => 22189, + 12190 => 22190, + 12191 => 22191, + 12192 => 22192, + 12193 => 22193, + 12194 => 22194, + 12195 => 22195, + 12196 => 22196, + 12197 => 22197, + 12198 => 22198, + 12199 => 22199, + 12200 => 22200, + 12201 => 22201, + 12202 => 22202, + 12203 => 22203, + 12204 => 22204, + 12205 => 22205, + 12206 => 22206, + 12207 => 22207, + 12208 => 22208, + 12209 => 22209, + 12210 => 22210, + 12211 => 22211, + 12212 => 22212, + 12213 => 22213, + 12214 => 22214, + 12215 => 22215, + 12216 => 22216, + 12217 => 22217, + 12218 => 22218, + 12219 => 22219, + 12220 => 22220, + 12221 => 22221, + 12222 => 22222, + 12223 => 22223, + 12224 => 22224, + 12225 => 22225, + 12226 => 22226, + 12227 => 22227, + 12228 => 22228, + 12229 => 22229, + 12230 => 22230, + 12231 => 22231, + 12232 => 22232, + 12233 => 22233, + 12234 => 22234, + 12235 => 22235, + 12236 => 22236, + 12237 => 22237, + 12238 => 22238, + 12239 => 22239, + 12240 => 22240, + 12241 => 22241, + 12242 => 22242, + 12243 => 22243, + 12244 => 22244, + 12245 => 22245, + 12246 => 22246, + 12247 => 22247, + 12248 => 22248, + 12249 => 22249, + 12250 => 22250, + 12251 => 22251, + 12252 => 22252, + 12253 => 22253, + 12254 => 22254, + 12255 => 22255, + 12256 => 22256, + 12257 => 22257, + 12258 => 22258, + 12259 => 22259, + 12260 => 22260, + 12261 => 22261, + 12262 => 22262, + 12263 => 22263, + 12264 => 22264, + 12265 => 22265, + 12266 => 22266, + 12267 => 22267, + 12268 => 22268, + 12269 => 22269, + 12270 => 22270, + 12271 => 22271, + 12272 => 22272, + 12273 => 22273, + 12274 => 22274, + 12275 => 22275, + 12276 => 22276, + 12277 => 22277, + 12278 => 22278, + 12279 => 22279, + 12280 => 22280, + 12281 => 22281, + 12282 => 22282, + 12283 => 22283, + 12284 => 22284, + 12285 => 22285, + 12286 => 22286, + 12287 => 22287, + 12288 => 22288, + 12289 => 22289, + 12290 => 22290, + 12291 => 22291, + 12292 => 22292, + 12293 => 22293, + 12294 => 22294, + 12295 => 22295, + 12296 => 22296, + 12297 => 22297, + 12298 => 22298, + 12299 => 22299, + 12300 => 22300, + 12301 => 22301, + 12302 => 22302, + 12303 => 22303, + 12304 => 22304, + 12305 => 22305, + 12306 => 22306, + 12307 => 22307, + 12308 => 22308, + 12309 => 22309, + 12310 => 22310, + 12311 => 22311, + 12312 => 22312, + 12313 => 22313, + 12314 => 22314, + 12315 => 22315, + 12316 => 22316, + 12317 => 22317, + 12318 => 22318, + 12319 => 22319, + 12320 => 22320, + 12321 => 22321, + 12322 => 22322, + 12323 => 22323, + 12324 => 22324, + 12325 => 22325, + 12326 => 22326, + 12327 => 22327, + 12328 => 22328, + 12329 => 22329, + 12330 => 22330, + 12331 => 22331, + 12332 => 22332, + 12333 => 22333, + 12334 => 22334, + 12335 => 22335, + 12336 => 22336, + 12337 => 22337, + 12338 => 22338, + 12339 => 22339, + 12340 => 22340, + 12341 => 22341, + 12342 => 22342, + 12343 => 22343, + 12344 => 22344, + 12345 => 22345, + 12346 => 22346, + 12347 => 22347, + 12348 => 22348, + 12349 => 22349, + 12350 => 22350, + 12351 => 22351, + 12352 => 22352, + 12353 => 22353, + 12354 => 22354, + 12355 => 22355, + 12356 => 22356, + 12357 => 22357, + 12358 => 22358, + 12359 => 22359, + 12360 => 22360, + 12361 => 22361, + 12362 => 22362, + 12363 => 22363, + 12364 => 22364, + 12365 => 22365, + 12366 => 22366, + 12367 => 22367, + 12368 => 22368, + 12369 => 22369, + 12370 => 22370, + 12371 => 22371, + 12372 => 22372, + 12373 => 22373, + 12374 => 22374, + 12375 => 22375, + 12376 => 22376, + 12377 => 22377, + 12378 => 22378, + 12379 => 22379, + 12380 => 22380, + 12381 => 22381, + 12382 => 22382, + 12383 => 22383, + 12384 => 22384, + 12385 => 22385, + 12386 => 22386, + 12387 => 22387, + 12388 => 22388, + 12389 => 22389, + 12390 => 22390, + 12391 => 22391, + 12392 => 22392, + 12393 => 22393, + 12394 => 22394, + 12395 => 22395, + 12396 => 22396, + 12397 => 22397, + 12398 => 22398, + 12399 => 22399, + 12400 => 22400, + 12401 => 22401, + 12402 => 22402, + 12403 => 22403, + 12404 => 22404, + 12405 => 22405, + 12406 => 22406, + 12407 => 22407, + 12408 => 22408, + 12409 => 22409, + 12410 => 22410, + 12411 => 22411, + 12412 => 22412, + 12413 => 22413, + 12414 => 22414, + 12415 => 22415, + 12416 => 22416, + 12417 => 22417, + 12418 => 22418, + 12419 => 22419, + 12420 => 22420, + 12421 => 22421, + 12422 => 22422, + 12423 => 22423, + 12424 => 22424, + 12425 => 22425, + 12426 => 22426, + 12427 => 22427, + 12428 => 22428, + 12429 => 22429, + 12430 => 22430, + 12431 => 22431, + 12432 => 22432, + 12433 => 22433, + 12434 => 22434, + 12435 => 22435, + 12436 => 22436, + 12437 => 22437, + 12438 => 22438, + 12439 => 22439, + 12440 => 22440, + 12441 => 22441, + 12442 => 22442, + 12443 => 22443, + 12444 => 22444, + 12445 => 22445, + 12446 => 22446, + 12447 => 22447, + 12448 => 22448, + 12449 => 22449, + 12450 => 22450, + 12451 => 22451, + 12452 => 22452, + 12453 => 22453, + 12454 => 22454, + 12455 => 22455, + 12456 => 22456, + 12457 => 22457, + 12458 => 22458, + 12459 => 22459, + 12460 => 22460, + 12461 => 22461, + 12462 => 22462, + 12463 => 22463, + 12464 => 22464, + 12465 => 22465, + 12466 => 22466, + 12467 => 22467, + 12468 => 22468, + 12469 => 22469, + 12470 => 22470, + 12471 => 22471, + 12472 => 22472, + 12473 => 22473, + 12474 => 22474, + 12475 => 22475, + 12476 => 22476, + 12477 => 22477, + 12478 => 22478, + 12479 => 22479, + 12480 => 22480, + 12481 => 22481, + 12482 => 22482, + 12483 => 22483, + 12484 => 22484, + 12485 => 22485, + 12486 => 22486, + 12487 => 22487, + 12488 => 22488, + 12489 => 22489, + 12490 => 22490, + 12491 => 22491, + 12492 => 22492, + 12493 => 22493, + 12494 => 22494, + 12495 => 22495, + 12496 => 22496, + 12497 => 22497, + 12498 => 22498, + 12499 => 22499, + 12500 => 22500, + 12501 => 22501, + 12502 => 22502, + 12503 => 22503, + 12504 => 22504, + 12505 => 22505, + 12506 => 22506, + 12507 => 22507, + 12508 => 22508, + 12509 => 22509, + 12510 => 22510, + 12511 => 22511, + 12512 => 22512, + 12513 => 22513, + 12514 => 22514, + 12515 => 22515, + 12516 => 22516, + 12517 => 22517, + 12518 => 22518, + 12519 => 22519, + 12520 => 22520, + 12521 => 22521, + 12522 => 22522, + 12523 => 22523, + 12524 => 22524, + 12525 => 22525, + 12526 => 22526, + 12527 => 22527, + 12528 => 22528, + 12529 => 22529, + 12530 => 22530, + 12531 => 22531, + 12532 => 22532, + 12533 => 22533, + 12534 => 22534, + 12535 => 22535, + 12536 => 22536, + 12537 => 22537, + 12538 => 22538, + 12539 => 22539, + 12540 => 22540, + 12541 => 22541, + 12542 => 22542, + 12543 => 22543, + 12544 => 22544, + 12545 => 22545, + 12546 => 22546, + 12547 => 22547, + 12548 => 22548, + 12549 => 22549, + 12550 => 22550, + 12551 => 22551, + 12552 => 22552, + 12553 => 22553, + 12554 => 22554, + 12555 => 22555, + 12556 => 22556, + 12557 => 22557, + 12558 => 22558, + 12559 => 22559, + 12560 => 22560, + 12561 => 22561, + 12562 => 22562, + 12563 => 22563, + 12564 => 22564, + 12565 => 22565, + 12566 => 22566, + 12567 => 22567, + 12568 => 22568, + 12569 => 22569, + 12570 => 22570, + 12571 => 22571, + 12572 => 22572, + 12573 => 22573, + 12574 => 22574, + 12575 => 22575, + 12576 => 22576, + 12577 => 22577, + 12578 => 22578, + 12579 => 22579, + 12580 => 22580, + 12581 => 22581, + 12582 => 22582, + 12583 => 22583, + 12584 => 22584, + 12585 => 22585, + 12586 => 22586, + 12587 => 22587, + 12588 => 22588, + 12589 => 22589, + 12590 => 22590, + 12591 => 22591, + 12592 => 22592, + 12593 => 22593, + 12594 => 22594, + 12595 => 22595, + 12596 => 22596, + 12597 => 22597, + 12598 => 22598, + 12599 => 22599, + 12600 => 22600, + 12601 => 22601, + 12602 => 22602, + 12603 => 22603, + 12604 => 22604, + 12605 => 22605, + 12606 => 22606, + 12607 => 22607, + 12608 => 22608, + 12609 => 22609, + 12610 => 22610, + 12611 => 22611, + 12612 => 22612, + 12613 => 22613, + 12614 => 22614, + 12615 => 22615, + 12616 => 22616, + 12617 => 22617, + 12618 => 22618, + 12619 => 22619, + 12620 => 22620, + 12621 => 22621, + 12622 => 22622, + 12623 => 22623, + 12624 => 22624, + 12625 => 22625, + 12626 => 22626, + 12627 => 22627, + 12628 => 22628, + 12629 => 22629, + 12630 => 22630, + 12631 => 22631, + 12632 => 22632, + 12633 => 22633, + 12634 => 22634, + 12635 => 22635, + 12636 => 22636, + 12637 => 22637, + 12638 => 22638, + 12639 => 22639, + 12640 => 22640, + 12641 => 22641, + 12642 => 22642, + 12643 => 22643, + 12644 => 22644, + 12645 => 22645, + 12646 => 22646, + 12647 => 22647, + 12648 => 22648, + 12649 => 22649, + 12650 => 22650, + 12651 => 22651, + 12652 => 22652, + 12653 => 22653, + 12654 => 22654, + 12655 => 22655, + 12656 => 22656, + 12657 => 22657, + 12658 => 22658, + 12659 => 22659, + 12660 => 22660, + 12661 => 22661, + 12662 => 22662, + 12663 => 22663, + 12664 => 22664, + 12665 => 22665, + 12666 => 22666, + 12667 => 22667, + 12668 => 22668, + 12669 => 22669, + 12670 => 22670, + 12671 => 22671, + 12672 => 22672, + 12673 => 22673, + 12674 => 22674, + 12675 => 22675, + 12676 => 22676, + 12677 => 22677, + 12678 => 22678, + 12679 => 22679, + 12680 => 22680, + 12681 => 22681, + 12682 => 22682, + 12683 => 22683, + 12684 => 22684, + 12685 => 22685, + 12686 => 22686, + 12687 => 22687, + 12688 => 22688, + 12689 => 22689, + 12690 => 22690, + 12691 => 22691, + 12692 => 22692, + 12693 => 22693, + 12694 => 22694, + 12695 => 22695, + 12696 => 22696, + 12697 => 22697, + 12698 => 22698, + 12699 => 22699, + 12700 => 22700, + 12701 => 22701, + 12702 => 22702, + 12703 => 22703, + 12704 => 22704, + 12705 => 22705, + 12706 => 22706, + 12707 => 22707, + 12708 => 22708, + 12709 => 22709, + 12710 => 22710, + 12711 => 22711, + 12712 => 22712, + 12713 => 22713, + 12714 => 22714, + 12715 => 22715, + 12716 => 22716, + 12717 => 22717, + 12718 => 22718, + 12719 => 22719, + 12720 => 22720, + 12721 => 22721, + 12722 => 22722, + 12723 => 22723, + 12724 => 22724, + 12725 => 22725, + 12726 => 22726, + 12727 => 22727, + 12728 => 22728, + 12729 => 22729, + 12730 => 22730, + 12731 => 22731, + 12732 => 22732, + 12733 => 22733, + 12734 => 22734, + 12735 => 22735, + 12736 => 22736, + 12737 => 22737, + 12738 => 22738, + 12739 => 22739, + 12740 => 22740, + 12741 => 22741, + 12742 => 22742, + 12743 => 22743, + 12744 => 22744, + 12745 => 22745, + 12746 => 22746, + 12747 => 22747, + 12748 => 22748, + 12749 => 22749, + 12750 => 22750, + 12751 => 22751, + 12752 => 22752, + 12753 => 22753, + 12754 => 22754, + 12755 => 22755, + 12756 => 22756, + 12757 => 22757, + 12758 => 22758, + 12759 => 22759, + 12760 => 22760, + 12761 => 22761, + 12762 => 22762, + 12763 => 22763, + 12764 => 22764, + 12765 => 22765, + 12766 => 22766, + 12767 => 22767, + 12768 => 22768, + 12769 => 22769, + 12770 => 22770, + 12771 => 22771, + 12772 => 22772, + 12773 => 22773, + 12774 => 22774, + 12775 => 22775, + 12776 => 22776, + 12777 => 22777, + 12778 => 22778, + 12779 => 22779, + 12780 => 22780, + 12781 => 22781, + 12782 => 22782, + 12783 => 22783, + 12784 => 22784, + 12785 => 22785, + 12786 => 22786, + 12787 => 22787, + 12788 => 22788, + 12789 => 22789, + 12790 => 22790, + 12791 => 22791, + 12792 => 22792, + 12793 => 22793, + 12794 => 22794, + 12795 => 22795, + 12796 => 22796, + 12797 => 22797, + 12798 => 22798, + 12799 => 22799, + 12800 => 22800, + 12801 => 22801, + 12802 => 22802, + 12803 => 22803, + 12804 => 22804, + 12805 => 22805, + 12806 => 22806, + 12807 => 22807, + 12808 => 22808, + 12809 => 22809, + 12810 => 22810, + 12811 => 22811, + 12812 => 22812, + 12813 => 22813, + 12814 => 22814, + 12815 => 22815, + 12816 => 22816, + 12817 => 22817, + 12818 => 22818, + 12819 => 22819, + 12820 => 22820, + 12821 => 22821, + 12822 => 22822, + 12823 => 22823, + 12824 => 22824, + 12825 => 22825, + 12826 => 22826, + 12827 => 22827, + 12828 => 22828, + 12829 => 22829, + 12830 => 22830, + 12831 => 22831, + 12832 => 22832, + 12833 => 22833, + 12834 => 22834, + 12835 => 22835, + 12836 => 22836, + 12837 => 22837, + 12838 => 22838, + 12839 => 22839, + 12840 => 22840, + 12841 => 22841, + 12842 => 22842, + 12843 => 22843, + 12844 => 22844, + 12845 => 22845, + 12846 => 22846, + 12847 => 22847, + 12848 => 22848, + 12849 => 22849, + 12850 => 22850, + 12851 => 22851, + 12852 => 22852, + 12853 => 22853, + 12854 => 22854, + 12855 => 22855, + 12856 => 22856, + 12857 => 22857, + 12858 => 22858, + 12859 => 22859, + 12860 => 22860, + 12861 => 22861, + 12862 => 22862, + 12863 => 22863, + 12864 => 22864, + 12865 => 22865, + 12866 => 22866, + 12867 => 22867, + 12868 => 22868, + 12869 => 22869, + 12870 => 22870, + 12871 => 22871, + 12872 => 22872, + 12873 => 22873, + 12874 => 22874, + 12875 => 22875, + 12876 => 22876, + 12877 => 22877, + 12878 => 22878, + 12879 => 22879, + 12880 => 22880, + 12881 => 22881, + 12882 => 22882, + 12883 => 22883, + 12884 => 22884, + 12885 => 22885, + 12886 => 22886, + 12887 => 22887, + 12888 => 22888, + 12889 => 22889, + 12890 => 22890, + 12891 => 22891, + 12892 => 22892, + 12893 => 22893, + 12894 => 22894, + 12895 => 22895, + 12896 => 22896, + 12897 => 22897, + 12898 => 22898, + 12899 => 22899, + 12900 => 22900, + 12901 => 22901, + 12902 => 22902, + 12903 => 22903, + 12904 => 22904, + 12905 => 22905, + 12906 => 22906, + 12907 => 22907, + 12908 => 22908, + 12909 => 22909, + 12910 => 22910, + 12911 => 22911, + 12912 => 22912, + 12913 => 22913, + 12914 => 22914, + 12915 => 22915, + 12916 => 22916, + 12917 => 22917, + 12918 => 22918, + 12919 => 22919, + 12920 => 22920, + 12921 => 22921, + 12922 => 22922, + 12923 => 22923, + 12924 => 22924, + 12925 => 22925, + 12926 => 22926, + 12927 => 22927, + 12928 => 22928, + 12929 => 22929, + 12930 => 22930, + 12931 => 22931, + 12932 => 22932, + 12933 => 22933, + 12934 => 22934, + 12935 => 22935, + 12936 => 22936, + 12937 => 22937, + 12938 => 22938, + 12939 => 22939, + 12940 => 22940, + 12941 => 22941, + 12942 => 22942, + 12943 => 22943, + 12944 => 22944, + 12945 => 22945, + 12946 => 22946, + 12947 => 22947, + 12948 => 22948, + 12949 => 22949, + 12950 => 22950, + 12951 => 22951, + 12952 => 22952, + 12953 => 22953, + 12954 => 22954, + 12955 => 22955, + 12956 => 22956, + 12957 => 22957, + 12958 => 22958, + 12959 => 22959, + 12960 => 22960, + 12961 => 22961, + 12962 => 22962, + 12963 => 22963, + 12964 => 22964, + 12965 => 22965, + 12966 => 22966, + 12967 => 22967, + 12968 => 22968, + 12969 => 22969, + 12970 => 22970, + 12971 => 22971, + 12972 => 22972, + 12973 => 22973, + 12974 => 22974, + 12975 => 22975, + 12976 => 22976, + 12977 => 22977, + 12978 => 22978, + 12979 => 22979, + 12980 => 22980, + 12981 => 22981, + 12982 => 22982, + 12983 => 22983, + 12984 => 22984, + 12985 => 22985, + 12986 => 22986, + 12987 => 22987, + 12988 => 22988, + 12989 => 22989, + 12990 => 22990, + 12991 => 22991, + 12992 => 22992, + 12993 => 22993, + 12994 => 22994, + 12995 => 22995, + 12996 => 22996, + 12997 => 22997, + 12998 => 22998, + 12999 => 22999, + 13000 => 23000, + 13001 => 23001, + 13002 => 23002, + 13003 => 23003, + 13004 => 23004, + 13005 => 23005, + 13006 => 23006, + 13007 => 23007, + 13008 => 23008, + 13009 => 23009, + 13010 => 23010, + 13011 => 23011, + 13012 => 23012, + 13013 => 23013, + 13014 => 23014, + 13015 => 23015, + 13016 => 23016, + 13017 => 23017, + 13018 => 23018, + 13019 => 23019, + 13020 => 23020, + 13021 => 23021, + 13022 => 23022, + 13023 => 23023, + 13024 => 23024, + 13025 => 23025, + 13026 => 23026, + 13027 => 23027, + 13028 => 23028, + 13029 => 23029, + 13030 => 23030, + 13031 => 23031, + 13032 => 23032, + 13033 => 23033, + 13034 => 23034, + 13035 => 23035, + 13036 => 23036, + 13037 => 23037, + 13038 => 23038, + 13039 => 23039, + 13040 => 23040, + 13041 => 23041, + 13042 => 23042, + 13043 => 23043, + 13044 => 23044, + 13045 => 23045, + 13046 => 23046, + 13047 => 23047, + 13048 => 23048, + 13049 => 23049, + 13050 => 23050, + 13051 => 23051, + 13052 => 23052, + 13053 => 23053, + 13054 => 23054, + 13055 => 23055, + 13056 => 23056, + 13057 => 23057, + 13058 => 23058, + 13059 => 23059, + 13060 => 23060, + 13061 => 23061, + 13062 => 23062, + 13063 => 23063, + 13064 => 23064, + 13065 => 23065, + 13066 => 23066, + 13067 => 23067, + 13068 => 23068, + 13069 => 23069, + 13070 => 23070, + 13071 => 23071, + 13072 => 23072, + 13073 => 23073, + 13074 => 23074, + 13075 => 23075, + 13076 => 23076, + 13077 => 23077, + 13078 => 23078, + 13079 => 23079, + 13080 => 23080, + 13081 => 23081, + 13082 => 23082, + 13083 => 23083, + 13084 => 23084, + 13085 => 23085, + 13086 => 23086, + 13087 => 23087, + 13088 => 23088, + 13089 => 23089, + 13090 => 23090, + 13091 => 23091, + 13092 => 23092, + 13093 => 23093, + 13094 => 23094, + 13095 => 23095, + 13096 => 23096, + 13097 => 23097, + 13098 => 23098, + 13099 => 23099, + 13100 => 23100, + 13101 => 23101, + 13102 => 23102, + 13103 => 23103, + 13104 => 23104, + 13105 => 23105, + 13106 => 23106, + 13107 => 23107, + 13108 => 23108, + 13109 => 23109, + 13110 => 23110, + 13111 => 23111, + 13112 => 23112, + 13113 => 23113, + 13114 => 23114, + 13115 => 23115, + 13116 => 23116, + 13117 => 23117, + 13118 => 23118, + 13119 => 23119, + 13120 => 23120, + 13121 => 23121, + 13122 => 23122, + 13123 => 23123, + 13124 => 23124, + 13125 => 23125, + 13126 => 23126, + 13127 => 23127, + 13128 => 23128, + 13129 => 23129, + 13130 => 23130, + 13131 => 23131, + 13132 => 23132, + 13133 => 23133, + 13134 => 23134, + 13135 => 23135, + 13136 => 23136, + 13137 => 23137, + 13138 => 23138, + 13139 => 23139, + 13140 => 23140, + 13141 => 23141, + 13142 => 23142, + 13143 => 23143, + 13144 => 23144, + 13145 => 23145, + 13146 => 23146, + 13147 => 23147, + 13148 => 23148, + 13149 => 23149, + 13150 => 23150, + 13151 => 23151, + 13152 => 23152, + 13153 => 23153, + 13154 => 23154, + 13155 => 23155, + 13156 => 23156, + 13157 => 23157, + 13158 => 23158, + 13159 => 23159, + 13160 => 23160, + 13161 => 23161, + 13162 => 23162, + 13163 => 23163, + 13164 => 23164, + 13165 => 23165, + 13166 => 23166, + 13167 => 23167, + 13168 => 23168, + 13169 => 23169, + 13170 => 23170, + 13171 => 23171, + 13172 => 23172, + 13173 => 23173, + 13174 => 23174, + 13175 => 23175, + 13176 => 23176, + 13177 => 23177, + 13178 => 23178, + 13179 => 23179, + 13180 => 23180, + 13181 => 23181, + 13182 => 23182, + 13183 => 23183, + 13184 => 23184, + 13185 => 23185, + 13186 => 23186, + 13187 => 23187, + 13188 => 23188, + 13189 => 23189, + 13190 => 23190, + 13191 => 23191, + 13192 => 23192, + 13193 => 23193, + 13194 => 23194, + 13195 => 23195, + 13196 => 23196, + 13197 => 23197, + 13198 => 23198, + 13199 => 23199, + 13200 => 23200, + 13201 => 23201, + 13202 => 23202, + 13203 => 23203, + 13204 => 23204, + 13205 => 23205, + 13206 => 23206, + 13207 => 23207, + 13208 => 23208, + 13209 => 23209, + 13210 => 23210, + 13211 => 23211, + 13212 => 23212, + 13213 => 23213, + 13214 => 23214, + 13215 => 23215, + 13216 => 23216, + 13217 => 23217, + 13218 => 23218, + 13219 => 23219, + 13220 => 23220, + 13221 => 23221, + 13222 => 23222, + 13223 => 23223, + 13224 => 23224, + 13225 => 23225, + 13226 => 23226, + 13227 => 23227, + 13228 => 23228, + 13229 => 23229, + 13230 => 23230, + 13231 => 23231, + 13232 => 23232, + 13233 => 23233, + 13234 => 23234, + 13235 => 23235, + 13236 => 23236, + 13237 => 23237, + 13238 => 23238, + 13239 => 23239, + 13240 => 23240, + 13241 => 23241, + 13242 => 23242, + 13243 => 23243, + 13244 => 23244, + 13245 => 23245, + 13246 => 23246, + 13247 => 23247, + 13248 => 23248, + 13249 => 23249, + 13250 => 23250, + 13251 => 23251, + 13252 => 23252, + 13253 => 23253, + 13254 => 23254, + 13255 => 23255, + 13256 => 23256, + 13257 => 23257, + 13258 => 23258, + 13259 => 23259, + 13260 => 23260, + 13261 => 23261, + 13262 => 23262, + 13263 => 23263, + 13264 => 23264, + 13265 => 23265, + 13266 => 23266, + 13267 => 23267, + 13268 => 23268, + 13269 => 23269, + 13270 => 23270, + 13271 => 23271, + 13272 => 23272, + 13273 => 23273, + 13274 => 23274, + 13275 => 23275, + 13276 => 23276, + 13277 => 23277, + 13278 => 23278, + 13279 => 23279, + 13280 => 23280, + 13281 => 23281, + 13282 => 23282, + 13283 => 23283, + 13284 => 23284, + 13285 => 23285, + 13286 => 23286, + 13287 => 23287, + 13288 => 23288, + 13289 => 23289, + 13290 => 23290, + 13291 => 23291, + 13292 => 23292, + 13293 => 23293, + 13294 => 23294, + 13295 => 23295, + 13296 => 23296, + 13297 => 23297, + 13298 => 23298, + 13299 => 23299, + 13300 => 23300, + 13301 => 23301, + 13302 => 23302, + 13303 => 23303, + 13304 => 23304, + 13305 => 23305, + 13306 => 23306, + 13307 => 23307, + 13308 => 23308, + 13309 => 23309, + 13310 => 23310, + 13311 => 23311, + 13312 => 23312, + 13313 => 23313, + 13314 => 23314, + 13315 => 23315, + 13316 => 23316, + 13317 => 23317, + 13318 => 23318, + 13319 => 23319, + 13320 => 23320, + 13321 => 23321, + 13322 => 23322, + 13323 => 23323, + 13324 => 23324, + 13325 => 23325, + 13326 => 23326, + 13327 => 23327, + 13328 => 23328, + 13329 => 23329, + 13330 => 23330, + 13331 => 23331, + 13332 => 23332, + 13333 => 23333, + 13334 => 23334, + 13335 => 23335, + 13336 => 23336, + 13337 => 23337, + 13338 => 23338, + 13339 => 23339, + 13340 => 23340, + 13341 => 23341, + 13342 => 23342, + 13343 => 23343, + 13344 => 23344, + 13345 => 23345, + 13346 => 23346, + 13347 => 23347, + 13348 => 23348, + 13349 => 23349, + 13350 => 23350, + 13351 => 23351, + 13352 => 23352, + 13353 => 23353, + 13354 => 23354, + 13355 => 23355, + 13356 => 23356, + 13357 => 23357, + 13358 => 23358, + 13359 => 23359, + 13360 => 23360, + 13361 => 23361, + 13362 => 23362, + 13363 => 23363, + 13364 => 23364, + 13365 => 23365, + 13366 => 23366, + 13367 => 23367, + 13368 => 23368, + 13369 => 23369, + 13370 => 23370, + 13371 => 23371, + 13372 => 23372, + 13373 => 23373, + 13374 => 23374, + 13375 => 23375, + 13376 => 23376, + 13377 => 23377, + 13378 => 23378, + 13379 => 23379, + 13380 => 23380, + 13381 => 23381, + 13382 => 23382, + 13383 => 23383, + 13384 => 23384, + 13385 => 23385, + 13386 => 23386, + 13387 => 23387, + 13388 => 23388, + 13389 => 23389, + 13390 => 23390, + 13391 => 23391, + 13392 => 23392, + 13393 => 23393, + 13394 => 23394, + 13395 => 23395, + 13396 => 23396, + 13397 => 23397, + 13398 => 23398, + 13399 => 23399, + 13400 => 23400, + 13401 => 23401, + 13402 => 23402, + 13403 => 23403, + 13404 => 23404, + 13405 => 23405, + 13406 => 23406, + 13407 => 23407, + 13408 => 23408, + 13409 => 23409, + 13410 => 23410, + 13411 => 23411, + 13412 => 23412, + 13413 => 23413, + 13414 => 23414, + 13415 => 23415, + 13416 => 23416, + 13417 => 23417, + 13418 => 23418, + 13419 => 23419, + 13420 => 23420, + 13421 => 23421, + 13422 => 23422, + 13423 => 23423, + 13424 => 23424, + 13425 => 23425, + 13426 => 23426, + 13427 => 23427, + 13428 => 23428, + 13429 => 23429, + 13430 => 23430, + 13431 => 23431, + 13432 => 23432, + 13433 => 23433, + 13434 => 23434, + 13435 => 23435, + 13436 => 23436, + 13437 => 23437, + 13438 => 23438, + 13439 => 23439, + 13440 => 23440, + 13441 => 23441, + 13442 => 23442, + 13443 => 23443, + 13444 => 23444, + 13445 => 23445, + 13446 => 23446, + 13447 => 23447, + 13448 => 23448, + 13449 => 23449, + 13450 => 23450, + 13451 => 23451, + 13452 => 23452, + 13453 => 23453, + 13454 => 23454, + 13455 => 23455, + 13456 => 23456, + 13457 => 23457, + 13458 => 23458, + 13459 => 23459, + 13460 => 23460, + 13461 => 23461, + 13462 => 23462, + 13463 => 23463, + 13464 => 23464, + 13465 => 23465, + 13466 => 23466, + 13467 => 23467, + 13468 => 23468, + 13469 => 23469, + 13470 => 23470, + 13471 => 23471, + 13472 => 23472, + 13473 => 23473, + 13474 => 23474, + 13475 => 23475, + 13476 => 23476, + 13477 => 23477, + 13478 => 23478, + 13479 => 23479, + 13480 => 23480, + 13481 => 23481, + 13482 => 23482, + 13483 => 23483, + 13484 => 23484, + 13485 => 23485, + 13486 => 23486, + 13487 => 23487, + 13488 => 23488, + 13489 => 23489, + 13490 => 23490, + 13491 => 23491, + 13492 => 23492, + 13493 => 23493, + 13494 => 23494, + 13495 => 23495, + 13496 => 23496, + 13497 => 23497, + 13498 => 23498, + 13499 => 23499, + 13500 => 23500, + 13501 => 23501, + 13502 => 23502, + 13503 => 23503, + 13504 => 23504, + 13505 => 23505, + 13506 => 23506, + 13507 => 23507, + 13508 => 23508, + 13509 => 23509, + 13510 => 23510, + 13511 => 23511, + 13512 => 23512, + 13513 => 23513, + 13514 => 23514, + 13515 => 23515, + 13516 => 23516, + 13517 => 23517, + 13518 => 23518, + 13519 => 23519, + 13520 => 23520, + 13521 => 23521, + 13522 => 23522, + 13523 => 23523, + 13524 => 23524, + 13525 => 23525, + 13526 => 23526, + 13527 => 23527, + 13528 => 23528, + 13529 => 23529, + 13530 => 23530, + 13531 => 23531, + 13532 => 23532, + 13533 => 23533, + 13534 => 23534, + 13535 => 23535, + 13536 => 23536, + 13537 => 23537, + 13538 => 23538, + 13539 => 23539, + 13540 => 23540, + 13541 => 23541, + 13542 => 23542, + 13543 => 23543, + 13544 => 23544, + 13545 => 23545, + 13546 => 23546, + 13547 => 23547, + 13548 => 23548, + 13549 => 23549, + 13550 => 23550, + 13551 => 23551, + 13552 => 23552, + 13553 => 23553, + 13554 => 23554, + 13555 => 23555, + 13556 => 23556, + 13557 => 23557, + 13558 => 23558, + 13559 => 23559, + 13560 => 23560, + 13561 => 23561, + 13562 => 23562, + 13563 => 23563, + 13564 => 23564, + 13565 => 23565, + 13566 => 23566, + 13567 => 23567, + 13568 => 23568, + 13569 => 23569, + 13570 => 23570, + 13571 => 23571, + 13572 => 23572, + 13573 => 23573, + 13574 => 23574, + 13575 => 23575, + 13576 => 23576, + 13577 => 23577, + 13578 => 23578, + 13579 => 23579, + 13580 => 23580, + 13581 => 23581, + 13582 => 23582, + 13583 => 23583, + 13584 => 23584, + 13585 => 23585, + 13586 => 23586, + 13587 => 23587, + 13588 => 23588, + 13589 => 23589, + 13590 => 23590, + 13591 => 23591, + 13592 => 23592, + 13593 => 23593, + 13594 => 23594, + 13595 => 23595, + 13596 => 23596, + 13597 => 23597, + 13598 => 23598, + 13599 => 23599, + 13600 => 23600, + 13601 => 23601, + 13602 => 23602, + 13603 => 23603, + 13604 => 23604, + 13605 => 23605, + 13606 => 23606, + 13607 => 23607, + 13608 => 23608, + 13609 => 23609, + 13610 => 23610, + 13611 => 23611, + 13612 => 23612, + 13613 => 23613, + 13614 => 23614, + 13615 => 23615, + 13616 => 23616, + 13617 => 23617, + 13618 => 23618, + 13619 => 23619, + 13620 => 23620, + 13621 => 23621, + 13622 => 23622, + 13623 => 23623, + 13624 => 23624, + 13625 => 23625, + 13626 => 23626, + 13627 => 23627, + 13628 => 23628, + 13629 => 23629, + 13630 => 23630, + 13631 => 23631, + 13632 => 23632, + 13633 => 23633, + 13634 => 23634, + 13635 => 23635, + 13636 => 23636, + 13637 => 23637, + 13638 => 23638, + 13639 => 23639, + 13640 => 23640, + 13641 => 23641, + 13642 => 23642, + 13643 => 23643, + 13644 => 23644, + 13645 => 23645, + 13646 => 23646, + 13647 => 23647, + 13648 => 23648, + 13649 => 23649, + 13650 => 23650, + 13651 => 23651, + 13652 => 23652, + 13653 => 23653, + 13654 => 23654, + 13655 => 23655, + 13656 => 23656, + 13657 => 23657, + 13658 => 23658, + 13659 => 23659, + 13660 => 23660, + 13661 => 23661, + 13662 => 23662, + 13663 => 23663, + 13664 => 23664, + 13665 => 23665, + 13666 => 23666, + 13667 => 23667, + 13668 => 23668, + 13669 => 23669, + 13670 => 23670, + 13671 => 23671, + 13672 => 23672, + 13673 => 23673, + 13674 => 23674, + 13675 => 23675, + 13676 => 23676, + 13677 => 23677, + 13678 => 23678, + 13679 => 23679, + 13680 => 23680, + 13681 => 23681, + 13682 => 23682, + 13683 => 23683, + 13684 => 23684, + 13685 => 23685, + 13686 => 23686, + 13687 => 23687, + 13688 => 23688, + 13689 => 23689, + 13690 => 23690, + 13691 => 23691, + 13692 => 23692, + 13693 => 23693, + 13694 => 23694, + 13695 => 23695, + 13696 => 23696, + 13697 => 23697, + 13698 => 23698, + 13699 => 23699, + 13700 => 23700, + 13701 => 23701, + 13702 => 23702, + 13703 => 23703, + 13704 => 23704, + 13705 => 23705, + 13706 => 23706, + 13707 => 23707, + 13708 => 23708, + 13709 => 23709, + 13710 => 23710, + 13711 => 23711, + 13712 => 23712, + 13713 => 23713, + 13714 => 23714, + 13715 => 23715, + 13716 => 23716, + 13717 => 23717, + 13718 => 23718, + 13719 => 23719, + 13720 => 23720, + 13721 => 23721, + 13722 => 23722, + 13723 => 23723, + 13724 => 23724, + 13725 => 23725, + 13726 => 23726, + 13727 => 23727, + 13728 => 23728, + 13729 => 23729, + 13730 => 23730, + 13731 => 23731, + 13732 => 23732, + 13733 => 23733, + 13734 => 23734, + 13735 => 23735, + 13736 => 23736, + 13737 => 23737, + 13738 => 23738, + 13739 => 23739, + 13740 => 23740, + 13741 => 23741, + 13742 => 23742, + 13743 => 23743, + 13744 => 23744, + 13745 => 23745, + 13746 => 23746, + 13747 => 23747, + 13748 => 23748, + 13749 => 23749, + 13750 => 23750, + 13751 => 23751, + 13752 => 23752, + 13753 => 23753, + 13754 => 23754, + 13755 => 23755, + 13756 => 23756, + 13757 => 23757, + 13758 => 23758, + 13759 => 23759, + 13760 => 23760, + 13761 => 23761, + 13762 => 23762, + 13763 => 23763, + 13764 => 23764, + 13765 => 23765, + 13766 => 23766, + 13767 => 23767, + 13768 => 23768, + 13769 => 23769, + 13770 => 23770, + 13771 => 23771, + 13772 => 23772, + 13773 => 23773, + 13774 => 23774, + 13775 => 23775, + 13776 => 23776, + 13777 => 23777, + 13778 => 23778, + 13779 => 23779, + 13780 => 23780, + 13781 => 23781, + 13782 => 23782, + 13783 => 23783, + 13784 => 23784, + 13785 => 23785, + 13786 => 23786, + 13787 => 23787, + 13788 => 23788, + 13789 => 23789, + 13790 => 23790, + 13791 => 23791, + 13792 => 23792, + 13793 => 23793, + 13794 => 23794, + 13795 => 23795, + 13796 => 23796, + 13797 => 23797, + 13798 => 23798, + 13799 => 23799, + 13800 => 23800, + 13801 => 23801, + 13802 => 23802, + 13803 => 23803, + 13804 => 23804, + 13805 => 23805, + 13806 => 23806, + 13807 => 23807, + 13808 => 23808, + 13809 => 23809, + 13810 => 23810, + 13811 => 23811, + 13812 => 23812, + 13813 => 23813, + 13814 => 23814, + 13815 => 23815, + 13816 => 23816, + 13817 => 23817, + 13818 => 23818, + 13819 => 23819, + 13820 => 23820, + 13821 => 23821, + 13822 => 23822, + 13823 => 23823, + 13824 => 23824, + 13825 => 23825, + 13826 => 23826, + 13827 => 23827, + 13828 => 23828, + 13829 => 23829, + 13830 => 23830, + 13831 => 23831, + 13832 => 23832, + 13833 => 23833, + 13834 => 23834, + 13835 => 23835, + 13836 => 23836, + 13837 => 23837, + 13838 => 23838, + 13839 => 23839, + 13840 => 23840, + 13841 => 23841, + 13842 => 23842, + 13843 => 23843, + 13844 => 23844, + 13845 => 23845, + 13846 => 23846, + 13847 => 23847, + 13848 => 23848, + 13849 => 23849, + 13850 => 23850, + 13851 => 23851, + 13852 => 23852, + 13853 => 23853, + 13854 => 23854, + 13855 => 23855, + 13856 => 23856, + 13857 => 23857, + 13858 => 23858, + 13859 => 23859, + 13860 => 23860, + 13861 => 23861, + 13862 => 23862, + 13863 => 23863, + 13864 => 23864, + 13865 => 23865, + 13866 => 23866, + 13867 => 23867, + 13868 => 23868, + 13869 => 23869, + 13870 => 23870, + 13871 => 23871, + 13872 => 23872, + 13873 => 23873, + 13874 => 23874, + 13875 => 23875, + 13876 => 23876, + 13877 => 23877, + 13878 => 23878, + 13879 => 23879, + 13880 => 23880, + 13881 => 23881, + 13882 => 23882, + 13883 => 23883, + 13884 => 23884, + 13885 => 23885, + 13886 => 23886, + 13887 => 23887, + 13888 => 23888, + 13889 => 23889, + 13890 => 23890, + 13891 => 23891, + 13892 => 23892, + 13893 => 23893, + 13894 => 23894, + 13895 => 23895, + 13896 => 23896, + 13897 => 23897, + 13898 => 23898, + 13899 => 23899, + 13900 => 23900, + 13901 => 23901, + 13902 => 23902, + 13903 => 23903, + 13904 => 23904, + 13905 => 23905, + 13906 => 23906, + 13907 => 23907, + 13908 => 23908, + 13909 => 23909, + 13910 => 23910, + 13911 => 23911, + 13912 => 23912, + 13913 => 23913, + 13914 => 23914, + 13915 => 23915, + 13916 => 23916, + 13917 => 23917, + 13918 => 23918, + 13919 => 23919, + 13920 => 23920, + 13921 => 23921, + 13922 => 23922, + 13923 => 23923, + 13924 => 23924, + 13925 => 23925, + 13926 => 23926, + 13927 => 23927, + 13928 => 23928, + 13929 => 23929, + 13930 => 23930, + 13931 => 23931, + 13932 => 23932, + 13933 => 23933, + 13934 => 23934, + 13935 => 23935, + 13936 => 23936, + 13937 => 23937, + 13938 => 23938, + 13939 => 23939, + 13940 => 23940, + 13941 => 23941, + 13942 => 23942, + 13943 => 23943, + 13944 => 23944, + 13945 => 23945, + 13946 => 23946, + 13947 => 23947, + 13948 => 23948, + 13949 => 23949, + 13950 => 23950, + 13951 => 23951, + 13952 => 23952, + 13953 => 23953, + 13954 => 23954, + 13955 => 23955, + 13956 => 23956, + 13957 => 23957, + 13958 => 23958, + 13959 => 23959, + 13960 => 23960, + 13961 => 23961, + 13962 => 23962, + 13963 => 23963, + 13964 => 23964, + 13965 => 23965, + 13966 => 23966, + 13967 => 23967, + 13968 => 23968, + 13969 => 23969, + 13970 => 23970, + 13971 => 23971, + 13972 => 23972, + 13973 => 23973, + 13974 => 23974, + 13975 => 23975, + 13976 => 23976, + 13977 => 23977, + 13978 => 23978, + 13979 => 23979, + 13980 => 23980, + 13981 => 23981, + 13982 => 23982, + 13983 => 23983, + 13984 => 23984, + 13985 => 23985, + 13986 => 23986, + 13987 => 23987, + 13988 => 23988, + 13989 => 23989, + 13990 => 23990, + 13991 => 23991, + 13992 => 23992, + 13993 => 23993, + 13994 => 23994, + 13995 => 23995, + 13996 => 23996, + 13997 => 23997, + 13998 => 23998, + 13999 => 23999, + 14000 => 24000, + 14001 => 24001, + 14002 => 24002, + 14003 => 24003, + 14004 => 24004, + 14005 => 24005, + 14006 => 24006, + 14007 => 24007, + 14008 => 24008, + 14009 => 24009, + 14010 => 24010, + 14011 => 24011, + 14012 => 24012, + 14013 => 24013, + 14014 => 24014, + 14015 => 24015, + 14016 => 24016, + 14017 => 24017, + 14018 => 24018, + 14019 => 24019, + 14020 => 24020, + 14021 => 24021, + 14022 => 24022, + 14023 => 24023, + 14024 => 24024, + 14025 => 24025, + 14026 => 24026, + 14027 => 24027, + 14028 => 24028, + 14029 => 24029, + 14030 => 24030, + 14031 => 24031, + 14032 => 24032, + 14033 => 24033, + 14034 => 24034, + 14035 => 24035, + 14036 => 24036, + 14037 => 24037, + 14038 => 24038, + 14039 => 24039, + 14040 => 24040, + 14041 => 24041, + 14042 => 24042, + 14043 => 24043, + 14044 => 24044, + 14045 => 24045, + 14046 => 24046, + 14047 => 24047, + 14048 => 24048, + 14049 => 24049, + 14050 => 24050, + 14051 => 24051, + 14052 => 24052, + 14053 => 24053, + 14054 => 24054, + 14055 => 24055, + 14056 => 24056, + 14057 => 24057, + 14058 => 24058, + 14059 => 24059, + 14060 => 24060, + 14061 => 24061, + 14062 => 24062, + 14063 => 24063, + 14064 => 24064, + 14065 => 24065, + 14066 => 24066, + 14067 => 24067, + 14068 => 24068, + 14069 => 24069, + 14070 => 24070, + 14071 => 24071, + 14072 => 24072, + 14073 => 24073, + 14074 => 24074, + 14075 => 24075, + 14076 => 24076, + 14077 => 24077, + 14078 => 24078, + 14079 => 24079, + 14080 => 24080, + 14081 => 24081, + 14082 => 24082, + 14083 => 24083, + 14084 => 24084, + 14085 => 24085, + 14086 => 24086, + 14087 => 24087, + 14088 => 24088, + 14089 => 24089, + 14090 => 24090, + 14091 => 24091, + 14092 => 24092, + 14093 => 24093, + 14094 => 24094, + 14095 => 24095, + 14096 => 24096, + 14097 => 24097, + 14098 => 24098, + 14099 => 24099, + 14100 => 24100, + 14101 => 24101, + 14102 => 24102, + 14103 => 24103, + 14104 => 24104, + 14105 => 24105, + 14106 => 24106, + 14107 => 24107, + 14108 => 24108, + 14109 => 24109, + 14110 => 24110, + 14111 => 24111, + 14112 => 24112, + 14113 => 24113, + 14114 => 24114, + 14115 => 24115, + 14116 => 24116, + 14117 => 24117, + 14118 => 24118, + 14119 => 24119, + 14120 => 24120, + 14121 => 24121, + 14122 => 24122, + 14123 => 24123, + 14124 => 24124, + 14125 => 24125, + 14126 => 24126, + 14127 => 24127, + 14128 => 24128, + 14129 => 24129, + 14130 => 24130, + 14131 => 24131, + 14132 => 24132, + 14133 => 24133, + 14134 => 24134, + 14135 => 24135, + 14136 => 24136, + 14137 => 24137, + 14138 => 24138, + 14139 => 24139, + 14140 => 24140, + 14141 => 24141, + 14142 => 24142, + 14143 => 24143, + 14144 => 24144, + 14145 => 24145, + 14146 => 24146, + 14147 => 24147, + 14148 => 24148, + 14149 => 24149, + 14150 => 24150, + 14151 => 24151, + 14152 => 24152, + 14153 => 24153, + 14154 => 24154, + 14155 => 24155, + 14156 => 24156, + 14157 => 24157, + 14158 => 24158, + 14159 => 24159, + 14160 => 24160, + 14161 => 24161, + 14162 => 24162, + 14163 => 24163, + 14164 => 24164, + 14165 => 24165, + 14166 => 24166, + 14167 => 24167, + 14168 => 24168, + 14169 => 24169, + 14170 => 24170, + 14171 => 24171, + 14172 => 24172, + 14173 => 24173, + 14174 => 24174, + 14175 => 24175, + 14176 => 24176, + 14177 => 24177, + 14178 => 24178, + 14179 => 24179, + 14180 => 24180, + 14181 => 24181, + 14182 => 24182, + 14183 => 24183, + 14184 => 24184, + 14185 => 24185, + 14186 => 24186, + 14187 => 24187, + 14188 => 24188, + 14189 => 24189, + 14190 => 24190, + 14191 => 24191, + 14192 => 24192, + 14193 => 24193, + 14194 => 24194, + 14195 => 24195, + 14196 => 24196, + 14197 => 24197, + 14198 => 24198, + 14199 => 24199, + 14200 => 24200, + 14201 => 24201, + 14202 => 24202, + 14203 => 24203, + 14204 => 24204, + 14205 => 24205, + 14206 => 24206, + 14207 => 24207, + 14208 => 24208, + 14209 => 24209, + 14210 => 24210, + 14211 => 24211, + 14212 => 24212, + 14213 => 24213, + 14214 => 24214, + 14215 => 24215, + 14216 => 24216, + 14217 => 24217, + 14218 => 24218, + 14219 => 24219, + 14220 => 24220, + 14221 => 24221, + 14222 => 24222, + 14223 => 24223, + 14224 => 24224, + 14225 => 24225, + 14226 => 24226, + 14227 => 24227, + 14228 => 24228, + 14229 => 24229, + 14230 => 24230, + 14231 => 24231, + 14232 => 24232, + 14233 => 24233, + 14234 => 24234, + 14235 => 24235, + 14236 => 24236, + 14237 => 24237, + 14238 => 24238, + 14239 => 24239, + 14240 => 24240, + 14241 => 24241, + 14242 => 24242, + 14243 => 24243, + 14244 => 24244, + 14245 => 24245, + 14246 => 24246, + 14247 => 24247, + 14248 => 24248, + 14249 => 24249, + 14250 => 24250, + 14251 => 24251, + 14252 => 24252, + 14253 => 24253, + 14254 => 24254, + 14255 => 24255, + 14256 => 24256, + 14257 => 24257, + 14258 => 24258, + 14259 => 24259, + 14260 => 24260, + 14261 => 24261, + 14262 => 24262, + 14263 => 24263, + 14264 => 24264, + 14265 => 24265, + 14266 => 24266, + 14267 => 24267, + 14268 => 24268, + 14269 => 24269, + 14270 => 24270, + 14271 => 24271, + 14272 => 24272, + 14273 => 24273, + 14274 => 24274, + 14275 => 24275, + 14276 => 24276, + 14277 => 24277, + 14278 => 24278, + 14279 => 24279, + 14280 => 24280, + 14281 => 24281, + 14282 => 24282, + 14283 => 24283, + 14284 => 24284, + 14285 => 24285, + 14286 => 24286, + 14287 => 24287, + 14288 => 24288, + 14289 => 24289, + 14290 => 24290, + 14291 => 24291, + 14292 => 24292, + 14293 => 24293, + 14294 => 24294, + 14295 => 24295, + 14296 => 24296, + 14297 => 24297, + 14298 => 24298, + 14299 => 24299, + 14300 => 24300, + 14301 => 24301, + 14302 => 24302, + 14303 => 24303, + 14304 => 24304, + 14305 => 24305, + 14306 => 24306, + 14307 => 24307, + 14308 => 24308, + 14309 => 24309, + 14310 => 24310, + 14311 => 24311, + 14312 => 24312, + 14313 => 24313, + 14314 => 24314, + 14315 => 24315, + 14316 => 24316, + 14317 => 24317, + 14318 => 24318, + 14319 => 24319, + 14320 => 24320, + 14321 => 24321, + 14322 => 24322, + 14323 => 24323, + 14324 => 24324, + 14325 => 24325, + 14326 => 24326, + 14327 => 24327, + 14328 => 24328, + 14329 => 24329, + 14330 => 24330, + 14331 => 24331, + 14332 => 24332, + 14333 => 24333, + 14334 => 24334, + 14335 => 24335, + 14336 => 24336, + 14337 => 24337, + 14338 => 24338, + 14339 => 24339, + 14340 => 24340, + 14341 => 24341, + 14342 => 24342, + 14343 => 24343, + 14344 => 24344, + 14345 => 24345, + 14346 => 24346, + 14347 => 24347, + 14348 => 24348, + 14349 => 24349, + 14350 => 24350, + 14351 => 24351, + 14352 => 24352, + 14353 => 24353, + 14354 => 24354, + 14355 => 24355, + 14356 => 24356, + 14357 => 24357, + 14358 => 24358, + 14359 => 24359, + 14360 => 24360, + 14361 => 24361, + 14362 => 24362, + 14363 => 24363, + 14364 => 24364, + 14365 => 24365, + 14366 => 24366, + 14367 => 24367, + 14368 => 24368, + 14369 => 24369, + 14370 => 24370, + 14371 => 24371, + 14372 => 24372, + 14373 => 24373, + 14374 => 24374, + 14375 => 24375, + 14376 => 24376, + 14377 => 24377, + 14378 => 24378, + 14379 => 24379, + 14380 => 24380, + 14381 => 24381, + 14382 => 24382, + 14383 => 24383, + 14384 => 24384, + 14385 => 24385, + 14386 => 24386, + 14387 => 24387, + 14388 => 24388, + 14389 => 24389, + 14390 => 24390, + 14391 => 24391, + 14392 => 24392, + 14393 => 24393, + 14394 => 24394, + 14395 => 24395, + 14396 => 24396, + 14397 => 24397, + 14398 => 24398, + 14399 => 24399, + 14400 => 24400, + 14401 => 24401, + 14402 => 24402, + 14403 => 24403, + 14404 => 24404, + 14405 => 24405, + 14406 => 24406, + 14407 => 24407, + 14408 => 24408, + 14409 => 24409, + 14410 => 24410, + 14411 => 24411, + 14412 => 24412, + 14413 => 24413, + 14414 => 24414, + 14415 => 24415, + 14416 => 24416, + 14417 => 24417, + 14418 => 24418, + 14419 => 24419, + 14420 => 24420, + 14421 => 24421, + 14422 => 24422, + 14423 => 24423, + 14424 => 24424, + 14425 => 24425, + 14426 => 24426, + 14427 => 24427, + 14428 => 24428, + 14429 => 24429, + 14430 => 24430, + 14431 => 24431, + 14432 => 24432, + 14433 => 24433, + 14434 => 24434, + 14435 => 24435, + 14436 => 24436, + 14437 => 24437, + 14438 => 24438, + 14439 => 24439, + 14440 => 24440, + 14441 => 24441, + 14442 => 24442, + 14443 => 24443, + 14444 => 24444, + 14445 => 24445, + 14446 => 24446, + 14447 => 24447, + 14448 => 24448, + 14449 => 24449, + 14450 => 24450, + 14451 => 24451, + 14452 => 24452, + 14453 => 24453, + 14454 => 24454, + 14455 => 24455, + 14456 => 24456, + 14457 => 24457, + 14458 => 24458, + 14459 => 24459, + 14460 => 24460, + 14461 => 24461, + 14462 => 24462, + 14463 => 24463, + 14464 => 24464, + 14465 => 24465, + 14466 => 24466, + 14467 => 24467, + 14468 => 24468, + 14469 => 24469, + 14470 => 24470, + 14471 => 24471, + 14472 => 24472, + 14473 => 24473, + 14474 => 24474, + 14475 => 24475, + 14476 => 24476, + 14477 => 24477, + 14478 => 24478, + 14479 => 24479, + 14480 => 24480, + 14481 => 24481, + 14482 => 24482, + 14483 => 24483, + 14484 => 24484, + 14485 => 24485, + 14486 => 24486, + 14487 => 24487, + 14488 => 24488, + 14489 => 24489, + 14490 => 24490, + 14491 => 24491, + 14492 => 24492, + 14493 => 24493, + 14494 => 24494, + 14495 => 24495, + 14496 => 24496, + 14497 => 24497, + 14498 => 24498, + 14499 => 24499, + 14500 => 24500, + 14501 => 24501, + 14502 => 24502, + 14503 => 24503, + 14504 => 24504, + 14505 => 24505, + 14506 => 24506, + 14507 => 24507, + 14508 => 24508, + 14509 => 24509, + 14510 => 24510, + 14511 => 24511, + 14512 => 24512, + 14513 => 24513, + 14514 => 24514, + 14515 => 24515, + 14516 => 24516, + 14517 => 24517, + 14518 => 24518, + 14519 => 24519, + 14520 => 24520, + 14521 => 24521, + 14522 => 24522, + 14523 => 24523, + 14524 => 24524, + 14525 => 24525, + 14526 => 24526, + 14527 => 24527, + 14528 => 24528, + 14529 => 24529, + 14530 => 24530, + 14531 => 24531, + 14532 => 24532, + 14533 => 24533, + 14534 => 24534, + 14535 => 24535, + 14536 => 24536, + 14537 => 24537, + 14538 => 24538, + 14539 => 24539, + 14540 => 24540, + 14541 => 24541, + 14542 => 24542, + 14543 => 24543, + 14544 => 24544, + 14545 => 24545, + 14546 => 24546, + 14547 => 24547, + 14548 => 24548, + 14549 => 24549, + 14550 => 24550, + 14551 => 24551, + 14552 => 24552, + 14553 => 24553, + 14554 => 24554, + 14555 => 24555, + 14556 => 24556, + 14557 => 24557, + 14558 => 24558, + 14559 => 24559, + 14560 => 24560, + 14561 => 24561, + 14562 => 24562, + 14563 => 24563, + 14564 => 24564, + 14565 => 24565, + 14566 => 24566, + 14567 => 24567, + 14568 => 24568, + 14569 => 24569, + 14570 => 24570, + 14571 => 24571, + 14572 => 24572, + 14573 => 24573, + 14574 => 24574, + 14575 => 24575, + 14576 => 24576, + 14577 => 24577, + 14578 => 24578, + 14579 => 24579, + 14580 => 24580, + 14581 => 24581, + 14582 => 24582, + 14583 => 24583, + 14584 => 24584, + 14585 => 24585, + 14586 => 24586, + 14587 => 24587, + 14588 => 24588, + 14589 => 24589, + 14590 => 24590, + 14591 => 24591, + 14592 => 24592, + 14593 => 24593, + 14594 => 24594, + 14595 => 24595, + 14596 => 24596, + 14597 => 24597, + 14598 => 24598, + 14599 => 24599, + 14600 => 24600, + 14601 => 24601, + 14602 => 24602, + 14603 => 24603, + 14604 => 24604, + 14605 => 24605, + 14606 => 24606, + 14607 => 24607, + 14608 => 24608, + 14609 => 24609, + 14610 => 24610, + 14611 => 24611, + 14612 => 24612, + 14613 => 24613, + 14614 => 24614, + 14615 => 24615, + 14616 => 24616, + 14617 => 24617, + 14618 => 24618, + 14619 => 24619, + 14620 => 24620, + 14621 => 24621, + 14622 => 24622, + 14623 => 24623, + 14624 => 24624, + 14625 => 24625, + 14626 => 24626, + 14627 => 24627, + 14628 => 24628, + 14629 => 24629, + 14630 => 24630, + 14631 => 24631, + 14632 => 24632, + 14633 => 24633, + 14634 => 24634, + 14635 => 24635, + 14636 => 24636, + 14637 => 24637, + 14638 => 24638, + 14639 => 24639, + 14640 => 24640, + 14641 => 24641, + 14642 => 24642, + 14643 => 24643, + 14644 => 24644, + 14645 => 24645, + 14646 => 24646, + 14647 => 24647, + 14648 => 24648, + 14649 => 24649, + 14650 => 24650, + 14651 => 24651, + 14652 => 24652, + 14653 => 24653, + 14654 => 24654, + 14655 => 24655, + 14656 => 24656, + 14657 => 24657, + 14658 => 24658, + 14659 => 24659, + 14660 => 24660, + 14661 => 24661, + 14662 => 24662, + 14663 => 24663, + 14664 => 24664, + 14665 => 24665, + 14666 => 24666, + 14667 => 24667, + 14668 => 24668, + 14669 => 24669, + 14670 => 24670, + 14671 => 24671, + 14672 => 24672, + 14673 => 24673, + 14674 => 24674, + 14675 => 24675, + 14676 => 24676, + 14677 => 24677, + 14678 => 24678, + 14679 => 24679, + 14680 => 24680, + 14681 => 24681, + 14682 => 24682, + 14683 => 24683, + 14684 => 24684, + 14685 => 24685, + 14686 => 24686, + 14687 => 24687, + 14688 => 24688, + 14689 => 24689, + 14690 => 24690, + 14691 => 24691, + 14692 => 24692, + 14693 => 24693, + 14694 => 24694, + 14695 => 24695, + 14696 => 24696, + 14697 => 24697, + 14698 => 24698, + 14699 => 24699, + 14700 => 24700, + 14701 => 24701, + 14702 => 24702, + 14703 => 24703, + 14704 => 24704, + 14705 => 24705, + 14706 => 24706, + 14707 => 24707, + 14708 => 24708, + 14709 => 24709, + 14710 => 24710, + 14711 => 24711, + 14712 => 24712, + 14713 => 24713, + 14714 => 24714, + 14715 => 24715, + 14716 => 24716, + 14717 => 24717, + 14718 => 24718, + 14719 => 24719, + 14720 => 24720, + 14721 => 24721, + 14722 => 24722, + 14723 => 24723, + 14724 => 24724, + 14725 => 24725, + 14726 => 24726, + 14727 => 24727, + 14728 => 24728, + 14729 => 24729, + 14730 => 24730, + 14731 => 24731, + 14732 => 24732, + 14733 => 24733, + 14734 => 24734, + 14735 => 24735, + 14736 => 24736, + 14737 => 24737, + 14738 => 24738, + 14739 => 24739, + 14740 => 24740, + 14741 => 24741, + 14742 => 24742, + 14743 => 24743, + 14744 => 24744, + 14745 => 24745, + 14746 => 24746, + 14747 => 24747, + 14748 => 24748, + 14749 => 24749, + 14750 => 24750, + 14751 => 24751, + 14752 => 24752, + 14753 => 24753, + 14754 => 24754, + 14755 => 24755, + 14756 => 24756, + 14757 => 24757, + 14758 => 24758, + 14759 => 24759, + 14760 => 24760, + 14761 => 24761, + 14762 => 24762, + 14763 => 24763, + 14764 => 24764, + 14765 => 24765, + 14766 => 24766, + 14767 => 24767, + 14768 => 24768, + 14769 => 24769, + 14770 => 24770, + 14771 => 24771, + 14772 => 24772, + 14773 => 24773, + 14774 => 24774, + 14775 => 24775, + 14776 => 24776, + 14777 => 24777, + 14778 => 24778, + 14779 => 24779, + 14780 => 24780, + 14781 => 24781, + 14782 => 24782, + 14783 => 24783, + 14784 => 24784, + 14785 => 24785, + 14786 => 24786, + 14787 => 24787, + 14788 => 24788, + 14789 => 24789, + 14790 => 24790, + 14791 => 24791, + 14792 => 24792, + 14793 => 24793, + 14794 => 24794, + 14795 => 24795, + 14796 => 24796, + 14797 => 24797, + 14798 => 24798, + 14799 => 24799, + 14800 => 24800, + 14801 => 24801, + 14802 => 24802, + 14803 => 24803, + 14804 => 24804, + 14805 => 24805, + 14806 => 24806, + 14807 => 24807, + 14808 => 24808, + 14809 => 24809, + 14810 => 24810, + 14811 => 24811, + 14812 => 24812, + 14813 => 24813, + 14814 => 24814, + 14815 => 24815, + 14816 => 24816, + 14817 => 24817, + 14818 => 24818, + 14819 => 24819, + 14820 => 24820, + 14821 => 24821, + 14822 => 24822, + 14823 => 24823, + 14824 => 24824, + 14825 => 24825, + 14826 => 24826, + 14827 => 24827, + 14828 => 24828, + 14829 => 24829, + 14830 => 24830, + 14831 => 24831, + 14832 => 24832, + 14833 => 24833, + 14834 => 24834, + 14835 => 24835, + 14836 => 24836, + 14837 => 24837, + 14838 => 24838, + 14839 => 24839, + 14840 => 24840, + 14841 => 24841, + 14842 => 24842, + 14843 => 24843, + 14844 => 24844, + 14845 => 24845, + 14846 => 24846, + 14847 => 24847, + 14848 => 24848, + 14849 => 24849, + 14850 => 24850, + 14851 => 24851, + 14852 => 24852, + 14853 => 24853, + 14854 => 24854, + 14855 => 24855, + 14856 => 24856, + 14857 => 24857, + 14858 => 24858, + 14859 => 24859, + 14860 => 24860, + 14861 => 24861, + 14862 => 24862, + 14863 => 24863, + 14864 => 24864, + 14865 => 24865, + 14866 => 24866, + 14867 => 24867, + 14868 => 24868, + 14869 => 24869, + 14870 => 24870, + 14871 => 24871, + 14872 => 24872, + 14873 => 24873, + 14874 => 24874, + 14875 => 24875, + 14876 => 24876, + 14877 => 24877, + 14878 => 24878, + 14879 => 24879, + 14880 => 24880, + 14881 => 24881, + 14882 => 24882, + 14883 => 24883, + 14884 => 24884, + 14885 => 24885, + 14886 => 24886, + 14887 => 24887, + 14888 => 24888, + 14889 => 24889, + 14890 => 24890, + 14891 => 24891, + 14892 => 24892, + 14893 => 24893, + 14894 => 24894, + 14895 => 24895, + 14896 => 24896, + 14897 => 24897, + 14898 => 24898, + 14899 => 24899, + 14900 => 24900, + 14901 => 24901, + 14902 => 24902, + 14903 => 24903, + 14904 => 24904, + 14905 => 24905, + 14906 => 24906, + 14907 => 24907, + 14908 => 24908, + 14909 => 24909, + 14910 => 24910, + 14911 => 24911, + 14912 => 24912, + 14913 => 24913, + 14914 => 24914, + 14915 => 24915, + 14916 => 24916, + 14917 => 24917, + 14918 => 24918, + 14919 => 24919, + 14920 => 24920, + 14921 => 24921, + 14922 => 24922, + 14923 => 24923, + 14924 => 24924, + 14925 => 24925, + 14926 => 24926, + 14927 => 24927, + 14928 => 24928, + 14929 => 24929, + 14930 => 24930, + 14931 => 24931, + 14932 => 24932, + 14933 => 24933, + 14934 => 24934, + 14935 => 24935, + 14936 => 24936, + 14937 => 24937, + 14938 => 24938, + 14939 => 24939, + 14940 => 24940, + 14941 => 24941, + 14942 => 24942, + 14943 => 24943, + 14944 => 24944, + 14945 => 24945, + 14946 => 24946, + 14947 => 24947, + 14948 => 24948, + 14949 => 24949, + 14950 => 24950, + 14951 => 24951, + 14952 => 24952, + 14953 => 24953, + 14954 => 24954, + 14955 => 24955, + 14956 => 24956, + 14957 => 24957, + 14958 => 24958, + 14959 => 24959, + 14960 => 24960, + 14961 => 24961, + 14962 => 24962, + 14963 => 24963, + 14964 => 24964, + 14965 => 24965, + 14966 => 24966, + 14967 => 24967, + 14968 => 24968, + 14969 => 24969, + 14970 => 24970, + 14971 => 24971, + 14972 => 24972, + 14973 => 24973, + 14974 => 24974, + 14975 => 24975, + 14976 => 24976, + 14977 => 24977, + 14978 => 24978, + 14979 => 24979, + 14980 => 24980, + 14981 => 24981, + 14982 => 24982, + 14983 => 24983, + 14984 => 24984, + 14985 => 24985, + 14986 => 24986, + 14987 => 24987, + 14988 => 24988, + 14989 => 24989, + 14990 => 24990, + 14991 => 24991, + 14992 => 24992, + 14993 => 24993, + 14994 => 24994, + 14995 => 24995, + 14996 => 24996, + 14997 => 24997, + 14998 => 24998, + 14999 => 24999, + 15000 => 25000, + 15001 => 25001, + 15002 => 25002, + 15003 => 25003, + 15004 => 25004, + 15005 => 25005, + 15006 => 25006, + 15007 => 25007, + 15008 => 25008, + 15009 => 25009, + 15010 => 25010, + 15011 => 25011, + 15012 => 25012, + 15013 => 25013, + 15014 => 25014, + 15015 => 25015, + 15016 => 25016, + 15017 => 25017, + 15018 => 25018, + 15019 => 25019, + 15020 => 25020, + 15021 => 25021, + 15022 => 25022, + 15023 => 25023, + 15024 => 25024, + 15025 => 25025, + 15026 => 25026, + 15027 => 25027, + 15028 => 25028, + 15029 => 25029, + 15030 => 25030, + 15031 => 25031, + 15032 => 25032, + 15033 => 25033, + 15034 => 25034, + 15035 => 25035, + 15036 => 25036, + 15037 => 25037, + 15038 => 25038, + 15039 => 25039, + 15040 => 25040, + 15041 => 25041, + 15042 => 25042, + 15043 => 25043, + 15044 => 25044, + 15045 => 25045, + 15046 => 25046, + 15047 => 25047, + 15048 => 25048, + 15049 => 25049, + 15050 => 25050, + 15051 => 25051, + 15052 => 25052, + 15053 => 25053, + 15054 => 25054, + 15055 => 25055, + 15056 => 25056, + 15057 => 25057, + 15058 => 25058, + 15059 => 25059, + 15060 => 25060, + 15061 => 25061, + 15062 => 25062, + 15063 => 25063, + 15064 => 25064, + 15065 => 25065, + 15066 => 25066, + 15067 => 25067, + 15068 => 25068, + 15069 => 25069, + 15070 => 25070, + 15071 => 25071, + 15072 => 25072, + 15073 => 25073, + 15074 => 25074, + 15075 => 25075, + 15076 => 25076, + 15077 => 25077, + 15078 => 25078, + 15079 => 25079, + 15080 => 25080, + 15081 => 25081, + 15082 => 25082, + 15083 => 25083, + 15084 => 25084, + 15085 => 25085, + 15086 => 25086, + 15087 => 25087, + 15088 => 25088, + 15089 => 25089, + 15090 => 25090, + 15091 => 25091, + 15092 => 25092, + 15093 => 25093, + 15094 => 25094, + 15095 => 25095, + 15096 => 25096, + 15097 => 25097, + 15098 => 25098, + 15099 => 25099, + 15100 => 25100, + 15101 => 25101, + 15102 => 25102, + 15103 => 25103, + 15104 => 25104, + 15105 => 25105, + 15106 => 25106, + 15107 => 25107, + 15108 => 25108, + 15109 => 25109, + 15110 => 25110, + 15111 => 25111, + 15112 => 25112, + 15113 => 25113, + 15114 => 25114, + 15115 => 25115, + 15116 => 25116, + 15117 => 25117, + 15118 => 25118, + 15119 => 25119, + 15120 => 25120, + 15121 => 25121, + 15122 => 25122, + 15123 => 25123, + 15124 => 25124, + 15125 => 25125, + 15126 => 25126, + 15127 => 25127, + 15128 => 25128, + 15129 => 25129, + 15130 => 25130, + 15131 => 25131, + 15132 => 25132, + 15133 => 25133, + 15134 => 25134, + 15135 => 25135, + 15136 => 25136, + 15137 => 25137, + 15138 => 25138, + 15139 => 25139, + 15140 => 25140, + 15141 => 25141, + 15142 => 25142, + 15143 => 25143, + 15144 => 25144, + 15145 => 25145, + 15146 => 25146, + 15147 => 25147, + 15148 => 25148, + 15149 => 25149, + 15150 => 25150, + 15151 => 25151, + 15152 => 25152, + 15153 => 25153, + 15154 => 25154, + 15155 => 25155, + 15156 => 25156, + 15157 => 25157, + 15158 => 25158, + 15159 => 25159, + 15160 => 25160, + 15161 => 25161, + 15162 => 25162, + 15163 => 25163, + 15164 => 25164, + 15165 => 25165, + 15166 => 25166, + 15167 => 25167, + 15168 => 25168, + 15169 => 25169, + 15170 => 25170, + 15171 => 25171, + 15172 => 25172, + 15173 => 25173, + 15174 => 25174, + 15175 => 25175, + 15176 => 25176, + 15177 => 25177, + 15178 => 25178, + 15179 => 25179, + 15180 => 25180, + 15181 => 25181, + 15182 => 25182, + 15183 => 25183, + 15184 => 25184, + 15185 => 25185, + 15186 => 25186, + 15187 => 25187, + 15188 => 25188, + 15189 => 25189, + 15190 => 25190, + 15191 => 25191, + 15192 => 25192, + 15193 => 25193, + 15194 => 25194, + 15195 => 25195, + 15196 => 25196, + 15197 => 25197, + 15198 => 25198, + 15199 => 25199, + 15200 => 25200, + 15201 => 25201, + 15202 => 25202, + 15203 => 25203, + 15204 => 25204, + 15205 => 25205, + 15206 => 25206, + 15207 => 25207, + 15208 => 25208, + 15209 => 25209, + 15210 => 25210, + 15211 => 25211, + 15212 => 25212, + 15213 => 25213, + 15214 => 25214, + 15215 => 25215, + 15216 => 25216, + 15217 => 25217, + 15218 => 25218, + 15219 => 25219, + 15220 => 25220, + 15221 => 25221, + 15222 => 25222, + 15223 => 25223, + 15224 => 25224, + 15225 => 25225, + 15226 => 25226, + 15227 => 25227, + 15228 => 25228, + 15229 => 25229, + 15230 => 25230, + 15231 => 25231, + 15232 => 25232, + 15233 => 25233, + 15234 => 25234, + 15235 => 25235, + 15236 => 25236, + 15237 => 25237, + 15238 => 25238, + 15239 => 25239, + 15240 => 25240, + 15241 => 25241, + 15242 => 25242, + 15243 => 25243, + 15244 => 25244, + 15245 => 25245, + 15246 => 25246, + 15247 => 25247, + 15248 => 25248, + 15249 => 25249, + 15250 => 25250, + 15251 => 25251, + 15252 => 25252, + 15253 => 25253, + 15254 => 25254, + 15255 => 25255, + 15256 => 25256, + 15257 => 25257, + 15258 => 25258, + 15259 => 25259, + 15260 => 25260, + 15261 => 25261, + 15262 => 25262, + 15263 => 25263, + 15264 => 25264, + 15265 => 25265, + 15266 => 25266, + 15267 => 25267, + 15268 => 25268, + 15269 => 25269, + 15270 => 25270, + 15271 => 25271, + 15272 => 25272, + 15273 => 25273, + 15274 => 25274, + 15275 => 25275, + 15276 => 25276, + 15277 => 25277, + 15278 => 25278, + 15279 => 25279, + 15280 => 25280, + 15281 => 25281, + 15282 => 25282, + 15283 => 25283, + 15284 => 25284, + 15285 => 25285, + 15286 => 25286, + 15287 => 25287, + 15288 => 25288, + 15289 => 25289, + 15290 => 25290, + 15291 => 25291, + 15292 => 25292, + 15293 => 25293, + 15294 => 25294, + 15295 => 25295, + 15296 => 25296, + 15297 => 25297, + 15298 => 25298, + 15299 => 25299, + 15300 => 25300, + 15301 => 25301, + 15302 => 25302, + 15303 => 25303, + 15304 => 25304, + 15305 => 25305, + 15306 => 25306, + 15307 => 25307, + 15308 => 25308, + 15309 => 25309, + 15310 => 25310, + 15311 => 25311, + 15312 => 25312, + 15313 => 25313, + 15314 => 25314, + 15315 => 25315, + 15316 => 25316, + 15317 => 25317, + 15318 => 25318, + 15319 => 25319, + 15320 => 25320, + 15321 => 25321, + 15322 => 25322, + 15323 => 25323, + 15324 => 25324, + 15325 => 25325, + 15326 => 25326, + 15327 => 25327, + 15328 => 25328, + 15329 => 25329, + 15330 => 25330, + 15331 => 25331, + 15332 => 25332, + 15333 => 25333, + 15334 => 25334, + 15335 => 25335, + 15336 => 25336, + 15337 => 25337, + 15338 => 25338, + 15339 => 25339, + 15340 => 25340, + 15341 => 25341, + 15342 => 25342, + 15343 => 25343, + 15344 => 25344, + 15345 => 25345, + 15346 => 25346, + 15347 => 25347, + 15348 => 25348, + 15349 => 25349, + 15350 => 25350, + 15351 => 25351, + 15352 => 25352, + 15353 => 25353, + 15354 => 25354, + 15355 => 25355, + 15356 => 25356, + 15357 => 25357, + 15358 => 25358, + 15359 => 25359, + 15360 => 25360, + 15361 => 25361, + 15362 => 25362, + 15363 => 25363, + 15364 => 25364, + 15365 => 25365, + 15366 => 25366, + 15367 => 25367, + 15368 => 25368, + 15369 => 25369, + 15370 => 25370, + 15371 => 25371, + 15372 => 25372, + 15373 => 25373, + 15374 => 25374, + 15375 => 25375, + 15376 => 25376, + 15377 => 25377, + 15378 => 25378, + 15379 => 25379, + 15380 => 25380, + 15381 => 25381, + 15382 => 25382, + 15383 => 25383, + 15384 => 25384, + 15385 => 25385, + 15386 => 25386, + 15387 => 25387, + 15388 => 25388, + 15389 => 25389, + 15390 => 25390, + 15391 => 25391, + 15392 => 25392, + 15393 => 25393, + 15394 => 25394, + 15395 => 25395, + 15396 => 25396, + 15397 => 25397, + 15398 => 25398, + 15399 => 25399, + 15400 => 25400, + 15401 => 25401, + 15402 => 25402, + 15403 => 25403, + 15404 => 25404, + 15405 => 25405, + 15406 => 25406, + 15407 => 25407, + 15408 => 25408, + 15409 => 25409, + 15410 => 25410, + 15411 => 25411, + 15412 => 25412, + 15413 => 25413, + 15414 => 25414, + 15415 => 25415, + 15416 => 25416, + 15417 => 25417, + 15418 => 25418, + 15419 => 25419, + 15420 => 25420, + 15421 => 25421, + 15422 => 25422, + 15423 => 25423, + 15424 => 25424, + 15425 => 25425, + 15426 => 25426, + 15427 => 25427, + 15428 => 25428, + 15429 => 25429, + 15430 => 25430, + 15431 => 25431, + 15432 => 25432, + 15433 => 25433, + 15434 => 25434, + 15435 => 25435, + 15436 => 25436, + 15437 => 25437, + 15438 => 25438, + 15439 => 25439, + 15440 => 25440, + 15441 => 25441, + 15442 => 25442, + 15443 => 25443, + 15444 => 25444, + 15445 => 25445, + 15446 => 25446, + 15447 => 25447, + 15448 => 25448, + 15449 => 25449, + 15450 => 25450, + 15451 => 25451, + 15452 => 25452, + 15453 => 25453, + 15454 => 25454, + 15455 => 25455, + 15456 => 25456, + 15457 => 25457, + 15458 => 25458, + 15459 => 25459, + 15460 => 25460, + 15461 => 25461, + 15462 => 25462, + 15463 => 25463, + 15464 => 25464, + 15465 => 25465, + 15466 => 25466, + 15467 => 25467, + 15468 => 25468, + 15469 => 25469, + 15470 => 25470, + 15471 => 25471, + 15472 => 25472, + 15473 => 25473, + 15474 => 25474, + 15475 => 25475, + 15476 => 25476, + 15477 => 25477, + 15478 => 25478, + 15479 => 25479, + 15480 => 25480, + 15481 => 25481, + 15482 => 25482, + 15483 => 25483, + 15484 => 25484, + 15485 => 25485, + 15486 => 25486, + 15487 => 25487, + 15488 => 25488, + 15489 => 25489, + 15490 => 25490, + 15491 => 25491, + 15492 => 25492, + 15493 => 25493, + 15494 => 25494, + 15495 => 25495, + 15496 => 25496, + 15497 => 25497, + 15498 => 25498, + 15499 => 25499, + 15500 => 25500, + 15501 => 25501, + 15502 => 25502, + 15503 => 25503, + 15504 => 25504, + 15505 => 25505, + 15506 => 25506, + 15507 => 25507, + 15508 => 25508, + 15509 => 25509, + 15510 => 25510, + 15511 => 25511, + 15512 => 25512, + 15513 => 25513, + 15514 => 25514, + 15515 => 25515, + 15516 => 25516, + 15517 => 25517, + 15518 => 25518, + 15519 => 25519, + 15520 => 25520, + 15521 => 25521, + 15522 => 25522, + 15523 => 25523, + 15524 => 25524, + 15525 => 25525, + 15526 => 25526, + 15527 => 25527, + 15528 => 25528, + 15529 => 25529, + 15530 => 25530, + 15531 => 25531, + 15532 => 25532, + 15533 => 25533, + 15534 => 25534, + 15535 => 25535, + 15536 => 25536, + 15537 => 25537, + 15538 => 25538, + 15539 => 25539, + 15540 => 25540, + 15541 => 25541, + 15542 => 25542, + 15543 => 25543, + 15544 => 25544, + 15545 => 25545, + 15546 => 25546, + 15547 => 25547, + 15548 => 25548, + 15549 => 25549, + 15550 => 25550, + 15551 => 25551, + 15552 => 25552, + 15553 => 25553, + 15554 => 25554, + 15555 => 25555, + 15556 => 25556, + 15557 => 25557, + 15558 => 25558, + 15559 => 25559, + 15560 => 25560, + 15561 => 25561, + 15562 => 25562, + 15563 => 25563, + 15564 => 25564, + 15565 => 25565, + 15566 => 25566, + 15567 => 25567, + 15568 => 25568, + 15569 => 25569, + 15570 => 25570, + 15571 => 25571, + 15572 => 25572, + 15573 => 25573, + 15574 => 25574, + 15575 => 25575, + 15576 => 25576, + 15577 => 25577, + 15578 => 25578, + 15579 => 25579, + 15580 => 25580, + 15581 => 25581, + 15582 => 25582, + 15583 => 25583, + 15584 => 25584, + 15585 => 25585, + 15586 => 25586, + 15587 => 25587, + 15588 => 25588, + 15589 => 25589, + 15590 => 25590, + 15591 => 25591, + 15592 => 25592, + 15593 => 25593, + 15594 => 25594, + 15595 => 25595, + 15596 => 25596, + 15597 => 25597, + 15598 => 25598, + 15599 => 25599, + 15600 => 25600, + 15601 => 25601, + 15602 => 25602, + 15603 => 25603, + 15604 => 25604, + 15605 => 25605, + 15606 => 25606, + 15607 => 25607, + 15608 => 25608, + 15609 => 25609, + 15610 => 25610, + 15611 => 25611, + 15612 => 25612, + 15613 => 25613, + 15614 => 25614, + 15615 => 25615, + 15616 => 25616, + 15617 => 25617, + 15618 => 25618, + 15619 => 25619, + 15620 => 25620, + 15621 => 25621, + 15622 => 25622, + 15623 => 25623, + 15624 => 25624, + 15625 => 25625, + 15626 => 25626, + 15627 => 25627, + 15628 => 25628, + 15629 => 25629, + 15630 => 25630, + 15631 => 25631, + 15632 => 25632, + 15633 => 25633, + 15634 => 25634, + 15635 => 25635, + 15636 => 25636, + 15637 => 25637, + 15638 => 25638, + 15639 => 25639, + 15640 => 25640, + 15641 => 25641, + 15642 => 25642, + 15643 => 25643, + 15644 => 25644, + 15645 => 25645, + 15646 => 25646, + 15647 => 25647, + 15648 => 25648, + 15649 => 25649, + 15650 => 25650, + 15651 => 25651, + 15652 => 25652, + 15653 => 25653, + 15654 => 25654, + 15655 => 25655, + 15656 => 25656, + 15657 => 25657, + 15658 => 25658, + 15659 => 25659, + 15660 => 25660, + 15661 => 25661, + 15662 => 25662, + 15663 => 25663, + 15664 => 25664, + 15665 => 25665, + 15666 => 25666, + 15667 => 25667, + 15668 => 25668, + 15669 => 25669, + 15670 => 25670, + 15671 => 25671, + 15672 => 25672, + 15673 => 25673, + 15674 => 25674, + 15675 => 25675, + 15676 => 25676, + 15677 => 25677, + 15678 => 25678, + 15679 => 25679, + 15680 => 25680, + 15681 => 25681, + 15682 => 25682, + 15683 => 25683, + 15684 => 25684, + 15685 => 25685, + 15686 => 25686, + 15687 => 25687, + 15688 => 25688, + 15689 => 25689, + 15690 => 25690, + 15691 => 25691, + 15692 => 25692, + 15693 => 25693, + 15694 => 25694, + 15695 => 25695, + 15696 => 25696, + 15697 => 25697, + 15698 => 25698, + 15699 => 25699, + 15700 => 25700, + 15701 => 25701, + 15702 => 25702, + 15703 => 25703, + 15704 => 25704, + 15705 => 25705, + 15706 => 25706, + 15707 => 25707, + 15708 => 25708, + 15709 => 25709, + 15710 => 25710, + 15711 => 25711, + 15712 => 25712, + 15713 => 25713, + 15714 => 25714, + 15715 => 25715, + 15716 => 25716, + 15717 => 25717, + 15718 => 25718, + 15719 => 25719, + 15720 => 25720, + 15721 => 25721, + 15722 => 25722, + 15723 => 25723, + 15724 => 25724, + 15725 => 25725, + 15726 => 25726, + 15727 => 25727, + 15728 => 25728, + 15729 => 25729, + 15730 => 25730, + 15731 => 25731, + 15732 => 25732, + 15733 => 25733, + 15734 => 25734, + 15735 => 25735, + 15736 => 25736, + 15737 => 25737, + 15738 => 25738, + 15739 => 25739, + 15740 => 25740, + 15741 => 25741, + 15742 => 25742, + 15743 => 25743, + 15744 => 25744, + 15745 => 25745, + 15746 => 25746, + 15747 => 25747, + 15748 => 25748, + 15749 => 25749, + 15750 => 25750, + 15751 => 25751, + 15752 => 25752, + 15753 => 25753, + 15754 => 25754, + 15755 => 25755, + 15756 => 25756, + 15757 => 25757, + 15758 => 25758, + 15759 => 25759, + 15760 => 25760, + 15761 => 25761, + 15762 => 25762, + 15763 => 25763, + 15764 => 25764, + 15765 => 25765, + 15766 => 25766, + 15767 => 25767, + 15768 => 25768, + 15769 => 25769, + 15770 => 25770, + 15771 => 25771, + 15772 => 25772, + 15773 => 25773, + 15774 => 25774, + 15775 => 25775, + 15776 => 25776, + 15777 => 25777, + 15778 => 25778, + 15779 => 25779, + 15780 => 25780, + 15781 => 25781, + 15782 => 25782, + 15783 => 25783, + 15784 => 25784, + 15785 => 25785, + 15786 => 25786, + 15787 => 25787, + 15788 => 25788, + 15789 => 25789, + 15790 => 25790, + 15791 => 25791, + 15792 => 25792, + 15793 => 25793, + 15794 => 25794, + 15795 => 25795, + 15796 => 25796, + 15797 => 25797, + 15798 => 25798, + 15799 => 25799, + 15800 => 25800, + 15801 => 25801, + 15802 => 25802, + 15803 => 25803, + 15804 => 25804, + 15805 => 25805, + 15806 => 25806, + 15807 => 25807, + 15808 => 25808, + 15809 => 25809, + 15810 => 25810, + 15811 => 25811, + 15812 => 25812, + 15813 => 25813, + 15814 => 25814, + 15815 => 25815, + 15816 => 25816, + 15817 => 25817, + 15818 => 25818, + 15819 => 25819, + 15820 => 25820, + 15821 => 25821, + 15822 => 25822, + 15823 => 25823, + 15824 => 25824, + 15825 => 25825, + 15826 => 25826, + 15827 => 25827, + 15828 => 25828, + 15829 => 25829, + 15830 => 25830, + 15831 => 25831, + 15832 => 25832, + 15833 => 25833, + 15834 => 25834, + 15835 => 25835, + 15836 => 25836, + 15837 => 25837, + 15838 => 25838, + 15839 => 25839, + 15840 => 25840, + 15841 => 25841, + 15842 => 25842, + 15843 => 25843, + 15844 => 25844, + 15845 => 25845, + 15846 => 25846, + 15847 => 25847, + 15848 => 25848, + 15849 => 25849, + 15850 => 25850, + 15851 => 25851, + 15852 => 25852, + 15853 => 25853, + 15854 => 25854, + 15855 => 25855, + 15856 => 25856, + 15857 => 25857, + 15858 => 25858, + 15859 => 25859, + 15860 => 25860, + 15861 => 25861, + 15862 => 25862, + 15863 => 25863, + 15864 => 25864, + 15865 => 25865, + 15866 => 25866, + 15867 => 25867, + 15868 => 25868, + 15869 => 25869, + 15870 => 25870, + 15871 => 25871, + 15872 => 25872, + 15873 => 25873, + 15874 => 25874, + 15875 => 25875, + 15876 => 25876, + 15877 => 25877, + 15878 => 25878, + 15879 => 25879, + 15880 => 25880, + 15881 => 25881, + 15882 => 25882, + 15883 => 25883, + 15884 => 25884, + 15885 => 25885, + 15886 => 25886, + 15887 => 25887, + 15888 => 25888, + 15889 => 25889, + 15890 => 25890, + 15891 => 25891, + 15892 => 25892, + 15893 => 25893, + 15894 => 25894, + 15895 => 25895, + 15896 => 25896, + 15897 => 25897, + 15898 => 25898, + 15899 => 25899, + 15900 => 25900, + 15901 => 25901, + 15902 => 25902, + 15903 => 25903, + 15904 => 25904, + 15905 => 25905, + 15906 => 25906, + 15907 => 25907, + 15908 => 25908, + 15909 => 25909, + 15910 => 25910, + 15911 => 25911, + 15912 => 25912, + 15913 => 25913, + 15914 => 25914, + 15915 => 25915, + 15916 => 25916, + 15917 => 25917, + 15918 => 25918, + 15919 => 25919, + 15920 => 25920, + 15921 => 25921, + 15922 => 25922, + 15923 => 25923, + 15924 => 25924, + 15925 => 25925, + 15926 => 25926, + 15927 => 25927, + 15928 => 25928, + 15929 => 25929, + 15930 => 25930, + 15931 => 25931, + 15932 => 25932, + 15933 => 25933, + 15934 => 25934, + 15935 => 25935, + 15936 => 25936, + 15937 => 25937, + 15938 => 25938, + 15939 => 25939, + 15940 => 25940, + 15941 => 25941, + 15942 => 25942, + 15943 => 25943, + 15944 => 25944, + 15945 => 25945, + 15946 => 25946, + 15947 => 25947, + 15948 => 25948, + 15949 => 25949, + 15950 => 25950, + 15951 => 25951, + 15952 => 25952, + 15953 => 25953, + 15954 => 25954, + 15955 => 25955, + 15956 => 25956, + 15957 => 25957, + 15958 => 25958, + 15959 => 25959, + 15960 => 25960, + 15961 => 25961, + 15962 => 25962, + 15963 => 25963, + 15964 => 25964, + 15965 => 25965, + 15966 => 25966, + 15967 => 25967, + 15968 => 25968, + 15969 => 25969, + 15970 => 25970, + 15971 => 25971, + 15972 => 25972, + 15973 => 25973, + 15974 => 25974, + 15975 => 25975, + 15976 => 25976, + 15977 => 25977, + 15978 => 25978, + 15979 => 25979, + 15980 => 25980, + 15981 => 25981, + 15982 => 25982, + 15983 => 25983, + 15984 => 25984, + 15985 => 25985, + 15986 => 25986, + 15987 => 25987, + 15988 => 25988, + 15989 => 25989, + 15990 => 25990, + 15991 => 25991, + 15992 => 25992, + 15993 => 25993, + 15994 => 25994, + 15995 => 25995, + 15996 => 25996, + 15997 => 25997, + 15998 => 25998, + 15999 => 25999, + 16000 => 26000, + 16001 => 26001, + 16002 => 26002, + 16003 => 26003, + 16004 => 26004, + 16005 => 26005, + 16006 => 26006, + 16007 => 26007, + 16008 => 26008, + 16009 => 26009, + 16010 => 26010, + 16011 => 26011, + 16012 => 26012, + 16013 => 26013, + 16014 => 26014, + 16015 => 26015, + 16016 => 26016, + 16017 => 26017, + 16018 => 26018, + 16019 => 26019, + 16020 => 26020, + 16021 => 26021, + 16022 => 26022, + 16023 => 26023, + 16024 => 26024, + 16025 => 26025, + 16026 => 26026, + 16027 => 26027, + 16028 => 26028, + 16029 => 26029, + 16030 => 26030, + 16031 => 26031, + 16032 => 26032, + 16033 => 26033, + 16034 => 26034, + 16035 => 26035, + 16036 => 26036, + 16037 => 26037, + 16038 => 26038, + 16039 => 26039, + 16040 => 26040, + 16041 => 26041, + 16042 => 26042, + 16043 => 26043, + 16044 => 26044, + 16045 => 26045, + 16046 => 26046, + 16047 => 26047, + 16048 => 26048, + 16049 => 26049, + 16050 => 26050, + 16051 => 26051, + 16052 => 26052, + 16053 => 26053, + 16054 => 26054, + 16055 => 26055, + 16056 => 26056, + 16057 => 26057, + 16058 => 26058, + 16059 => 26059, + 16060 => 26060, + 16061 => 26061, + 16062 => 26062, + 16063 => 26063, + 16064 => 26064, + 16065 => 26065, + 16066 => 26066, + 16067 => 26067, + 16068 => 26068, + 16069 => 26069, + 16070 => 26070, + 16071 => 26071, + 16072 => 26072, + 16073 => 26073, + 16074 => 26074, + 16075 => 26075, + 16076 => 26076, + 16077 => 26077, + 16078 => 26078, + 16079 => 26079, + 16080 => 26080, + 16081 => 26081, + 16082 => 26082, + 16083 => 26083, + 16084 => 26084, + 16085 => 26085, + 16086 => 26086, + 16087 => 26087, + 16088 => 26088, + 16089 => 26089, + 16090 => 26090, + 16091 => 26091, + 16092 => 26092, + 16093 => 26093, + 16094 => 26094, + 16095 => 26095, + 16096 => 26096, + 16097 => 26097, + 16098 => 26098, + 16099 => 26099, + 16100 => 26100, + 16101 => 26101, + 16102 => 26102, + 16103 => 26103, + 16104 => 26104, + 16105 => 26105, + 16106 => 26106, + 16107 => 26107, + 16108 => 26108, + 16109 => 26109, + 16110 => 26110, + 16111 => 26111, + 16112 => 26112, + 16113 => 26113, + 16114 => 26114, + 16115 => 26115, + 16116 => 26116, + 16117 => 26117, + 16118 => 26118, + 16119 => 26119, + 16120 => 26120, + 16121 => 26121, + 16122 => 26122, + 16123 => 26123, + 16124 => 26124, + 16125 => 26125, + 16126 => 26126, + 16127 => 26127, + 16128 => 26128, + 16129 => 26129, + 16130 => 26130, + 16131 => 26131, + 16132 => 26132, + 16133 => 26133, + 16134 => 26134, + 16135 => 26135, + 16136 => 26136, + 16137 => 26137, + 16138 => 26138, + 16139 => 26139, + 16140 => 26140, + 16141 => 26141, + 16142 => 26142, + 16143 => 26143, + 16144 => 26144, + 16145 => 26145, + 16146 => 26146, + 16147 => 26147, + 16148 => 26148, + 16149 => 26149, + 16150 => 26150, + 16151 => 26151, + 16152 => 26152, + 16153 => 26153, + 16154 => 26154, + 16155 => 26155, + 16156 => 26156, + 16157 => 26157, + 16158 => 26158, + 16159 => 26159, + 16160 => 26160, + 16161 => 26161, + 16162 => 26162, + 16163 => 26163, + 16164 => 26164, + 16165 => 26165, + 16166 => 26166, + 16167 => 26167, + 16168 => 26168, + 16169 => 26169, + 16170 => 26170, + 16171 => 26171, + 16172 => 26172, + 16173 => 26173, + 16174 => 26174, + 16175 => 26175, + 16176 => 26176, + 16177 => 26177, + 16178 => 26178, + 16179 => 26179, + 16180 => 26180, + 16181 => 26181, + 16182 => 26182, + 16183 => 26183, + 16184 => 26184, + 16185 => 26185, + 16186 => 26186, + 16187 => 26187, + 16188 => 26188, + 16189 => 26189, + 16190 => 26190, + 16191 => 26191, + 16192 => 26192, + 16193 => 26193, + 16194 => 26194, + 16195 => 26195, + 16196 => 26196, + 16197 => 26197, + 16198 => 26198, + 16199 => 26199, + 16200 => 26200, + 16201 => 26201, + 16202 => 26202, + 16203 => 26203, + 16204 => 26204, + 16205 => 26205, + 16206 => 26206, + 16207 => 26207, + 16208 => 26208, + 16209 => 26209, + 16210 => 26210, + 16211 => 26211, + 16212 => 26212, + 16213 => 26213, + 16214 => 26214, + 16215 => 26215, + 16216 => 26216, + 16217 => 26217, + 16218 => 26218, + 16219 => 26219, + 16220 => 26220, + 16221 => 26221, + 16222 => 26222, + 16223 => 26223, + 16224 => 26224, + 16225 => 26225, + 16226 => 26226, + 16227 => 26227, + 16228 => 26228, + 16229 => 26229, + 16230 => 26230, + 16231 => 26231, + 16232 => 26232, + 16233 => 26233, + 16234 => 26234, + 16235 => 26235, + 16236 => 26236, + 16237 => 26237, + 16238 => 26238, + 16239 => 26239, + 16240 => 26240, + 16241 => 26241, + 16242 => 26242, + 16243 => 26243, + 16244 => 26244, + 16245 => 26245, + 16246 => 26246, + 16247 => 26247, + 16248 => 26248, + 16249 => 26249, + 16250 => 26250, + 16251 => 26251, + 16252 => 26252, + 16253 => 26253, + 16254 => 26254, + 16255 => 26255, + 16256 => 26256, + 16257 => 26257, + 16258 => 26258, + 16259 => 26259, + 16260 => 26260, + 16261 => 26261, + 16262 => 26262, + 16263 => 26263, + 16264 => 26264, + 16265 => 26265, + 16266 => 26266, + 16267 => 26267, + 16268 => 26268, + 16269 => 26269, + 16270 => 26270, + 16271 => 26271, + 16272 => 26272, + 16273 => 26273, + 16274 => 26274, + 16275 => 26275, + 16276 => 26276, + 16277 => 26277, + 16278 => 26278, + 16279 => 26279, + 16280 => 26280, + 16281 => 26281, + 16282 => 26282, + 16283 => 26283, + 16284 => 26284, + 16285 => 26285, + 16286 => 26286, + 16287 => 26287, + 16288 => 26288, + 16289 => 26289, + 16290 => 26290, + 16291 => 26291, + 16292 => 26292, + 16293 => 26293, + 16294 => 26294, + 16295 => 26295, + 16296 => 26296, + 16297 => 26297, + 16298 => 26298, + 16299 => 26299, + 16300 => 26300, + 16301 => 26301, + 16302 => 26302, + 16303 => 26303, + 16304 => 26304, + 16305 => 26305, + 16306 => 26306, + 16307 => 26307, + 16308 => 26308, + 16309 => 26309, + 16310 => 26310, + 16311 => 26311, + 16312 => 26312, + 16313 => 26313, + 16314 => 26314, + 16315 => 26315, + 16316 => 26316, + 16317 => 26317, + 16318 => 26318, + 16319 => 26319, + 16320 => 26320, + 16321 => 26321, + 16322 => 26322, + 16323 => 26323, + 16324 => 26324, + 16325 => 26325, + 16326 => 26326, + 16327 => 26327, + 16328 => 26328, + 16329 => 26329, + 16330 => 26330, + 16331 => 26331, + 16332 => 26332, + 16333 => 26333, + 16334 => 26334, + 16335 => 26335, + 16336 => 26336, + 16337 => 26337, + 16338 => 26338, + 16339 => 26339, + 16340 => 26340, + 16341 => 26341, + 16342 => 26342, + 16343 => 26343, + 16344 => 26344, + 16345 => 26345, + 16346 => 26346, + 16347 => 26347, + 16348 => 26348, + 16349 => 26349, + 16350 => 26350, + 16351 => 26351, + 16352 => 26352, + 16353 => 26353, + 16354 => 26354, + 16355 => 26355, + 16356 => 26356, + 16357 => 26357, + 16358 => 26358, + 16359 => 26359, + 16360 => 26360, + 16361 => 26361, + 16362 => 26362, + 16363 => 26363, + 16364 => 26364, + 16365 => 26365, + 16366 => 26366, + 16367 => 26367, + 16368 => 26368, + 16369 => 26369, + 16370 => 26370, + 16371 => 26371, + 16372 => 26372, + 16373 => 26373, + 16374 => 26374, + 16375 => 26375, + 16376 => 26376, + 16377 => 26377, + 16378 => 26378, + 16379 => 26379, + 16380 => 26380, + 16381 => 26381, + 16382 => 26382, + 16383 => 26383, + 16384 => 26384, + 16385 => 26385, + 16386 => 26386, + 16387 => 26387, + 16388 => 26388, + 16389 => 26389, + 16390 => 26390, + 16391 => 26391, + 16392 => 26392, + 16393 => 26393, + 16394 => 26394, + 16395 => 26395, + 16396 => 26396, + 16397 => 26397, + 16398 => 26398, + 16399 => 26399, + 16400 => 26400, + 16401 => 26401, + 16402 => 26402, + 16403 => 26403, + 16404 => 26404, + 16405 => 26405, + 16406 => 26406, + 16407 => 26407, + 16408 => 26408, + 16409 => 26409, + 16410 => 26410, + 16411 => 26411, + 16412 => 26412, + 16413 => 26413, + 16414 => 26414, + 16415 => 26415, + 16416 => 26416, + 16417 => 26417, + 16418 => 26418, + 16419 => 26419, + 16420 => 26420, + 16421 => 26421, + 16422 => 26422, + 16423 => 26423, + 16424 => 26424, + 16425 => 26425, + 16426 => 26426, + 16427 => 26427, + 16428 => 26428, + 16429 => 26429, + 16430 => 26430, + 16431 => 26431, + 16432 => 26432, + 16433 => 26433, + 16434 => 26434, + 16435 => 26435, + 16436 => 26436, + 16437 => 26437, + 16438 => 26438, + 16439 => 26439, + 16440 => 26440, + 16441 => 26441, + 16442 => 26442, + 16443 => 26443, + 16444 => 26444, + 16445 => 26445, + 16446 => 26446, + 16447 => 26447, + 16448 => 26448, + 16449 => 26449, + 16450 => 26450, + 16451 => 26451, + 16452 => 26452, + 16453 => 26453, + 16454 => 26454, + 16455 => 26455, + 16456 => 26456, + 16457 => 26457, + 16458 => 26458, + 16459 => 26459, + 16460 => 26460, + 16461 => 26461, + 16462 => 26462, + 16463 => 26463, + 16464 => 26464, + 16465 => 26465, + 16466 => 26466, + 16467 => 26467, + 16468 => 26468, + 16469 => 26469, + 16470 => 26470, + 16471 => 26471, + 16472 => 26472, + 16473 => 26473, + 16474 => 26474, + 16475 => 26475, + 16476 => 26476, + 16477 => 26477, + 16478 => 26478, + 16479 => 26479, + 16480 => 26480, + 16481 => 26481, + 16482 => 26482, + 16483 => 26483, + 16484 => 26484, + 16485 => 26485, + 16486 => 26486, + 16487 => 26487, + 16488 => 26488, + 16489 => 26489, + 16490 => 26490, + 16491 => 26491, + 16492 => 26492, + 16493 => 26493, + 16494 => 26494, + 16495 => 26495, + 16496 => 26496, + 16497 => 26497, + 16498 => 26498, + 16499 => 26499, + 16500 => 26500, +]; + +$firstArrayValue = TEST_ARRAY_1[rand(1, 6500)]; +$secondArrayValue = TEST_ARRAY_2[$firstArrayValue] ?? null; diff --git a/tests/PHPStan/Analyser/data/bug-8503.php b/tests/PHPStan/Analyser/data/bug-8503.php new file mode 100644 index 00000000000..a118d03d019 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-8503.php @@ -0,0 +1,46 @@ +prepare('SELECT x FROM z'); + $rows = $qry->fetchAll() ?: []; + + foreach($rows as $row) { + $matrix[$row['x']] = []; + + foreach($rows as $row2) { + $matrix[$row['x']][$row2['x']] = []; + + foreach($rows as $row3) { + $matrix[$row['x']][$row2['x']][$row3['x']] = []; + + foreach($rows as $row4) { + $matrix[$row['x']][$row2['x']][$row3['x']][$row4['x']] = []; + + foreach($rows as $row5) { + $matrix[$row['x']][$row2['x']][$row3['x']][$row4['x']][$row5['x']] = []; + + foreach($rows as $row6) { + $matrix[$row['x']][$row2['x']][$row3['x']][$row4['x']][$row5['x']][$row6['x']] = []; + + foreach($rows as $row7) { + $matrix[$row['x']][$row2['x']][$row3['x']][$row4['x']][$row5['x']][$row6['x']][$row7['x']] = []; + + foreach($rows as $row8) { + $matrix[$row['x']][$row2['x']][$row3['x']][$row4['x']][$row5['x']][$row6['x']][$row7['x']][$row8['x']] = []; + } + } + } + } + } + } + } + } + } +} diff --git a/tests/PHPStan/Analyser/data/bug-9690.php b/tests/PHPStan/Analyser/data/bug-9690.php new file mode 100644 index 00000000000..547285c2cb4 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-9690.php @@ -0,0 +1,174 @@ + $iterable + */ + public function doFoo(string $str, iterable $iterable) + { + $castedInteger = (int) foo(); + $castedBoolean = (bool) foo(); + $castedFloat = (float) foo(); + $castedString = (string) foo(); + $castedArray = (array) foo(); + $castedObject = (object) foo(); + $foo = new self(); + $castedFoo = (object) $foo; + + /** @var self|array $arrayOrObject */ + $arrayOrObject = foo(); + $castedArrayOrObject = (object) $arrayOrObject; + + /** @var bool $bool */ + $bool = doFoo(); + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/catch-specified-variable.php b/tests/PHPStan/Analyser/data/catch-specified-variable.php new file mode 100644 index 00000000000..dde9dab7d26 --- /dev/null +++ b/tests/PHPStan/Analyser/data/catch-specified-variable.php @@ -0,0 +1,22 @@ +doBar(function ($foo, $bar) { + die; + }); + $this->doBaz(function ($foo, $bar) { + die; + }); + } + + /** + * @param \Closure(\DateTime|\stdClass): void $closure + */ + private function doBar(\Closure $closure) + { + + } + + /** + * @param callable(\DateTime|\stdClass): void $closure + */ + private function doBaz(callable $closure) + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/closure-passed-by-reference-in-call.php b/tests/PHPStan/Analyser/data/closure-passed-by-reference-in-call.php new file mode 100644 index 00000000000..b261218955c --- /dev/null +++ b/tests/PHPStan/Analyser/data/closure-passed-by-reference-in-call.php @@ -0,0 +1,20 @@ +doFoo(function () use (&$five) { + die; + }); + } + +} diff --git a/tests/PHPStan/Analyser/data/closure-passed-by-reference-return.php b/tests/PHPStan/Analyser/data/closure-passed-by-reference-return.php new file mode 100644 index 00000000000..eb631207d91 --- /dev/null +++ b/tests/PHPStan/Analyser/data/closure-passed-by-reference-return.php @@ -0,0 +1,20 @@ + 'foo']; + $arrayWithMaybeFoo = []; + if (rand(0, 1)) { + $arrayWithMaybeFoo['foo'] = 'foo'; + } + + $arrayAfterAssignment = []; + $arrayAfterAssignment['foo'] ??= 'foo'; + + $arrayWithFooAfterAssignment = ['foo' => 'foo']; + $arrayWithFooAfterAssignment['foo'] ??= 'bar'; + + $nonexistentVariableAfterAssignment ??= 'foo'; + + if (rand(0, 1)) { + $maybeNonexistentVariableAfterAssignment = 'foo'; + } + + $maybeNonexistentVariableAfterAssignment ??= 'bar'; + + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/combine-types.php b/tests/PHPStan/Analyser/data/combine-types.php new file mode 100644 index 00000000000..5d3ee2ecf1c --- /dev/null +++ b/tests/PHPStan/Analyser/data/combine-types.php @@ -0,0 +1,22 @@ + $foo = 1, + $isFoo || $isBar => $foo = 2, + default => $foo = null, + }; + } +} diff --git a/tests/PHPStan/Analyser/data/constant-types-duplicate-condition.php b/tests/PHPStan/Analyser/data/constant-types-duplicate-condition.php new file mode 100644 index 00000000000..f0953e4890a --- /dev/null +++ b/tests/PHPStan/Analyser/data/constant-types-duplicate-condition.php @@ -0,0 +1,32 @@ + 1, + 'b' => 5, + 'c' => 1, + 'd' => 5, + ]; + $literalArray['a']++; + $literalArray['b']--; + ++$literalArray['c']; + --$literalArray['d']; + + $nullIncremented = null; + $nullDecremented = null; + $nullIncremented++; + $nullDecremented--; + + $incrementInIf = 1; + $anotherIncrementInIf = 1; + $valueOverwrittenInIf = 1; + $anotherValueOverwrittenInIf = 10; + $appendingToArrayInBranches = []; + + $this->anotherIntProperty = 1; + self::$anotherStaticIntProperty = 1; + if (doFoo()) { + $incrementInIf++; + $anotherIncrementInIf++; + $valueOverwrittenInIf = 2; + $anotherValueOverwrittenInIf /= 2; + $appendingToArrayInBranches[] = 1; + $appendingToArrayInBranches[] = 2; + $this->anotherIntProperty++; + self::$anotherStaticIntProperty++; + } elseif (doBar()) { + $incrementInIf++; + $incrementInIf++; + $anotherIncrementInIf++; + $anotherIncrementInIf++; + } else { + $anotherIncrementInIf++; + } + + $incrementInForLoop = 1; + $valueOverwrittenInForLoop = 1; + $arrayOverwrittenInForLoop = [ + 'a' => 1, + 'b' => 'foo', + ]; + + $this->intProperty = 1; + self::$staticIntProperty = 1; + for ($i = 0; $i < 10; $i++) { + $incrementInForLoop++; + $valueOverwrittenInForLoop = 2; + $arrayOverwrittenInForLoop['a']++; + $arrayOverwrittenInForLoop['b'] = 'bar'; + $this->intProperty++; + self::$staticIntProperty++; + } + + $intProperty = $this->intProperty; + $staticIntProperty = self::$staticIntProperty; + $anotherIntProperty = $this->anotherIntProperty; + $anotherStaticIntProperty = self::$anotherStaticIntProperty; + + $variableIncrementedInClosurePassedByReference = 0; + $anotherVariableIncrementedInClosure = 0; + $yetAnotherVariableInClosurePassedByReference = 0; + function () use (&$variableIncrementedInClosurePassedByReference, $anotherVariableIncrementedInClosure, &$yetAnotherVariableInClosurePassedByReference) { + $variableIncrementedInClosurePassedByReference++; + $anotherVariableIncrementedInClosure++; + $yetAnotherVariableInClosurePassedByReference = 1; + }; + + $variableIncrementedInFinally = 0; + try { + doFoo(); + } finally { + $variableIncrementedInFinally++; + } + + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/constants.php b/tests/PHPStan/Analyser/data/constants.php new file mode 100644 index 00000000000..1c5074b2347 --- /dev/null +++ b/tests/PHPStan/Analyser/data/constants.php @@ -0,0 +1,11 @@ +property = []; + + $integers = []; + $i = 0; + $iterableArray = []; + if (rand(0, 1) === 0) { + $iterableArray = [1, 2, 3]; + } + $falseOrObject = false; + foreach ($iterableArray as $key => $val) { + 'begin'; + $foo = new Foo(); + 'afterAssign'; + + if ($nullableVal === null) { + 'nullableValIf'; + $nullableVal = 1; + } else { + $nullableVal *= 10; + 'nullableValElse'; + } + + if ($falseOrObject === false) { + $falseOrObject = new Foo(); + } + + $foo && $i++; + + $nullableInt = $val; + if (rand(0, 1) === 1) { + $nullableInt = null; + } + + if (something()) { + $foo = new Bar(); + break; + } + if (something()) { + $foo = new Baz(); + return; + } + if (something()) { + $foo = new Lorem(); + continue; + } + + if ($nullableInt === null) { + continue; + } + + if (isset($this->property[$s])) { + continue; + } + + $this->property[$s] = $val; + + $integers[] = $nullableInt; + + 'end'; + } + + $emptyForeachKey = null; + $emptyForeachVal = null; + foreach ($iterableArray as $emptyForeachKey => $emptyForeachVal) { + + } + + 'afterLoop'; + } + +} diff --git a/tests/PHPStan/Analyser/data/foreach/array-object-type.php b/tests/PHPStan/Analyser/data/foreach/array-object-type.php new file mode 100644 index 00000000000..b943fd20a61 --- /dev/null +++ b/tests/PHPStan/Analyser/data/foreach/array-object-type.php @@ -0,0 +1,23 @@ + $list + */ + public function doFoo(iterable $list) + { + foreach ($list as $value) { + die; + } + } + +} diff --git a/tests/PHPStan/Analyser/data/foreach/foreach-iterable-with-specified-key-type.php b/tests/PHPStan/Analyser/data/foreach/foreach-iterable-with-specified-key-type.php new file mode 100644 index 00000000000..d0c68c32f69 --- /dev/null +++ b/tests/PHPStan/Analyser/data/foreach/foreach-iterable-with-specified-key-type.php @@ -0,0 +1,18 @@ + $list + */ + public function doFoo(iterable $list) + { + foreach ($list as $key => $value) { + die; + } + } + +} diff --git a/tests/PHPStan/Analyser/data/foreach/foreach-with-complex-value-type.php b/tests/PHPStan/Analyser/data/foreach/foreach-with-complex-value-type.php new file mode 100644 index 00000000000..75a863d8008 --- /dev/null +++ b/tests/PHPStan/Analyser/data/foreach/foreach-with-complex-value-type.php @@ -0,0 +1,18 @@ + $list + */ + public function doFoo(array $list) + { + foreach ($list as $key => $value) { + die; + } + } + +} diff --git a/tests/PHPStan/Analyser/data/foreach/integer-type.php b/tests/PHPStan/Analyser/data/foreach/integer-type.php new file mode 100644 index 00000000000..610c43b0bed --- /dev/null +++ b/tests/PHPStan/Analyser/data/foreach/integer-type.php @@ -0,0 +1,10 @@ + $valueFromIterator) { + 'insideFirstForeach'; + } + + foreach ($iteratorAggregate as $keyFromAggregate => $valueFromAggregate) { + 'insideSecondForeach'; + } + + foreach ($iteratorAggregateRecursive as $keyFromRecursiveAggregate => $valueFromRecursiveAggregate) { + 'insideThirdForeach'; + } +} diff --git a/tests/PHPStan/Analyser/data/foreach/reusing-specified-variable.php b/tests/PHPStan/Analyser/data/foreach/reusing-specified-variable.php new file mode 100644 index 00000000000..f12683e21cd --- /dev/null +++ b/tests/PHPStan/Analyser/data/foreach/reusing-specified-variable.php @@ -0,0 +1,13 @@ + $value) { + die; +} diff --git a/tests/PHPStan/Analyser/data/foreach/type-in-comment-no-variable-2.php b/tests/PHPStan/Analyser/data/foreach/type-in-comment-no-variable-2.php new file mode 100644 index 00000000000..88c7e831c5d --- /dev/null +++ b/tests/PHPStan/Analyser/data/foreach/type-in-comment-no-variable-2.php @@ -0,0 +1,11 @@ + $value) { + die; +} diff --git a/tests/PHPStan/Analyser/data/foreach/type-in-comment-no-variable.php b/tests/PHPStan/Analyser/data/foreach/type-in-comment-no-variable.php new file mode 100644 index 00000000000..c64cb8e681b --- /dev/null +++ b/tests/PHPStan/Analyser/data/foreach/type-in-comment-no-variable.php @@ -0,0 +1,11 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } +} diff --git a/tests/PHPStan/Analyser/data/functionPhpDocs-phpstanPrefix.php b/tests/PHPStan/Analyser/data/functionPhpDocs-phpstanPrefix.php new file mode 100644 index 00000000000..56dc11ceeee --- /dev/null +++ b/tests/PHPStan/Analyser/data/functionPhpDocs-phpstanPrefix.php @@ -0,0 +1,79 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } +} diff --git a/tests/PHPStan/Analyser/data/functionPhpDocs-psalmPrefix.php b/tests/PHPStan/Analyser/data/functionPhpDocs-psalmPrefix.php new file mode 100644 index 00000000000..60a0f870760 --- /dev/null +++ b/tests/PHPStan/Analyser/data/functionPhpDocs-psalmPrefix.php @@ -0,0 +1,79 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } +} diff --git a/tests/PHPStan/Analyser/data/functionPhpDocs.php b/tests/PHPStan/Analyser/data/functionPhpDocs.php new file mode 100644 index 00000000000..5b3c5feaf67 --- /dev/null +++ b/tests/PHPStan/Analyser/data/functionPhpDocs.php @@ -0,0 +1,85 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } +} + +function doBar(): Bar +{ + +} diff --git a/tests/PHPStan/Analyser/data/functions.php b/tests/PHPStan/Analyser/data/functions.php new file mode 100644 index 00000000000..01b6d33f3d7 --- /dev/null +++ b/tests/PHPStan/Analyser/data/functions.php @@ -0,0 +1,102 @@ +fstat(); + +$base64DecodeWithoutStrict = base64_decode(''); +$base64DecodeWithStrictDisabled = base64_decode('', false); +$base64DecodeWithStrictEnabled = base64_decode('', true); +$base64DecodeDefault = base64_decode('', null); +$base64DecodeBenevolent = base64_decode('', $undefined); + + +//str_word_count +$strWordCountWithoutParameters = str_word_count(); +$strWordCountWithTooManyParams = str_word_count('string', 0, 'string', 'extra'); +$strWordCountStr = str_word_count('string'); +$strWordCountStrType0 = str_word_count('string', 0); +$strWordCountStrType1 = str_word_count('string', 1); +$strWordCountStrType1Extra = str_word_count('string', 1, 'string'); +$strWordCountStrType2 = str_word_count('string', 2); +$strWordCountStrType2Extra = str_word_count('string', 2, 'string'); + +/** @var int $integer */ +$integer = doFoo(); +$strWordCountStrTypeIndeterminant = str_word_count('string', $integer); + +die; diff --git a/tests/PHPStan/Analyser/data/generalize-scope-recursive.php b/tests/PHPStan/Analyser/data/generalize-scope-recursive.php new file mode 100644 index 00000000000..bc85f45ce25 --- /dev/null +++ b/tests/PHPStan/Analyser/data/generalize-scope-recursive.php @@ -0,0 +1,28 @@ +doBar()); + } + } + + die; + } + + /** + * @return string[][]|int[][] + */ + private function doBar(): array + { + return []; + } + +} diff --git a/tests/PHPStan/Analyser/data/generalize-scope.php b/tests/PHPStan/Analyser/data/generalize-scope.php new file mode 100644 index 00000000000..cc273feae5c --- /dev/null +++ b/tests/PHPStan/Analyser/data/generalize-scope.php @@ -0,0 +1,42 @@ +vals as $val) { + $key = $val['key']; + $model = preg_replace('~[^\\-A-Z\\\\_]+.*$~i', '', $val['key']); + + if (!isset($statistics[$model][$key])) { + $statistics[$model][$key] = [ + 'saveCount' => 0, + 'removeCount' => 0, + 'loadCount' => 0, + 'hitCount' => 0, + ]; + } + + if (rand(0, 1)) { + $statistics[$model][$key]['saveCount']++; + } elseif (rand(0, 1)) { + $statistics[$model][$key]['removeCount']++; + } else { + $statistics[$model][$key]['loadCount']++; + if ($val['hit']) { + $statistics[$model][$key]['hitCount']++; + } + } + } + + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/get-parent-class.php b/tests/PHPStan/Analyser/data/get-parent-class.php new file mode 100644 index 00000000000..8eab620666b --- /dev/null +++ b/tests/PHPStan/Analyser/data/get-parent-class.php @@ -0,0 +1,39 @@ +getReader()->consumeFrame($that->getReadBuffer())) === null) { + $integerOrNullFromWhile = 1; + $nonexistentVariableOutsideWhile = 1; + } + + /** @var array $someArray */ + $someArray = doFoo(); + $integerOrNullFromForeach = null; + foreach ($someArray as $someValue) { + $integerOrNullFromForeach = 1; + $nonexistentVariableOutsideForeach = null; + } + + $nullableIntegers = [1, 2, 3]; + $nullableIntegers[] = null; + + $union = [1, 2, 3]; + $union[] = 'foo'; + + $$lorem = 'ipsum'; + + $trueOrFalse = true; + $falseOrTrue = false; + $true = true; + $false = false; + if (doFoo()) { + $trueOrFalse = false; + $falseOrTrue = true; + $true = true; + $false = false; + } + + /** @var string|null $notNullableString */ + $notNullableString = 'foo'; + if ($notNullableString === null) { + return; + } + + /** @var string|null $anotherNotNullableString */ + $anotherNotNullableString = 'foo'; + if ($anotherNotNullableString !== null) { + $alsoNotNullableString = $anotherNotNullableString; + } else { + return; + } + + /** @var Foo|null $notNullableObject */ + $notNullableObject = doFoo(); + if ($notNullableObject === null) { + $notNullableObject = new Foo(); + } + + /** @var string|null $nullableString */ + $nullableString = 'foo'; + if ($nullableString !== null) { + $whatever = $nullableString; + } + + /** @var int|null $integerOrString */ + $integerOrString = 1; + if ($integerOrString === null) { + $integerOrString = 'str'; + } + + /** @var int|null $stillNullableInteger */ + $stillNullableInteger = 1; + if (is_int($stillNullableInteger)) { + $stillNullableInteger = 2; + } + + /** @var int|null $nullableIntegerAfterNeverCondition */ + $nullableIntegerAfterNeverCondition = 1; + if ($nullableIntegerAfterNeverCondition === false) { + $nullableIntegerAfterNeverCondition = 1; + } + + $arrayOfIntegers = [1, 2, 3]; + + $arrayAccessObject = new \ObjectWithArrayAccess\Foo(); + $arrayAccessObject[] = 1; + $arrayAccessObject[] = 2; + + $width = 1; + $scale = 2.0; + $width *= $scale; + + /** @var mixed $mixed */ + $mixed = doFoo(); + if (is_bool($mixed)) { + $mixed = 1; + } + + if (rand(0, 1)) { + /** @var mixed $issetBar */ + $issetBar = doFoo(); + /** @var mixed $issetBaz */ + $issetBaz = doFoo(); + } + + try { + $inTryTwo = 1; + maybeThrows(); + } catch (\Exception $e) { + $exception = $e; + if (something()) { + bar(); + } elseif (foo() || $foo = exists() || preg_match('#.*#', $subject, $matches2)) { + if (isset($issetFoo, $issetBar) && isset($issetBaz)) { + $anotherF = 1; + for ($i = 0; $i < 5; $i++, $f = $i, $anotherF = $i) { + $arr = [ + [1, 2], + ]; + foreach ($arr as list($listOne, $listTwo)) { + if (is_array($arrayOfIntegers)) { + (bool)preg_match('~.*~', $attributes, $ternaryMatches) ? die : null; + } + } + } + } + } + } +}; diff --git a/tests/PHPStan/Analyser/data/infer-private-property-type-from-constructor.php b/tests/PHPStan/Analyser/data/infer-private-property-type-from-constructor.php new file mode 100644 index 00000000000..ab834623389 --- /dev/null +++ b/tests/PHPStan/Analyser/data/infer-private-property-type-from-constructor.php @@ -0,0 +1,53 @@ +intProp = $intProp; + $this->stringProp = $stringProp; + $this->unionProp = $unionProp; + $this->stdClassProp = new \stdClass(); + $this->unrelatedDocComment = $unrelatedDocComment; + $this->explicitMixed = $explicitMixed; + $this->bool = false; + $this->array = []; + } + + public function doFoo() + { + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/inheritdoc-from-interface.php b/tests/PHPStan/Analyser/data/inheritdoc-from-interface.php new file mode 100644 index 00000000000..238c7f14b30 --- /dev/null +++ b/tests/PHPStan/Analyser/data/inheritdoc-from-interface.php @@ -0,0 +1,31 @@ + 1, + 'b' => 2, + ]; + } elseif (rand(0, 10) === 0) { + $array = [ + 'a' => 2, + ]; + } elseif (rand(0, 10) === 0) { + $array = [ + 'a' => 3, + 'b' => 3, + 'c' => 4, + ]; + } else { + $array = [ + 'a' => 3, + 'b' => null, + ]; + } + + $arrayCopy = $array; + $anotherArrayCopy = $array; + $yetAnotherArrayCopy = $array; + + if (!isset($array['b'])) { + return; + } + + if (!array_key_exists('b', $arrayCopy)) { + return; + } + if (array_key_exists('b', $anotherArrayCopy)) { + return; + } + if (array_key_exists($string, $yetAnotherArrayCopy)) { + return; + } + + if (!isset($integers['a'])) { + return; + } + + $itemsA = [ + 'foo', + 'derp', + 'herp' + ]; + + $itemsB = [ + 'foo', + 'bar', + 'baz', + ]; + + $lookup = array_fill_keys($itemsB, true); + + $nullableArray = ['a' => null, 'b' => null, 'c' => null]; + if (rand(0, 1) === 1) { + $nullableArray['a'] = 'foo'; + $nullableArray['b'] = 'bar'; + $nullableArray['c'] = 'baz'; + } + + if (!isset($nullableArray['b'])) { + return; + } + + if (!array_key_exists('c', $nullableArray)) { + return; + } + + if (!isset($mixedIsset['a'])) { + return; + } + + if (!array_key_exists('a', $mixedArrayKeyExists)) { + return; + } + + foreach ($itemsA as $a) { + die; + } + } + +} diff --git a/tests/PHPStan/Analyser/data/iterable.php b/tests/PHPStan/Analyser/data/iterable.php new file mode 100644 index 00000000000..592e52ab036 --- /dev/null +++ b/tests/PHPStan/Analyser/data/iterable.php @@ -0,0 +1,140 @@ + $generatorOfFoos + * @param \ArrayObject $arrayObject + */ + public function doFoo( + iterable $iterableWithoutTypehint, + iterable $iterableWithIterableTypehint, + iterable $iterableWithConcreteTypehint, + array $arrayWithIterableTypehint, + Collection $unionIterableType, + array $mixedUnionIterableType, + iterable $unionIterableIterableType, + $iterableSpecifiedLater, + iterable $integers, + iterable $mixeds, + $generatorOfFoos, + $arrayObject + ) + { + if (!is_iterable($iterableSpecifiedLater)) { + return; + } + + foreach ($iterableWithIterableTypehint as $mixed) { + foreach ($iterableWithConcreteTypehint as $bar) { + foreach ($this->doBaz() as $baz) { + foreach ($unionIterableType as $unionBar) { + foreach ($mixedUnionIterableType as $mixedBar) { + foreach ($unionIterableIterableType as $iterableUnionBar) { + foreach ($this->doUnionIterableWithPhpDoc() as $unionBarFromMethod) { + foreach ($generatorOfFoos as $fooFromGenerator) { + foreach ($arrayObject as $arrayObjectKey => $arrayObjectValue) { + die; + } + } + } + } + } + } + } + } + } + } + + /** + * @return iterable + */ + public function doBar(): iterable + { + + } + + /** + * @return Baz[] + */ + public function doBaz(): iterable + { + + } + + /** + * @return Bar[]|\Traversable + */ + public function doUnionIterableWithPhpDoc(): \Traversable + { + + } + + /** + * @return iterable|mixed[] + */ + public function returnIterableMixed(): iterable + { + + } + + /** + * @return iterable|string[] + */ + public function returnIterableString(): iterable + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/literal-arrays-keys.php b/tests/PHPStan/Analyser/data/literal-arrays-keys.php new file mode 100644 index 00000000000..a6fd722e542 --- /dev/null +++ b/tests/PHPStan/Analyser/data/literal-arrays-keys.php @@ -0,0 +1,129 @@ + $value) { + 'NoKeysArray'; + } + + foreach ([ + 0 => 'one', + 'two', + 'three', + ] as $key => $value) { + 'IntegersAndNoKeysArray'; + } + + + foreach ([ + 'foo' => 'one', + 'two', + 'three', + ] as $key => $value) { + 'StringsAndNoKeysArray'; + } + + foreach ([ + '1' => 'one', + 'two', + 'three', + ] as $key => $value) { + 'IntegersAsStringsAndNoKeysArray'; + } + + foreach ([ + '1' => 'one', + '2' => 'two', + \STRING_ONE => 'three', + ] as $key => $value) { + 'IntegersAsStringsArray'; + } + + foreach ([ + 1 => 'one', + 2 => 'two', + \INT_ONE => 'three', + ] as $key => $value) { + 'IntegersArray'; + } + + foreach ([ + 1 => 'one', + 2.5 => 'two', + 3.2 => 'three', + ] as $key => $value) { + 'IntegersWithFloatsArray'; + } + + foreach ([ + 'foo' => 'one', + 'bar' => 'two', + \STRING_FOO => 'three', + ] as $key => $value) { + 'StringsArray'; + } + + foreach ([ + null => 'one', + 'bar' => 'two', + 'baz' => 'three', + ] as $key => $value) { + 'StringsWithNullArray'; + } + + foreach ([ + 1 => 'one', + 2 => 'two', + $foo->getString() => 'three', + ] as $key => $value) { + 'IntegersWithStringFromMethodArray'; + } + + foreach ([ + 1 => 'one', + 2 => 'two', + 'foo' => 'three', + ] as $key => $value) { + 'IntegersAndStringsArray'; + } + + foreach ([ + true => 'one', + false => 'two', + ] as $key => $value) { + 'BooleansArray'; + } + + foreach ([ + 1 => 'one', + 2 => 'two', + 'foo' => 'three', + ] as $key => $value) { + 'IntegersAndStringsArray'; + } + + foreach ([ + UNKNOWN_CONSTANT => 'one', + 2 => 'two', + 'foo' => 'three', + ] as $key => $value) { + 'UnknownConstantArray'; + } +}; diff --git a/tests/PHPStan/Analyser/data/literal-arrays.php b/tests/PHPStan/Analyser/data/literal-arrays.php new file mode 100644 index 00000000000..cdebb6479e4 --- /dev/null +++ b/tests/PHPStan/Analyser/data/literal-arrays.php @@ -0,0 +1,20 @@ + [ + 'foo' => [ + 'foo' => 'bar', + ], + ], + 'bar' => [], + 'baz' => [ + 'lorem' => [], + ], +]; + +die; diff --git a/tests/PHPStan/Analyser/data/method-phpDocs-inheritdoc-without-curly-braces.php b/tests/PHPStan/Analyser/data/method-phpDocs-inheritdoc-without-curly-braces.php new file mode 100644 index 00000000000..254d321d7fe --- /dev/null +++ b/tests/PHPStan/Analyser/data/method-phpDocs-inheritdoc-without-curly-braces.php @@ -0,0 +1,72 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } + } + + /** + * @inheritdoc + */ + private function privateMethodWithPhpDoc() + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/method-phpDocs-inheritdoc.php b/tests/PHPStan/Analyser/data/method-phpDocs-inheritdoc.php new file mode 100644 index 00000000000..5c4ddbef6df --- /dev/null +++ b/tests/PHPStan/Analyser/data/method-phpDocs-inheritdoc.php @@ -0,0 +1,72 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } + } + + /** + * {@inheritdoc} + */ + private function privateMethodWithPhpDoc() + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/methodPhpDocs-implicitInheritance.php b/tests/PHPStan/Analyser/data/methodPhpDocs-implicitInheritance.php new file mode 100644 index 00000000000..cedd25b75e5 --- /dev/null +++ b/tests/PHPStan/Analyser/data/methodPhpDocs-implicitInheritance.php @@ -0,0 +1,71 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } + } + + public function returnsStringArray(): array + { + + } + + private function privateMethodWithPhpDoc() + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/methodPhpDocs-phanPrefix.php b/tests/PHPStan/Analyser/data/methodPhpDocs-phanPrefix.php new file mode 100644 index 00000000000..5a44bfa7841 --- /dev/null +++ b/tests/PHPStan/Analyser/data/methodPhpDocs-phanPrefix.php @@ -0,0 +1,174 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } + } + + /** + * @phan-return self[] + */ + public function doBar(): array + { + + } + + public function returnParent(): parent + { + + } + + /** + * @phan-return parent + */ + public function returnPhpDocParent() + { + + } + + /** + * @phan-return NULL[] + */ + public function returnNulls(): array + { + + } + + public function returnObject(): object + { + + } + + public function phpDocVoidMethod(): self + { + + } + + public function phpDocVoidMethodFromInterface(): self + { + + } + + public function phpDocVoidParentMethod(): self + { + + } + + public function phpDocWithoutCurlyBracesVoidParentMethod(): self + { + + } + + /** + * @phan-return string[] + */ + public function returnsStringArray(): array + { + + } + + private function privateMethodWithPhpDoc() + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/methodPhpDocs-phpstanPrefix.php b/tests/PHPStan/Analyser/data/methodPhpDocs-phpstanPrefix.php new file mode 100644 index 00000000000..32b65d11676 --- /dev/null +++ b/tests/PHPStan/Analyser/data/methodPhpDocs-phpstanPrefix.php @@ -0,0 +1,174 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } + } + + /** + * @phpstan-return self[] + */ + public function doBar(): array + { + + } + + public function returnParent(): parent + { + + } + + /** + * @phpstan-return parent + */ + public function returnPhpDocParent() + { + + } + + /** + * @phpstan-return NULL[] + */ + public function returnNulls(): array + { + + } + + public function returnObject(): object + { + + } + + public function phpDocVoidMethod(): self + { + + } + + public function phpDocVoidMethodFromInterface(): self + { + + } + + public function phpDocVoidParentMethod(): self + { + + } + + public function phpDocWithoutCurlyBracesVoidParentMethod(): self + { + + } + + /** + * @phpstan-return string[] + */ + public function returnsStringArray(): array + { + + } + + private function privateMethodWithPhpDoc() + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/methodPhpDocs-psalmPrefix.php b/tests/PHPStan/Analyser/data/methodPhpDocs-psalmPrefix.php new file mode 100644 index 00000000000..b168c05e4d3 --- /dev/null +++ b/tests/PHPStan/Analyser/data/methodPhpDocs-psalmPrefix.php @@ -0,0 +1,174 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } + } + + /** + * @psalm-return self[] + */ + public function doBar(): array + { + + } + + public function returnParent(): parent + { + + } + + /** + * @psalm-return parent + */ + public function returnPhpDocParent() + { + + } + + /** + * @psalm-return NULL[] + */ + public function returnNulls(): array + { + + } + + public function returnObject(): object + { + + } + + public function phpDocVoidMethod(): self + { + + } + + public function phpDocVoidMethodFromInterface(): self + { + + } + + public function phpDocVoidParentMethod(): self + { + + } + + public function phpDocWithoutCurlyBracesVoidParentMethod(): self + { + + } + + /** + * @psalm-return string[] + */ + public function returnsStringArray(): array + { + + } + + private function privateMethodWithPhpDoc() + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/methodPhpDocs-recursiveTrait.php b/tests/PHPStan/Analyser/data/methodPhpDocs-recursiveTrait.php new file mode 100644 index 00000000000..03f9a8dd5c0 --- /dev/null +++ b/tests/PHPStan/Analyser/data/methodPhpDocs-recursiveTrait.php @@ -0,0 +1,95 @@ +doFluentUnionIterable() as $fluentUnionIterableBaz) { + die; + } + } + + /** + * @return self[] + */ + public function doBar(): array + { + + } + + public function returnParent(): parent + { + + } + + /** + * @return parent + */ + public function returnPhpDocParent() + { + + } + + /** + * @return NULL[] + */ + public function returnNulls(): array + { + + } + + public function returnObject(): object + { + + } + + public function phpDocVoidMethod(): self + { + + } + + public function phpDocVoidMethodFromInterface(): self + { + + } + + public function phpDocVoidParentMethod(): self + { + + } + + public function phpDocWithoutCurlyBracesVoidParentMethod(): self + { + + } + + /** + * @return string[] + */ + public function returnsStringArray(): array + { + + } + + private function privateMethodWithPhpDoc() + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/misleading-types-without-namespace.php b/tests/PHPStan/Analyser/data/misleading-types-without-namespace.php new file mode 100644 index 00000000000..25afdac4327 --- /dev/null +++ b/tests/PHPStan/Analyser/data/misleading-types-without-namespace.php @@ -0,0 +1,21 @@ +methodFoo(); + +die; diff --git a/tests/PHPStan/Analyser/data/passed-by-reference.php b/tests/PHPStan/Analyser/data/passed-by-reference.php new file mode 100644 index 00000000000..a644c5d6dde --- /dev/null +++ b/tests/PHPStan/Analyser/data/passed-by-reference.php @@ -0,0 +1,26 @@ +doBar($s); + + die; + } + + public function doBar(string &$s) + { + + } + +} diff --git a/tests/PHPStan/Analyser/data/php73_functions.php b/tests/PHPStan/Analyser/data/php73_functions.php new file mode 100644 index 00000000000..a2211f6f28b --- /dev/null +++ b/tests/PHPStan/Analyser/data/php73_functions.php @@ -0,0 +1,51 @@ + $arrayWithStringKeys + * @param array{a?: 0, b: 1, c: 2} $constantArrayOptionalKeys1 + * @param array{a: 0, b?: 1, c: 2} $constantArrayOptionalKeys2 + * @param array{a: 0, b: 1, c?: 2} $constantArrayOptionalKeys3 + */ + public function doFoo( + $mixed, + int $integer, + array $mixedArray, + array $nonEmptyArray, + array $arrayWithStringKeys, + array $constantArrayOptionalKeys1, + array $constantArrayOptionalKeys2, + array $constantArrayOptionalKeys3 + ) + { + if (count($nonEmptyArray) === 0) { + return; + } + + $emptyArray = []; + $literalArray = [1, 2, 3]; + $anotherLiteralArray = $literalArray; + if (rand(0, 1) === 0) { + $anotherLiteralArray[] = 4; + } + + /** @var bool $bool */ + $bool = doBar(); + + $hrtime1 = hrtime(); + $hrtime2 = hrtime(false); + $hrtime3 = hrtime(true); + $hrtime4 = hrtime($bool); + + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/process-called-method-infinite-loop.php b/tests/PHPStan/Analyser/data/process-called-method-infinite-loop.php new file mode 100644 index 00000000000..9b6cc0925d7 --- /dev/null +++ b/tests/PHPStan/Analyser/data/process-called-method-infinite-loop.php @@ -0,0 +1,41 @@ +value); + } + /** @param \Closure(T|null): T $callback */ + public function onResolve2(\Closure $callback) : void{ + $r = $callback($this->value); + assertType('TValue (class ProcessCalledMethodInfiniteLoop\\Promise, argument)', $r); + + $callback($this->value); + } +} +class HelloWorld +{ + /** + * @template TValue + * @param \Generator, TValue|null, void> $async + */ + public function next(\Generator $async) : void{ + $async->next(); + if(!$async->valid()) return; + $promise = $async->current(); + $promise->onResolve(function($value) use ($async) : void{ + $async->send($value); + $this->next($async); + }); + } +} diff --git a/tests/PHPStan/Analyser/data/properties.php b/tests/PHPStan/Analyser/data/properties.php new file mode 100644 index 00000000000..6c0fea15c4d --- /dev/null +++ b/tests/PHPStan/Analyser/data/properties.php @@ -0,0 +1,140 @@ +property = []; + 'emptyArray'; + $this->property['foo'] = 1; + 'afterAssignment'; + } + +} diff --git a/tests/PHPStan/Analyser/data/property-native-types.php b/tests/PHPStan/Analyser/data/property-native-types.php new file mode 100644 index 00000000000..87d990b96f3 --- /dev/null +++ b/tests/PHPStan/Analyser/data/property-native-types.php @@ -0,0 +1,20 @@ + 'a', 'b' => 'b']; + $string = 'str'; + + $arrayOrString = []; + if (doFoo()) { + $arrayOrString = 'foo'; + } + + /** @var callable[] $callbacks */ + $callbacks = []; + + $expectedString = str_replace('aaa', 'bbb', $string); + $expectedArray = str_replace('aaa', 'bbb', $array); + $expectedArrayOrString = str_replace('aaa', 'bbb', $arrayOrString); + $expectedBenevolentArrayOrString = str_replace('aaa', 'bbb', $mixed); + + $anotherExpectedString = preg_replace('aaa', 'bbb', $string); + $anotherExpectedArray = preg_replace('aaa', 'bbb', $array); + $anotherExpectedArrayOrString = preg_replace('aaa', 'bbb', $arrayOrString); + + $expectedString2 = preg_replace_callback('aaa', function () {}, $string); + $expectedArray2 = preg_replace_callback('aaa', function () {}, $array); + $expectedArrayOrString2 = preg_replace_callback('aaa', function () {}, $arrayOrString); + + $expectedString3 = str_ireplace('aaa', 'bbb', $string); + $expectedArray3 = str_ireplace('aaa', 'bbb', $array); + $expectedArrayOrString3 = str_ireplace('aaa', 'bbb', $arrayOrString); + $expectedBenevolentArrayOrString3 = str_ireplace('aaa', 'bbb', $mixed); + + /** @var Foo[] $arr */ + $arr = doFoo(); + + foreach ($arr as $intOrStringKey => $value) { + die; + } + +}; diff --git a/tests/PHPStan/Analyser/data/resolve-static.php b/tests/PHPStan/Analyser/data/resolve-static.php new file mode 100644 index 00000000000..7b5089b0000 --- /dev/null +++ b/tests/PHPStan/Analyser/data/resolve-static.php @@ -0,0 +1,49 @@ +bar) { + 'propertyNullForSure'; + } else { + 'propertyNotNullForSure'; + } + + if (null === $foo) { + 'yodaNullForSure'; + } + + if (null !== $foo) { + 'yodaNotNullForSure'; + } + + /** @var int|false $intOrFalse */ + $intOrFalse = doFoo(); + if ($intOrFalse === false) { + 'falseForSure'; + } + + if ($intOrFalse !== false) { + 'intForSure'; + } + + if (false === $intOrFalse) { + 'yodaFalseForSure'; + } + + if (false !== $intOrFalse) { + 'yodaIntForSure'; + } + + if (!is_bool($intOrFalse)) { + 'yetAnotherIntForSure'; + } + + /** @var int|true $intOrTrue */ + $intOrTrue = doFoo(); + if ($intOrTrue === true) { + 'trueForSure'; + } + + if ($intOrTrue !== true) { + 'anotherIntForSure'; + } + + if (true === $intOrTrue) { + 'yodaTrueForSure'; + } + + if (true !== $intOrTrue) { + 'yodaAnotherIntForSure'; + } + + if (!is_bool($intOrTrue)) { + 'yetYetAnotherIntForSure'; + } + + /** @var Foo|Bar|Baz $fooOrBarOrBaz */ + $fooOrBarOrBaz = doFoo(); + if ($fooOrBarOrBaz instanceof Foo) { + 'fooForSure'; + } else { + 'barOrBazForSure'; + } + + if ($fooOrBarOrBaz instanceof Foo) { + // already tested + } elseif ($fooOrBarOrBaz instanceof Bar) { + 'barForSure'; + } else { + 'bazForSure'; + } + + if (!$fooOrBarOrBaz instanceof Foo) { + 'anotherBarOrBazForSure'; + } else { + 'anotherFooForSure'; + } + + /** @var Foo|string|null $value */ + $value = doFoo(); + $result = $value instanceof Foo ? $value->getValue() : $value; + 'stringOrNullForSure'; + + /** @var Foo|string|null $fooOrStringOrNull */ + $fooOrStringOrNull = doFoo(); + if ($fooOrStringOrNull === null || $fooOrStringOrNull instanceof Foo) { + 'fooOrNull'; + return; + } else { + 'stringForSure'; + } + + 'anotherStringForSure'; + } + +} diff --git a/tests/PHPStan/Analyser/data/typehints-anonymous-function.php b/tests/PHPStan/Analyser/data/typehints-anonymous-function.php new file mode 100644 index 00000000000..b934f46dc3c --- /dev/null +++ b/tests/PHPStan/Analyser/data/typehints-anonymous-function.php @@ -0,0 +1,26 @@ +doFoo(); + $fooObject = new self(); + $anotherBarObject = $fooObject->doFoo(); + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/union-intersection.php b/tests/PHPStan/Analyser/data/union-intersection.php new file mode 100644 index 00000000000..03266cd2c80 --- /dev/null +++ b/tests/PHPStan/Analyser/data/union-intersection.php @@ -0,0 +1,117 @@ + $arrayWithTooManyArgs + * @param iterable $iterableWithTooManyArgs + * @param \Foo $genericFoo + */ +function test( + $arrayWithTooManyArgs, + $iterableWithTooManyArgs, + $genericFoo +) { + die; +} diff --git a/tests/PHPStan/Analyser/data/var-annotations.php b/tests/PHPStan/Analyser/data/var-annotations.php new file mode 100644 index 00000000000..ff6b047108b --- /dev/null +++ b/tests/PHPStan/Analyser/data/var-annotations.php @@ -0,0 +1,113 @@ +getFloat(); + + /** @var static $static */ + $static = getFoo(); + + die; + } + + public function doFooBar() + { + /** @var int */ + $integer = getFoo(); + + /** @var bool */ + $boolean = getFoo(); + + /** @var string */ + $string = getFoo(); + + /** @var float */ + $float = getFoo(); + + /** @var Lorem */ + $loremObject = getFoo(); + + /** @var \AnotherNamespace\Bar */ + $barObject = getFoo(); + + /** @var mixed */ + $mixed = getFoo(); + + /** @var array */ + $array = getFoo(); + + /** @var bool|null */ + $isNullable = getFoo(); + + /** @var callable */ + $callable = getFoo(); + + /** @var callable(int $x, string &...$y): void */ + $callableWithTypes = getFoo(); + + /** @var \Closure(int $x, string &...$y): void */ + $closureWithTypes = getFoo(); + + /** @var self */ + $self = getFoo(); + + /** @var float */ + $invalidInteger = 1.0; + + /** @var static */ + $static = getFoo(); + + die; + } + + public function getFloat(): float + { + return 1.0; + } + +} diff --git a/tests/PHPStan/Analyser/data/var-stmt-annotation.php b/tests/PHPStan/Analyser/data/var-stmt-annotation.php new file mode 100644 index 00000000000..32a318e0675 --- /dev/null +++ b/tests/PHPStan/Analyser/data/var-stmt-annotation.php @@ -0,0 +1,41 @@ +foo(); + + die; + } + + /** + * @param object $object + */ + public function doBaz($object) + { + /** @var self $object */ + $test = doFoo(); + + die; + } + +} diff --git a/tests/PHPStan/Analyser/data/void.php b/tests/PHPStan/Analyser/data/void.php new file mode 100644 index 00000000000..938ff0521dd --- /dev/null +++ b/tests/PHPStan/Analyser/data/void.php @@ -0,0 +1,29 @@ +', $inputLen); + + if ($inputLen > 0) { + assertType("':'", $input); + assertType('1', $inputLen); + assertType('0', $inputLen - 1); + } + } +} + +function narrowThroughVariableInBooleanAnd(): void +{ + $inputs = ['', ':']; + + foreach ($inputs as $input) { + $inputLen = \strlen($input); + $hasTrailingColon = $inputLen > 0 && $input[$inputLen - 1] === ':'; + } +} + +function narrowNonFalsy(): void +{ + /** @var string $str */ + $str = 'x'; + $len = \strlen($str); + + if ($len >= 2) { + assertType('non-falsy-string', $str); + } + + if ($len > 1) { + assertType('non-falsy-string', $str); + } + + if ($len >= 1) { + assertType('non-empty-string', $str); + } + + if ($len > 0) { + assertType('non-empty-string', $str); + } +} + +function narrowMbStrlen(): void +{ + /** @var string $str */ + $str = 'x'; + $len = \mb_strlen($str); + + if ($len > 0) { + assertType('non-empty-string', $str); + } + + if ($len >= 2) { + assertType('non-falsy-string', $str); + } +} + +function narrowNotEquals(): void +{ + /** @var string $str */ + $str = 'x'; + $len = \strlen($str); + + if ($len !== 0) { + assertType('non-empty-string', $str); + } + + if ($len === 0) { + assertType('string', $str); + } +} + +function noNarrowAfterReassignment(): void +{ + /** @var string $str */ + $str = 'x'; + $len = \strlen($str); + $len = 5; + + if ($len > 0) { + assertType('string', $str); + } +} diff --git a/tests/PHPStan/Analyser/nsrt/reflection-type.php b/tests/PHPStan/Analyser/nsrt/reflection-type.php new file mode 100644 index 00000000000..d390747fe6f --- /dev/null +++ b/tests/PHPStan/Analyser/nsrt/reflection-type.php @@ -0,0 +1,15 @@ +getType()); + assertType('ReflectionType|null', $reflectionFunctionAbstract->getReturnType()); + assertType('ReflectionType|null', $reflectionParameter->getType()); +} diff --git a/tests/PHPStan/Command/ErrorFormatter/GitlabFormatterTest.php b/tests/PHPStan/Command/ErrorFormatter/GitlabFormatterTest.php new file mode 100644 index 00000000000..8569f09fadb --- /dev/null +++ b/tests/PHPStan/Command/ErrorFormatter/GitlabFormatterTest.php @@ -0,0 +1,306 @@ +", + "fingerprint": "d7002959fc192c81d51fc41b0a3f240617a1aa35361867b5e924ae8d7fec39cb", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/foo.php", + "lines": { + "begin": 1 + } + } + }, + { + "description": "Bar\nBar2", + "fingerprint": "829f6c782152fdac840b39208c5b519d18e51bff2c601b6197812fffb8bcd9ed", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/foo.php", + "lines": { + "begin": 5 + } + } + } +]', + ]; + + yield [ + 'Multiple file errors, including error with line=null', + 1, + 5, + 0, + '[ + { + "description": "Bar\nBar2", + "fingerprint": "034b4afbfb347494c14e396ed8327692f58be4cd27e8aff5f19f4194934db7c9", + "severity": "major", + "location": { + "path": "with space/and unicode 😃/project/folder with unicode 😃/file name with \"spaces\" and unicode 😃.php", + "lines": { + "begin": 2 + } + } + }, + { + "description": "Foo", + "fingerprint": "e82b7e1f1d4255352b19ecefa9116a12f129c7edb4351cf2319285eccdb1565e", + "severity": "major", + "location": { + "path": "with space/and unicode 😃/project/folder with unicode 😃/file name with \"spaces\" and unicode 😃.php", + "lines": { + "begin": 4 + } + } + }, + { + "description": "Bar\nBar2", + "fingerprint": "52d22d9e64bd6c6257b7a0d170ed8c99482043aeedd68c52bac081a80da9800a", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/foo.php", + "lines": { + "begin": 0 + } + } + }, + { + "description": "Foo", + "fingerprint": "d7002959fc192c81d51fc41b0a3f240617a1aa35361867b5e924ae8d7fec39cb", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/foo.php", + "lines": { + "begin": 1 + } + } + }, + { + "description": "Bar\nBar2", + "fingerprint": "829f6c782152fdac840b39208c5b519d18e51bff2c601b6197812fffb8bcd9ed", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/foo.php", + "lines": { + "begin": 5 + } + } + } +]', + ]; + + yield [ + 'Multiple generic errors', + 1, + 0, + 2, + '[ + { + "description": "first generic error", + "fingerprint": "53ed216d77c9a9b21d9535322457ca7d7b037d6596d76484b3481f161adfd96f", + "severity": "major", + "location": { + "path": "", + "lines": { + "begin": 0 + } + } + }, + { + "description": "second generic", + "fingerprint": "adc18b2c27b0ecad40aed7975b165cbe357f0cbba58582af91c0a2e7fa5d77ab", + "severity": "major", + "location": { + "path": "", + "lines": { + "begin": 0 + } + } + } +]', + ]; + + yield [ + 'Multiple file, multiple generic errors', + 1, + 4, + 2, + '[ + { + "description": "Bar\nBar2", + "fingerprint": "034b4afbfb347494c14e396ed8327692f58be4cd27e8aff5f19f4194934db7c9", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/folder with unicode \ud83d\ude03/file name with \"spaces\" and unicode \ud83d\ude03.php", + "lines": { + "begin": 2 + } + } + }, + { + "description": "Foo", + "fingerprint": "e82b7e1f1d4255352b19ecefa9116a12f129c7edb4351cf2319285eccdb1565e", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/folder with unicode \ud83d\ude03/file name with \"spaces\" and unicode \ud83d\ude03.php", + "lines": { + "begin": 4 + } + } + }, + { + "description": "Foo", + "fingerprint": "d7002959fc192c81d51fc41b0a3f240617a1aa35361867b5e924ae8d7fec39cb", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/foo.php", + "lines": { + "begin": 1 + } + } + }, + { + "description": "Bar\nBar2", + "fingerprint": "829f6c782152fdac840b39208c5b519d18e51bff2c601b6197812fffb8bcd9ed", + "severity": "major", + "location": { + "path": "with space/and unicode \ud83d\ude03/project/foo.php", + "lines": { + "begin": 5 + } + } + }, + { + "description": "first generic error", + "fingerprint": "53ed216d77c9a9b21d9535322457ca7d7b037d6596d76484b3481f161adfd96f", + "severity": "major", + "location": { + "path": "", + "lines": { + "begin": 0 + } + } + }, + { + "description": "second generic", + "fingerprint": "adc18b2c27b0ecad40aed7975b165cbe357f0cbba58582af91c0a2e7fa5d77ab", + "severity": "major", + "location": { + "path": "", + "lines": { + "begin": 0 + } + } + } +]', + ]; + } + + #[DataProvider('dataFormatterOutputProvider')] + public function testFormatErrors( + string $message, + int $exitCode, + int $numFileErrors, + int $numGenericErrors, + string $expected, + ): void + { + $formatter = new GitlabErrorFormatter(new SimpleRelativePathHelper('/data/folder')); + + $this->assertSame($exitCode, $formatter->formatErrors( + $this->getAnalysisResult($numFileErrors, $numGenericErrors), + $this->getOutput(), + ), sprintf('%s: response code do not match', $message)); + + $this->assertJsonStringEqualsJsonString($expected, $this->getOutputContent(), sprintf('%s: output do not match', $message)); + } + +} diff --git a/tests/PHPStan/Parser/ParserTest.php b/tests/PHPStan/Parser/ParserTest.php new file mode 100644 index 00000000000..7dd2e22a052 --- /dev/null +++ b/tests/PHPStan/Parser/ParserTest.php @@ -0,0 +1,96 @@ + true, + ], + ]; + + yield [ + __DIR__ . '/data/variadic-methods.php', + VariadicMethodsVisitor::ATTRIBUTE_NAME, + [ + 'VariadicMethod\X' => [ + 'implicit_variadic_fn1' => true, + ], + 'VariadicMethod\Z' => [ + 'implicit_variadic_fnZ' => true, + ], + 'class@anonymous:20:30' => [ + 'implicit_variadic_subZ' => true, + ], + 'class@anonymous:42:52' => [ + 'implicit_variadic_fn' => true, + ], + 'class@anonymous:54:58' => [ + 'implicit_variadic_fn' => true, + ], + 'class@anonymous:61:68' => [ + 'implicit_variadic_fn' => true, + ], + ], + ]; + + yield [ + __DIR__ . '/data/variadic-methods-in-enum.php', + VariadicMethodsVisitor::ATTRIBUTE_NAME, + [ + 'VariadicMethodEnum\X' => [ + 'implicit_variadic_fn1' => true, + ], + ], + ]; + } + + /** + * @param array|array> $expectedVariadics + * @throws ParserErrorsException + */ + #[DataProvider('dataVariadicCallLikes')] + public function testSimpleParserVariadicCallLikes(string $file, string $attributeName, array $expectedVariadics): void + { + /** @var SimpleParser $parser */ + $parser = self::getContainer()->getService('currentPhpVersionSimpleParser'); + $ast = $parser->parseFile($file); + $variadics = $ast[0]->getAttribute($attributeName); + $this->assertIsArray($variadics); + $this->assertCount(count($expectedVariadics), $variadics); + foreach ($expectedVariadics as $key => $expectedVariadic) { + $this->assertArrayHasKey($key, $variadics); + $this->assertSame($expectedVariadic, $variadics[$key]); + } + } + + /** + * @param array|array> $expectedVariadics + * @throws ParserErrorsException + */ + #[DataProvider('dataVariadicCallLikes')] + public function testRichParserVariadicCallLikes(string $file, string $attributeName, array $expectedVariadics): void + { + /** @var RichParser $parser */ + $parser = self::getContainer()->getService('currentPhpVersionRichParser'); + $ast = $parser->parseFile($file); + $variadics = $ast[0]->getAttribute($attributeName); + $this->assertIsArray($variadics); + $this->assertCount(count($expectedVariadics), $variadics); + foreach ($expectedVariadics as $key => $expectedVariadic) { + $this->assertArrayHasKey($key, $variadics); + $this->assertSame($expectedVariadic, $variadics[$key]); + } + } + +} diff --git a/tests/PHPStan/Reflection/data/function-definitions.php b/tests/PHPStan/Reflection/data/function-definitions.php new file mode 100644 index 00000000000..497c3dbe714 --- /dev/null +++ b/tests/PHPStan/Reflection/data/function-definitions.php @@ -0,0 +1,8 @@ +analyse([__DIR__ . '/data/bug-9240.php'], []); } + public function testBug13688(): void + { + $this->analyse([__DIR__ . '/data/bug-13688.php'], []); + } + #[RequiresPhp('>= 8.4.0')] public function testArrayFindKeyExisting(): void { diff --git a/tests/PHPStan/Rules/Arrays/data/bug-13688.php b/tests/PHPStan/Rules/Arrays/data/bug-13688.php new file mode 100644 index 00000000000..76f9a5ee915 --- /dev/null +++ b/tests/PHPStan/Rules/Arrays/data/bug-13688.php @@ -0,0 +1,11 @@ + 0 && $input[$inputLen - 1] === ':'; + echo $hasTrailingColon ? "{$input} has trailing colon\n" : "{$input} does not have trailing colon\n"; +} diff --git a/tests/PHPStan/Rules/Arrays/data/bug-6379.php b/tests/PHPStan/Rules/Arrays/data/bug-6379.php new file mode 100644 index 00000000000..2075ca7bae9 --- /dev/null +++ b/tests/PHPStan/Rules/Arrays/data/bug-6379.php @@ -0,0 +1,21 @@ +