From aa10200318c09a8b61377acf6fa85cbb4f2035f6 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 10:23:11 +0100 Subject: [PATCH 001/460] Fix regular expressions for 'exclude tests' --- .../Magento/Setup/Console/Command/DiCompileCommand.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php index 4c50a3de4fb31..d81168478e79b 100644 --- a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php +++ b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php @@ -256,8 +256,8 @@ private function getExcludedModulePaths(array $modulePaths) } $excludedModulePaths = [ - '#^(?:' . join('|', $basePathsRegExps) . ')/Test#', - '#^(?:' . join('|', $basePathsRegExps) . ')/tests#', + '#^(?:' . join('|', $basePathsRegExps) . ')/Tests?/#', + '#^(?:' . join('|', $basePathsRegExps) . ')/tests/#', ]; return $excludedModulePaths; } @@ -278,8 +278,8 @@ function ($libraryPath) { ); $excludedLibraryPaths = [ - '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?Test#', - '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?tests#', + '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?Tests?/#', + '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?tests/#', ]; return $excludedLibraryPaths; } @@ -293,7 +293,7 @@ function ($libraryPath) { private function getExcludedSetupPaths($setupPath) { return [ - '#^(?:' . preg_quote($setupPath, '#') . ')(/[\\w]+)*/Test#' + '#^(?:' . preg_quote($setupPath, '#') . ')(/[\\w]+)*/Tests?/#' ]; } From d5cb373a708a7d2bc5475bba0af8c6c7ec14a5fc Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 22:41:56 +0100 Subject: [PATCH 002/460] Revert "Fix regular expressions for 'exclude tests'" This reverts commit aa10200318c09a8b61377acf6fa85cbb4f2035f6. --- .../Magento/Setup/Console/Command/DiCompileCommand.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php index d81168478e79b..4c50a3de4fb31 100644 --- a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php +++ b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php @@ -256,8 +256,8 @@ private function getExcludedModulePaths(array $modulePaths) } $excludedModulePaths = [ - '#^(?:' . join('|', $basePathsRegExps) . ')/Tests?/#', - '#^(?:' . join('|', $basePathsRegExps) . ')/tests/#', + '#^(?:' . join('|', $basePathsRegExps) . ')/Test#', + '#^(?:' . join('|', $basePathsRegExps) . ')/tests#', ]; return $excludedModulePaths; } @@ -278,8 +278,8 @@ function ($libraryPath) { ); $excludedLibraryPaths = [ - '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?Tests?/#', - '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?tests/#', + '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?Test#', + '#^(?:' . join('|', $libraryPaths) . ')/([\\w]+/)?tests#', ]; return $excludedLibraryPaths; } @@ -293,7 +293,7 @@ function ($libraryPath) { private function getExcludedSetupPaths($setupPath) { return [ - '#^(?:' . preg_quote($setupPath, '#') . ')(/[\\w]+)*/Tests?/#' + '#^(?:' . preg_quote($setupPath, '#') . ')(/[\\w]+)*/Test#' ]; } From 5fdf3d4b2580739cf9ea6d3804497fa39c9cabc0 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 22:52:58 +0100 Subject: [PATCH 003/460] Allow only valid preferences during di:compile --- .../Module/Di/Compiler/Config/Reader.php | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php index 3b8d301fb3d0e..9c17939f3e079 100644 --- a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php +++ b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php @@ -7,7 +7,9 @@ namespace Magento\Setup\Module\Di\Compiler\Config; use Magento\Framework\App; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\ObjectManager\ConfigInterface; +use Magento\Framework\Phrase; use Magento\Setup\Module\Di\Code\Reader\ClassReaderDecorator; use Magento\Setup\Module\Di\Code\Reader\Type; use Magento\Setup\Module\Di\Compiler\ArgumentsResolverFactory; @@ -92,6 +94,37 @@ public function generateCachePerScope( foreach ($definitionsCollection->getInstancesNamesList() as $instanceName) { $preference = $areaConfig->getPreference($instanceName); if ($instanceName !== $preference) { + if (array_key_exists($preference, $areaConfig->getVirtualTypes())) { + // Special handling is required for virtual types. + $config['preferences'][$instanceName] = $preference; + continue; + } + + if (!class_exists($preference)) { + throw new LocalizedException(new Phrase( + 'Preference declared for "%instanceName" as "%preference", but the latter does not exist.', + [ + 'instanceName' => $instanceName, + 'preference' => $preference, + ] + )); + } + + // Classes defined by PHP extensions are allowed. + $reflection = new \ReflectionClass($preference); + if ($reflection->getExtension()) { + $config['preferences'][$instanceName] = $preference; + continue; + } + + if (!$definitionsCollection->hasInstance($preference)) { + // Removing this preference, because its class has been excluded intentionally. + // See 'excludePatterns' in Magento\Setup\Module\Di\Code\Reader\ClassesScanner, + // populated via Magento\Setup\Console\Command\DiCompileCommand + // TODO: add logging here so developers get useful messaging. + continue; + } + $config['preferences'][$instanceName] = $preference; } } From 38c2061f0ecc4eb1f580e2cf4c48b9850cf1637e Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 22:57:02 +0100 Subject: [PATCH 004/460] Remove invalid preferences --- app/code/Magento/Catalog/etc/di.xml | 1 - app/code/Magento/RemoteStorage/etc/di.xml | 1 - app/etc/di.xml | 1 - .../testsuite/Magento/Test/Legacy/_files/obsolete_classes.php | 2 +- 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/code/Magento/Catalog/etc/di.xml b/app/code/Magento/Catalog/etc/di.xml index b509debe7bae1..5fc3c68800579 100644 --- a/app/code/Magento/Catalog/etc/di.xml +++ b/app/code/Magento/Catalog/etc/di.xml @@ -73,7 +73,6 @@ - diff --git a/app/code/Magento/RemoteStorage/etc/di.xml b/app/code/Magento/RemoteStorage/etc/di.xml index aa1447b84b2cd..85114f186e2f9 100644 --- a/app/code/Magento/RemoteStorage/etc/di.xml +++ b/app/code/Magento/RemoteStorage/etc/di.xml @@ -9,7 +9,6 @@ - Magento\RemoteStorage\Driver\DriverPool diff --git a/app/etc/di.xml b/app/etc/di.xml index 9bb5e00d48f97..f0341316ef747 100644 --- a/app/etc/di.xml +++ b/app/etc/di.xml @@ -82,7 +82,6 @@ - diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php index c4ae253fe7499..3dc237171c208 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php @@ -2845,7 +2845,7 @@ ['Magento\Framework\Stdlib\CookieManager', 'Magento\Framework\Stdlib\CookieManagerInterface'], ['Magento\Framework\Interception\PluginList', 'Magento\Framework\Interception\PluginListInterface'], ['Magento\Framework\Interception\Config', 'Magento\Framework\Interception\ConfigInterface'], - ['Magento\Framework\Interception\Chain', 'Magento\Framework\Interception\ChainInterface'], + ['Magento\Framework\Interception\Chain'], ['Magento\Framework\Interception\Definition', 'Magento\Framework\Interception\DefinitionInterface'], ['Magento\Framework\ObjectManager\Factory', 'Magento\Framework\ObjectManager\FactoryInterface'], ['Magento\Framework\ObjectManager\Config', 'Magento\Framework\ObjectManager\ConfigInterface'], From 0677c171842c16c24381a63b205ecb02e0a04ddf Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 22:58:03 +0100 Subject: [PATCH 005/460] Allow classes without contructors --- .../src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php | 2 +- setup/src/Magento/Setup/Module/Di/Definition/Collection.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php b/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php index f6138d8be303b..083bc6b765962 100644 --- a/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php +++ b/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php @@ -50,7 +50,7 @@ public function getList($path) { $classes = []; foreach ($this->classesScanner->getList($path) as $className) { - $classes[$className] = $this->classReaderDecorator->getConstructor($className); + $classes[$className] = (array) $this->classReaderDecorator->getConstructor($className); } return $classes; diff --git a/setup/src/Magento/Setup/Module/Di/Definition/Collection.php b/setup/src/Magento/Setup/Module/Di/Definition/Collection.php index 559cafbb44918..c00b540c4196b 100644 --- a/setup/src/Magento/Setup/Module/Di/Definition/Collection.php +++ b/setup/src/Magento/Setup/Module/Di/Definition/Collection.php @@ -91,6 +91,6 @@ public function getInstancesNamesList() */ public function hasInstance($instanceName) { - return isset($this->definitions[$instanceName]); + return array_key_exists($instanceName, $this->definitions); } } From 1188e033410259b7172cd5e02b8c12cdda314f0c Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 22:58:19 +0100 Subject: [PATCH 006/460] Fix type error --- .../Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php b/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php index 7a6d34fbcbe07..b1678725c9110 100644 --- a/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php +++ b/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php @@ -193,6 +193,10 @@ private function getConfiguredArguments($instanceType) $configuredArguments = $this->diContainerConfig->getArguments($instanceType); return array_map( function ($type) { + if (!is_array($type)) { + return; + } + if (isset($type['instance'])) { $type['instance'] = ltrim($type['instance'], '\\'); } From d3a8b3f71dd1871c03272003be63a92aa2da8e0b Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 22:58:29 +0100 Subject: [PATCH 007/460] Allow preferences for classes in the 'setup' area --- setup/src/Magento/Setup/Console/Command/DiCompileCommand.php | 1 + 1 file changed, 1 insertion(+) diff --git a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php index 4c50a3de4fb31..91d5b506dca6d 100644 --- a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php +++ b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php @@ -399,6 +399,7 @@ private function getOperationsConfiguration( OperationFactory::AREA_CONFIG_GENERATOR => [ $compiledPathsList['application'], $compiledPathsList['library'], + $compiledPathsList['setup'], $compiledPathsList['generated_helpers'], ], OperationFactory::INTERCEPTION_CACHE => [ From 84c45e4681c069db767ab3f5d6c1ac86f919ab49 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 7 Jun 2021 23:20:00 +0100 Subject: [PATCH 008/460] Make noise on DI compile failure --- .../Setup/Module/Di/Compiler/Config/Reader.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php index 9c17939f3e079..a8e9a53571799 100644 --- a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php +++ b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php @@ -118,11 +118,16 @@ public function generateCachePerScope( } if (!$definitionsCollection->hasInstance($preference)) { - // Removing this preference, because its class has been excluded intentionally. // See 'excludePatterns' in Magento\Setup\Module\Di\Code\Reader\ClassesScanner, // populated via Magento\Setup\Console\Command\DiCompileCommand - // TODO: add logging here so developers get useful messaging. - continue; + throw new LocalizedException(new Phrase( + 'Preference declared for "%instanceName" as "%preference", but the latter' + . ' has not been included in dependency injection compilation.', + [ + 'instanceName' => $instanceName, + 'preference' => $preference, + ] + )); } $config['preferences'][$instanceName] = $preference; From f24f57459c9be9892d74be0e744c62c92058802f Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Wed, 9 Jun 2021 15:21:13 +0100 Subject: [PATCH 009/460] Fix argumentresolver unit test failure --- .../Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php b/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php index b1678725c9110..dbfd7ecd75d98 100644 --- a/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php +++ b/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php @@ -193,11 +193,11 @@ private function getConfiguredArguments($instanceType) $configuredArguments = $this->diContainerConfig->getArguments($instanceType); return array_map( function ($type) { - if (!is_array($type)) { + if (is_object($type)) { return; } - if (isset($type['instance'])) { + if (is_array($type) && isset($type['instance'])) { $type['instance'] = ltrim($type['instance'], '\\'); } From 38d7e5d29c5204524288252cc2a511e85946140e Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Tue, 15 Jun 2021 21:01:55 +0100 Subject: [PATCH 010/460] Fix test for DI config reader --- .../Test/Unit/Module/Di/Compiler/Config/ReaderTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php b/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php index 0e5a57cfcfa50..fae3182203b4a 100644 --- a/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php @@ -174,8 +174,8 @@ private function getVirtualTypes() private function getPreferences() { return [ - 'Interface1' => 'ConcreteType1', - 'ThirdPartyInterface' => 'ConcreteType2' + 'Interface1' => 'DateTime', + 'ThirdPartyInterface' => 'DateTimeZone', ]; } @@ -187,8 +187,8 @@ private function getPreferencesMap() return [ ['ConcreteType1', 'ConcreteType1'], ['ConcreteType2', 'ConcreteType2'], - ['Interface1', 'ConcreteType1'], - ['ThirdPartyInterface', 'ConcreteType2'] + ['Interface1', 'DateTime'], + ['ThirdPartyInterface', 'DateTimeZone'], ]; } From 273482a2dd31ff5ef0ad45ba1058f5307ab51e9e Mon Sep 17 00:00:00 2001 From: Simon Sippert Date: Thu, 10 Mar 2022 10:29:42 +0100 Subject: [PATCH 011/460] Set default collation to utf8mb4 --- .../Setup/Declaration/Schema/Dto/Factories/Table.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php index 0a8f5b4ad23b3..0482845d13751 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php @@ -23,12 +23,12 @@ class Table implements FactoryInterface /** * Default charset for SQL */ - const DEFAULT_CHARSET = 'utf8'; + const DEFAULT_CHARSET = 'utf8mb4'; /** * Default collation */ - const DEFAULT_COLLATION = 'utf8_general_ci'; + const DEFAULT_COLLATION = 'utf8mb4_general_ci'; /** * @var ObjectManagerInterface From e2f29b5539c18fdb808a6ac556b3858ce58d999d Mon Sep 17 00:00:00 2001 From: Stanislav Ilnytskyi Date: Sat, 29 Oct 2022 12:15:32 +0200 Subject: [PATCH 012/460] Use current sore id for category runtime cache --- app/code/Magento/Catalog/Model/CategoryRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Model/CategoryRepository.php b/app/code/Magento/Catalog/Model/CategoryRepository.php index 7082fa4747fdc..9a6d007c58c08 100644 --- a/app/code/Magento/Catalog/Model/CategoryRepository.php +++ b/app/code/Magento/Catalog/Model/CategoryRepository.php @@ -147,7 +147,7 @@ public function save(CategoryInterface $category) */ public function get($categoryId, $storeId = null) { - $cacheKey = $storeId ?? 'all'; + $cacheKey = $storeId ?? $this->storeManager->getStore()->getId(); if (!isset($this->instances[$categoryId][$cacheKey])) { /** @var Category $category */ $category = $this->categoryFactory->create(); From e492a44aa3ec14cfba20512522d6787349ba0a01 Mon Sep 17 00:00:00 2001 From: Stanislav Ilnytskyi Date: Sat, 3 Dec 2022 09:15:16 +0100 Subject: [PATCH 013/460] fix static test --- app/code/Magento/Catalog/Model/CategoryRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Model/CategoryRepository.php b/app/code/Magento/Catalog/Model/CategoryRepository.php index 9a6d007c58c08..9c25acdf44fd4 100644 --- a/app/code/Magento/Catalog/Model/CategoryRepository.php +++ b/app/code/Magento/Catalog/Model/CategoryRepository.php @@ -229,7 +229,7 @@ protected function validateCategory(Category $category) * Lazy loader for the converter. * * @return ExtensibleDataObjectConverter - * + * phpcs:disable Magento2.Annotation.MethodAnnotationStructure * @deprecated 101.0.0 */ private function getExtensibleDataObjectConverter() From 27141dadb1acadcb3c4f1780e7c14d512f79c40e Mon Sep 17 00:00:00 2001 From: Stanislav Ilnytskyi Date: Mon, 24 Apr 2023 19:52:43 +0200 Subject: [PATCH 014/460] fix integration tests --- app/code/Magento/Catalog/Model/ResourceModel/Category.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Category.php b/app/code/Magento/Catalog/Model/ResourceModel/Category.php index 35828fc8ec117..cd637e827c8e3 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Category.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Category.php @@ -36,8 +36,6 @@ class Category extends AbstractResource protected $_tree; /** - * Catalog products table name - * * @var string */ protected $_categoryProductTable; @@ -48,15 +46,11 @@ class Category extends AbstractResource private $entitiesWhereAttributesIs; /** - * Id of 'is_active' category attribute - * * @var int */ protected $_isActiveAttributeId = null; /** - * Id of store - * * @var int */ protected $_storeId = null; @@ -454,7 +448,7 @@ protected function _saveCategoryProducts($category) 'position' => (int)$position, ]; } - $connection->insertMultiple($this->getCategoryProductTable(), $data); + $connection->insertOnDuplicate($this->getCategoryProductTable(), $data, ['position']); } /** From 3442c0941abc6e2bdcc6df239c25971bad84ca6f Mon Sep 17 00:00:00 2001 From: glo24157 Date: Tue, 7 Nov 2023 16:20:52 +0530 Subject: [PATCH 015/460] Fix Integration test failures --- .../constraint_modification.mysql829.php | 4 +- .../rollback.mysql829.php | 6 +- .../table_rename.mysql829.php | 4 +- .../fixture/dry_run_log.mysql829.php | 74 +++++++++---------- .../fixture/shards.mysql829.php | 12 +-- .../disabling_tables.mysql829.php | 2 +- 6 files changed, 51 insertions(+), 51 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php index 65a70da8d660c..8c0c084611ad6 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php @@ -27,7 +27,7 @@ `smallint_ref` smallint NOT NULL DEFAULT \'0\', PRIMARY KEY (`tinyint_ref`,`smallint_ref`), UNIQUE KEY `REFERENCE_TABLE_SMALLINT_REF` (`smallint_ref`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'test_table' => 'CREATE TABLE `test_table` ( `smallint` smallint DEFAULT NULL, `tinyint` tinyint DEFAULT NULL, @@ -55,5 +55,5 @@ CONSTRAINT `FK_FB77604C299EB8612D01E4AF8D9931F2` FOREIGN KEY (`integer_main`) REFERENCES `auto_increment_test` (`int_auto_increment_with_nullable`) ON DELETE CASCADE, CONSTRAINT `TEST_TABLE_SMALLINT_MAIN_REFERENCE_TABLE_SMALLINT_REF` FOREIGN KEY (`smallint_main`) REFERENCES `reference_table` (`smallint_ref`) ON DELETE CASCADE, CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php index 57b70edd9e3f2..de4f3ed207e65 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php @@ -12,12 +12,12 @@ `store_owner_id` smallint DEFAULT NULL COMMENT \'Store Owner Reference\', KEY `STORE_STORE_OWNER_ID_STORE_OWNER_OWNER_ID` (`store_owner_id`), CONSTRAINT `STORE_STORE_OWNER_ID_STORE_OWNER_OWNER_ID` FOREIGN KEY (`store_owner_id`) REFERENCES `store_owner` (`owner_id`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'store_owner' => 'CREATE TABLE `store_owner` ( `owner_id` smallint NOT NULL AUTO_INCREMENT, - `store_owner_name` varchar(255) DEFAULT NULL COMMENT \'Store Owner Name\', + `store_owner_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT \'Store Owner Name\', PRIMARY KEY (`owner_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT=\'Store owner information\'' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=\'Store owner information\'' ], 'after' => [ 'store' => 'CREATE TABLE `store` ( diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php index cb8f53d499a50..7011eb4115eed 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php @@ -10,6 +10,6 @@ `some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', 'after' => 'CREATE TABLE `some_table_renamed` ( - `some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', + `some_column` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT \'Some Column Name\' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php index 4d49221074315..643bd1b0b1644 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php @@ -7,52 +7,52 @@ // @codingStandardsIgnoreFile return ['CREATE TABLE `reference_table` ( -`tinyint_ref` tinyint NOT NULL AUTO_INCREMENT , -`tinyint_without_padding` tinyint NOT NULL DEFAULT 0 , -`bigint_without_padding` bigint NOT NULL DEFAULT 0 , -`smallint_without_padding` smallint NOT NULL DEFAULT 0 , -`integer_without_padding` int NOT NULL DEFAULT 0 , -`smallint_with_big_padding` smallint NOT NULL DEFAULT 0 , -`smallint_without_default` smallint NULL , -`int_without_unsigned` int NULL , -`int_unsigned` int UNSIGNED NULL , -`bigint_default_nullable` bigint UNSIGNED NULL DEFAULT 1 , -`bigint_not_default_not_nullable` bigint UNSIGNED NOT NULL , +`tinyint_ref` tinyint NOT NULL AUTO_INCREMENT , +`tinyint_without_padding` tinyint NOT NULL DEFAULT 0 , +`bigint_without_padding` bigint NOT NULL DEFAULT 0 , +`smallint_without_padding` smallint NOT NULL DEFAULT 0 , +`integer_without_padding` int NOT NULL DEFAULT 0 , +`smallint_with_big_padding` smallint NOT NULL DEFAULT 0 , +`smallint_without_default` smallint NULL , +`int_without_unsigned` int NULL , +`int_unsigned` int UNSIGNED NULL , +`bigint_default_nullable` bigint UNSIGNED NULL DEFAULT 1 , +`bigint_not_default_not_nullable` bigint UNSIGNED NOT NULL , CONSTRAINT PRIMARY KEY (`tinyint_ref`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `auto_increment_test` ( -`int_auto_increment_with_nullable` int UNSIGNED NOT NULL AUTO_INCREMENT , -`int_disabled_auto_increment` smallint UNSIGNED NULL DEFAULT 0 , +`int_auto_increment_with_nullable` int UNSIGNED NOT NULL AUTO_INCREMENT , +`int_disabled_auto_increment` smallint UNSIGNED NULL DEFAULT 0 , CONSTRAINT `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` UNIQUE KEY (`int_auto_increment_with_nullable`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `test_table` ( -`smallint` smallint NOT NULL AUTO_INCREMENT , -`tinyint` tinyint NULL , -`bigint` bigint NULL DEFAULT 0 , -`float` float(12, 4) NULL DEFAULT 0 , -`double` decimal(14, 6) NULL DEFAULT 11111111.111111 , -`decimal` decimal(15, 4) NULL DEFAULT 0 , -`date` date NULL , -`timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , -`datetime` datetime NULL DEFAULT 0 , -`longtext` longtext NULL , -`mediumtext` mediumtext NULL , -`varchar` varchar(254) NULL , -`char` char(255) NULL , -`mediumblob` mediumblob NULL , -`blob` blob NULL , -`boolean` BOOLEAN NULL , -CONSTRAINT `TEST_TABLE_SMALLINT_BIGINT` UNIQUE KEY (`smallint`,`bigint`), -CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE NO ACTION, +`smallint` smallint NOT NULL AUTO_INCREMENT , +`tinyint` tinyint NULL , +`bigint` bigint NULL DEFAULT 0 , +`float` float(12, 4) NULL DEFAULT 0 , +`double` decimal(14, 6) NULL DEFAULT 11111111.111111 , +`decimal` decimal(15, 4) NULL DEFAULT 0 , +`date` date NULL , +`timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , +`datetime` datetime NULL DEFAULT 0 , +`longtext` longtext NULL , +`mediumtext` mediumtext NULL , +`varchar` varchar(254) NULL , +`char` char(255) NULL , +`mediumblob` mediumblob NULL , +`blob` blob NULL , +`boolean` BOOLEAN NULL , +CONSTRAINT `TEST_TABLE_SMALLINT_BIGINT` UNIQUE KEY (`smallint`,`bigint`), +CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE NO ACTION, INDEX `TEST_TABLE_TINYINT_BIGINT` (`tinyint`,`bigint`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `patch_list` ( -`patch_id` int NOT NULL AUTO_INCREMENT COMMENT "Patch Auto Increment", -`patch_name` varchar(1024) NOT NULL COMMENT "Patch Class Name", +`patch_id` int NOT NULL AUTO_INCREMENT COMMENT "Patch Auto Increment", +`patch_name` varchar(1024) NOT NULL COMMENT "Patch Class Name", CONSTRAINT PRIMARY KEY (`patch_id`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci COMMENT="List of data/schema patches" +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci COMMENT="List of data/schema patches" ']; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php index 2507abeef2994..937376b441798 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php @@ -8,14 +8,14 @@ return [ 'test_table_one' => 'CREATE TABLE `test_table_one` ( `smallint` smallint NOT NULL AUTO_INCREMENT, - `varchar` varchar(254) DEFAULT NULL, + `varchar` varchar(254) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`smallint`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'test_table_two' => 'CREATE TABLE `test_table_two` ( `smallint` smallint NOT NULL AUTO_INCREMENT, - `varchar` varchar(254) DEFAULT NULL, + `varchar` varchar(254) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`smallint`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'reference_table' => 'CREATE TABLE `reference_table` ( `tinyint_ref` tinyint NOT NULL AUTO_INCREMENT, `tinyint_without_padding` tinyint NOT NULL DEFAULT \'0\', @@ -29,10 +29,10 @@ `bigint_default_nullable` bigint unsigned DEFAULT \'1\', `bigint_not_default_not_nullable` bigint unsigned NOT NULL, PRIMARY KEY (`tinyint_ref`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'auto_increment_test' => 'CREATE TABLE `auto_increment_test` ( `int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint unsigned DEFAULT \'0\', UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mysql829.php index 9ca6fcbc22751..9dca36c13f605 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mysql829.php @@ -10,5 +10,5 @@ `int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint unsigned DEFAULT \'0\', UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ]; From c28ce8b9f549ab11e60bdd929686df043afff288 Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Tue, 7 Nov 2023 18:44:43 +0530 Subject: [PATCH 016/460] Fix testInstallationWithConstraintsModification integration test failures --- .../constraint_modification.mysql829.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php index 8c0c084611ad6..4e5de32b9926c 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mysql829.php @@ -11,7 +11,7 @@ `int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint unsigned DEFAULT \'0\', UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'reference_table' => 'CREATE TABLE `reference_table` ( `tinyint_ref` tinyint NOT NULL AUTO_INCREMENT, `tinyint_without_padding` tinyint NOT NULL DEFAULT \'0\', @@ -38,10 +38,10 @@ `date` date DEFAULT NULL, `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `datetime` datetime DEFAULT \'0000-00-00 00:00:00\', - `longtext` longtext, - `mediumtext` mediumtext, - `varchar` varchar(254) DEFAULT NULL, - `char` char(255) DEFAULT NULL, + `longtext` longtext COLLATE utf8mb4_general_ci, + `mediumtext` mediumtext COLLATE utf8mb4_general_ci, + `varchar` varchar(254) COLLATE utf8mb4_general_ci DEFAULT NULL, + `char` char(255) COLLATE utf8mb4_general_ci DEFAULT NULL, `mediumblob` mediumblob, `blob` blob, `boolean` tinyint(1) DEFAULT NULL, From a23ae5240a6767234d2c6da9badc1ca8c7940fb9 Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Wed, 8 Nov 2023 11:50:00 +0530 Subject: [PATCH 017/460] Fixes Integration test failures --- .../fixture/declarative_installer/rollback.mysql829.php | 2 +- .../fixture/declarative_installer/table_removal.mysql829.php | 2 +- .../fixture/declarative_installer/table_rename.mysql829.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php index de4f3ed207e65..b015073dbc78e 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php @@ -22,6 +22,6 @@ 'after' => [ 'store' => 'CREATE TABLE `store` ( `store_owner` varchar(255) DEFAULT NULL COMMENT \'Store Owner Name\' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ] ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mysql829.php index 9ca6fcbc22751..9dca36c13f605 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mysql829.php @@ -10,5 +10,5 @@ `int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint unsigned DEFAULT \'0\', UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php index 7011eb4115eed..ef7bec3829609 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mysql829.php @@ -7,8 +7,8 @@ return [ 'before' => 'CREATE TABLE `some_table` ( - `some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3', + `some_column` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT \'Some Column Name\' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'after' => 'CREATE TABLE `some_table_renamed` ( `some_column` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT \'Some Column Name\' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', From 08c7d71faab095c8109464791f7fdecf64706292 Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Mon, 13 Nov 2023 14:56:39 +0530 Subject: [PATCH 018/460] Fix integration test failures --- .../fixture/declarative_installer/rollback.mysql829.php | 2 +- .../fixture/dry_run_log.mysql829.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php index b015073dbc78e..5509899ace45f 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mysql829.php @@ -21,7 +21,7 @@ ], 'after' => [ 'store' => 'CREATE TABLE `store` ( - `store_owner` varchar(255) DEFAULT NULL COMMENT \'Store Owner Name\' + `store_owner` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT \'Store Owner Name\' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ] ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php index 643bd1b0b1644..5a0754d4c34b7 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php @@ -56,3 +56,4 @@ ) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci COMMENT="List of data/schema patches" ']; + From 2b6181d826a62d19a5e822ad07f21fd78be1a33e Mon Sep 17 00:00:00 2001 From: Abhinav Pathak <51681618+engcom-Hotel@users.noreply.github.com> Date: Mon, 13 Nov 2023 18:21:35 +0530 Subject: [PATCH 019/460] Update dry_run_log.mysql829.php --- .../fixture/dry_run_log.mysql829.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php index 5a0754d4c34b7..35baad3138742 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php @@ -7,7 +7,7 @@ // @codingStandardsIgnoreFile return ['CREATE TABLE `reference_table` ( -`tinyint_ref` tinyint NOT NULL AUTO_INCREMENT , +`tinyint_ref` tinyint NOT NULL AUTO_INCREMENT , `tinyint_without_padding` tinyint NOT NULL DEFAULT 0 , `bigint_without_padding` bigint NOT NULL DEFAULT 0 , `smallint_without_padding` smallint NOT NULL DEFAULT 0 , From 33bf9361e24384153801b5df22b0665794d986bd Mon Sep 17 00:00:00 2001 From: Abhinav Pathak <51681618+engcom-Hotel@users.noreply.github.com> Date: Mon, 13 Nov 2023 18:26:45 +0530 Subject: [PATCH 020/460] Fix Integration test failures --- .../fixture/dry_run_log.mysql829.php | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php index 35baad3138742..195c48204ec14 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php @@ -8,50 +8,50 @@ // @codingStandardsIgnoreFile return ['CREATE TABLE `reference_table` ( `tinyint_ref` tinyint NOT NULL AUTO_INCREMENT , -`tinyint_without_padding` tinyint NOT NULL DEFAULT 0 , -`bigint_without_padding` bigint NOT NULL DEFAULT 0 , -`smallint_without_padding` smallint NOT NULL DEFAULT 0 , -`integer_without_padding` int NOT NULL DEFAULT 0 , -`smallint_with_big_padding` smallint NOT NULL DEFAULT 0 , -`smallint_without_default` smallint NULL , -`int_without_unsigned` int NULL , -`int_unsigned` int UNSIGNED NULL , -`bigint_default_nullable` bigint UNSIGNED NULL DEFAULT 1 , -`bigint_not_default_not_nullable` bigint UNSIGNED NOT NULL , +`tinyint_without_padding` tinyint NOT NULL DEFAULT 0 , +`bigint_without_padding` bigint NOT NULL DEFAULT 0 , +`smallint_without_padding` smallint NOT NULL DEFAULT 0 , +`integer_without_padding` int NOT NULL DEFAULT 0 , +`smallint_with_big_padding` smallint NOT NULL DEFAULT 0 , +`smallint_without_default` smallint NULL , +`int_without_unsigned` int NULL , +`int_unsigned` int UNSIGNED NULL , +`bigint_default_nullable` bigint UNSIGNED NULL DEFAULT 1 , +`bigint_not_default_not_nullable` bigint UNSIGNED NOT NULL , CONSTRAINT PRIMARY KEY (`tinyint_ref`) ) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `auto_increment_test` ( -`int_auto_increment_with_nullable` int UNSIGNED NOT NULL AUTO_INCREMENT , -`int_disabled_auto_increment` smallint UNSIGNED NULL DEFAULT 0 , +`int_auto_increment_with_nullable` int UNSIGNED NOT NULL AUTO_INCREMENT , +`int_disabled_auto_increment` smallint UNSIGNED NULL DEFAULT 0 , CONSTRAINT `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` UNIQUE KEY (`int_auto_increment_with_nullable`) ) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `test_table` ( -`smallint` smallint NOT NULL AUTO_INCREMENT , -`tinyint` tinyint NULL , -`bigint` bigint NULL DEFAULT 0 , -`float` float(12, 4) NULL DEFAULT 0 , -`double` decimal(14, 6) NULL DEFAULT 11111111.111111 , -`decimal` decimal(15, 4) NULL DEFAULT 0 , -`date` date NULL , -`timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , -`datetime` datetime NULL DEFAULT 0 , -`longtext` longtext NULL , -`mediumtext` mediumtext NULL , -`varchar` varchar(254) NULL , -`char` char(255) NULL , -`mediumblob` mediumblob NULL , -`blob` blob NULL , -`boolean` BOOLEAN NULL , +`smallint` smallint NOT NULL AUTO_INCREMENT , +`tinyint` tinyint NULL , +`bigint` bigint NULL DEFAULT 0 , +`float` float(12, 4) NULL DEFAULT 0 , +`double` decimal(14, 6) NULL DEFAULT 11111111.111111 , +`decimal` decimal(15, 4) NULL DEFAULT 0 , +`date` date NULL , +`timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , +`datetime` datetime NULL DEFAULT 0 , +`longtext` longtext NULL , +`mediumtext` mediumtext NULL , +`varchar` varchar(254) NULL , +`char` char(255) NULL , +`mediumblob` mediumblob NULL , +`blob` blob NULL , +`boolean` BOOLEAN NULL , CONSTRAINT `TEST_TABLE_SMALLINT_BIGINT` UNIQUE KEY (`smallint`,`bigint`), -CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE NO ACTION, +CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE NO ACTION, INDEX `TEST_TABLE_TINYINT_BIGINT` (`tinyint`,`bigint`) ) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `patch_list` ( -`patch_id` int NOT NULL AUTO_INCREMENT COMMENT "Patch Auto Increment", -`patch_name` varchar(1024) NOT NULL COMMENT "Patch Class Name", +`patch_id` int NOT NULL AUTO_INCREMENT COMMENT "Patch Auto Increment", +`patch_name` varchar(1024) NOT NULL COMMENT "Patch Class Name", CONSTRAINT PRIMARY KEY (`patch_id`) ) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci COMMENT="List of data/schema patches" From 809d8bc6bea528e0fbb542cec0b0c13c4970595d Mon Sep 17 00:00:00 2001 From: Abhinav Pathak <51681618+engcom-Hotel@users.noreply.github.com> Date: Tue, 14 Nov 2023 12:06:29 +0530 Subject: [PATCH 021/460] Fix Integration test failures --- .../fixture/dry_run_log.mysql829.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php index 195c48204ec14..22af73e5b1fee 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mysql829.php @@ -19,13 +19,13 @@ `bigint_default_nullable` bigint UNSIGNED NULL DEFAULT 1 , `bigint_not_default_not_nullable` bigint UNSIGNED NOT NULL , CONSTRAINT PRIMARY KEY (`tinyint_ref`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `auto_increment_test` ( `int_auto_increment_with_nullable` int UNSIGNED NOT NULL AUTO_INCREMENT , `int_disabled_auto_increment` smallint UNSIGNED NULL DEFAULT 0 , CONSTRAINT `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` UNIQUE KEY (`int_auto_increment_with_nullable`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `test_table` ( `smallint` smallint NOT NULL AUTO_INCREMENT , @@ -44,10 +44,10 @@ `mediumblob` mediumblob NULL , `blob` blob NULL , `boolean` BOOLEAN NULL , -CONSTRAINT `TEST_TABLE_SMALLINT_BIGINT` UNIQUE KEY (`smallint`,`bigint`), +CONSTRAINT `TEST_TABLE_SMALLINT_BIGINT` UNIQUE KEY (`smallint`,`bigint`), CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE NO ACTION, INDEX `TEST_TABLE_TINYINT_BIGINT` (`tinyint`,`bigint`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `patch_list` ( `patch_id` int NOT NULL AUTO_INCREMENT COMMENT "Patch Auto Increment", From 74cde9d86b90e339a208728b6ace1637f92b12cc Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Tue, 14 Nov 2023 13:55:43 +0530 Subject: [PATCH 022/460] Fix Integration test failures --- .../revisions/base_update/InstallSchema.php | 8 ++++++-- .../revisions/old_diff/InstallSchema.php | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php index 22cfcd1fa2870..b76c076d81977 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php @@ -37,7 +37,9 @@ public function install(SchemaSetupInterface $setup, ModuleContextInterface $con ['primary' => true, 'identity' => true, 'nullable' => false], 'Smallint' ) - ->setComment('Reference table'); + ->setComment('Reference table') + ->setOption('charset', 'utf8mb4') + ->setOption('collate', 'utf8mb4_general_ci'); $installer->getConnection()->createTable($table); $testTable = $installer->getConnection()->newTable($installer->getTable('test_table')) @@ -118,7 +120,9 @@ public function install(SchemaSetupInterface $setup, ModuleContextInterface $con 'smallint_ref', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE ) - ->setComment('Test Table'); + ->setComment('Test Table') + ->setOption('charset', 'utf8mb4') + ->setOption('collate', 'utf8mb4_general_ci'); $installer->getConnection()->createTable($testTable); $installer->endSetup(); diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php index 8678218a51e05..ba18541941a5e 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php @@ -36,7 +36,9 @@ public function install(SchemaSetupInterface $setup, ModuleContextInterface $con ['primary' => true, 'identity' => true, 'nullable' => false], 'Smallint' ) - ->setComment('Reference table'); + ->setComment('Reference table') + ->setOption('charset', 'utf8mb4') + ->setOption('collate', 'utf8mb4_general_ci'); $installer->getConnection()->createTable($table); $testTable = $installer->getConnection()->newTable('test_table') @@ -117,7 +119,9 @@ public function install(SchemaSetupInterface $setup, ModuleContextInterface $con 'smallint_ref', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE ) - ->setComment('Test Table'); + ->setComment('Test Table') + ->setOption('charset', 'utf8mb4') + ->setOption('collate', 'utf8mb4_general_ci'); $installer->getConnection()->createTable($testTable); $installer->endSetup(); From a1ae35b1f6aaa1f06ed26d386cc4804479b83bb3 Mon Sep 17 00:00:00 2001 From: Abhinav Pathak <51681618+engcom-Hotel@users.noreply.github.com> Date: Wed, 15 Nov 2023 11:48:02 +0530 Subject: [PATCH 023/460] Fix EE and B2b Integration failures --- .../constraint_modification.mariadb10611.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mariadb10611.php index b6d4eca91d6a0..21f53095b9219 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/constraint_modification.mariadb10611.php @@ -11,7 +11,7 @@ `int_auto_increment_with_nullable` int(10) unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint(5) unsigned DEFAULT 0, UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'reference_table' => 'CREATE TABLE `reference_table` ( `tinyint_ref` tinyint(4) NOT NULL AUTO_INCREMENT, `tinyint_without_padding` tinyint(4) NOT NULL DEFAULT 0, @@ -27,7 +27,7 @@ `smallint_ref` smallint(6) NOT NULL DEFAULT 0, PRIMARY KEY (`tinyint_ref`,`smallint_ref`), UNIQUE KEY `REFERENCE_TABLE_SMALLINT_REF` (`smallint_ref`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'test_table' => 'CREATE TABLE `test_table` ( `smallint` smallint(6) DEFAULT NULL, `tinyint` tinyint(4) DEFAULT NULL, @@ -55,5 +55,5 @@ CONSTRAINT `FK_FB77604C299EB8612D01E4AF8D9931F2` FOREIGN KEY (`integer_main`) REFERENCES `auto_increment_test` (`int_auto_increment_with_nullable`) ON DELETE CASCADE, CONSTRAINT `TEST_TABLE_SMALLINT_MAIN_REFERENCE_TABLE_SMALLINT_REF` FOREIGN KEY (`smallint_main`) REFERENCES `reference_table` (`smallint_ref`) ON DELETE CASCADE, CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', ]; From 58373a28df24dd71551b12c82e1fa01fb296cb44 Mon Sep 17 00:00:00 2001 From: Abhinav Pathak <51681618+engcom-Hotel@users.noreply.github.com> Date: Wed, 15 Nov 2023 11:49:30 +0530 Subject: [PATCH 024/460] Fix EE and B2b integration failures --- .../declarative_installer/table_removal.mariadb10611.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mariadb10611.php index 403957ca0921d..671f154a9d9ee 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_removal.mariadb10611.php @@ -10,5 +10,5 @@ `int_auto_increment_with_nullable` int(10) unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint(5) unsigned DEFAULT 0, UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ]; From 58a670b252dddea786273bc0714c3286e1666e99 Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Wed, 15 Nov 2023 15:29:02 +0530 Subject: [PATCH 025/460] Fix integration test failures --- .../declarative_installer/rollback.mariadb10611.php | 4 ++-- .../declarative_installer/table_rename.mariadb10611.php | 2 +- .../fixture/shards.mariadb10611.php | 8 ++++---- .../disabling_tables.mariadb10611.php | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php index c4c9f12fbaeee..f4f5baec7afd3 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php @@ -12,12 +12,12 @@ `store_owner_id` smallint(6) DEFAULT NULL COMMENT \'Store Owner Reference\', KEY `STORE_STORE_OWNER_ID_STORE_OWNER_OWNER_ID` (`store_owner_id`), CONSTRAINT `STORE_STORE_OWNER_ID_STORE_OWNER_OWNER_ID` FOREIGN KEY (`store_owner_id`) REFERENCES `store_owner` (`owner_id`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'store_owner' => 'CREATE TABLE `store_owner` ( `owner_id` smallint(6) NOT NULL AUTO_INCREMENT, `store_owner_name` varchar(255) DEFAULT NULL COMMENT \'Store Owner Name\', PRIMARY KEY (`owner_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT=\'Store owner information\'' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=\'Store owner information\'' ], 'after' => [ 'store' => 'CREATE TABLE `store` ( diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php index 6568a59de2a33..1b7a6e08a48cc 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php @@ -8,7 +8,7 @@ return [ 'before' => 'CREATE TABLE `some_table` ( `some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'after' => 'CREATE TABLE `some_table_renamed` ( `some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mariadb10611.php index 1a1b02dce67cd..75e09e60d963d 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mariadb10611.php @@ -10,12 +10,12 @@ `smallint` smallint(6) NOT NULL AUTO_INCREMENT, `varchar` varchar(254) DEFAULT NULL, PRIMARY KEY (`smallint`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'test_table_two' => 'CREATE TABLE `test_table_two` ( `smallint` smallint(6) NOT NULL AUTO_INCREMENT, `varchar` varchar(254) DEFAULT NULL, PRIMARY KEY (`smallint`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'reference_table' => 'CREATE TABLE `reference_table` ( `tinyint_ref` tinyint(4) NOT NULL AUTO_INCREMENT, `tinyint_without_padding` tinyint(4) NOT NULL DEFAULT 0, @@ -29,10 +29,10 @@ `bigint_default_nullable` bigint(20) unsigned DEFAULT 1, `bigint_not_default_not_nullable` bigint(20) unsigned NOT NULL, PRIMARY KEY (`tinyint_ref`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'auto_increment_test' => 'CREATE TABLE `auto_increment_test` ( `int_auto_increment_with_nullable` int(10) unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint(5) unsigned DEFAULT 0, UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mariadb10611.php index 403957ca0921d..671f154a9d9ee 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule9/fixture/declarative_installer/disabling_tables.mariadb10611.php @@ -10,5 +10,5 @@ `int_auto_increment_with_nullable` int(10) unsigned NOT NULL AUTO_INCREMENT, `int_disabled_auto_increment` smallint(5) unsigned DEFAULT 0, UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ]; From a20768699cc5a18c62ef945ede4d86338841113d Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Wed, 15 Nov 2023 17:38:11 +0530 Subject: [PATCH 026/460] Fix integration test failures --- .../fixture/declarative_installer/rollback.mariadb10611.php | 2 +- .../fixture/declarative_installer/table_rename.mariadb10611.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php index f4f5baec7afd3..328f759bfc695 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/rollback.mariadb10611.php @@ -22,6 +22,6 @@ 'after' => [ 'store' => 'CREATE TABLE `store` ( `store_owner` varchar(255) DEFAULT NULL COMMENT \'Store Owner Name\' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci' ] ]; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php index 1b7a6e08a48cc..fb2c93f2b25b8 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/declarative_installer/table_rename.mariadb10611.php @@ -11,5 +11,5 @@ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', 'after' => 'CREATE TABLE `some_table_renamed` ( `some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci', +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci', ]; From 3ef200a0cf419b641b275034c9cc4369ec349ce8 Mon Sep 17 00:00:00 2001 From: Abhinav Pathak <51681618+engcom-Hotel@users.noreply.github.com> Date: Wed, 15 Nov 2023 17:40:19 +0530 Subject: [PATCH 027/460] Fix integration test failures --- .../fixture/dry_run_log.mariadb10611.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mariadb10611.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mariadb10611.php index 4d49221074315..61fd802fc2693 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mariadb10611.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/fixture/dry_run_log.mariadb10611.php @@ -19,13 +19,13 @@ `bigint_default_nullable` bigint UNSIGNED NULL DEFAULT 1 , `bigint_not_default_not_nullable` bigint UNSIGNED NOT NULL , CONSTRAINT PRIMARY KEY (`tinyint_ref`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `auto_increment_test` ( `int_auto_increment_with_nullable` int UNSIGNED NOT NULL AUTO_INCREMENT , `int_disabled_auto_increment` smallint UNSIGNED NULL DEFAULT 0 , CONSTRAINT `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` UNIQUE KEY (`int_auto_increment_with_nullable`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `test_table` ( `smallint` smallint NOT NULL AUTO_INCREMENT , @@ -47,12 +47,12 @@ CONSTRAINT `TEST_TABLE_SMALLINT_BIGINT` UNIQUE KEY (`smallint`,`bigint`), CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE NO ACTION, INDEX `TEST_TABLE_TINYINT_BIGINT` (`tinyint`,`bigint`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci CREATE TABLE `patch_list` ( `patch_id` int NOT NULL AUTO_INCREMENT COMMENT "Patch Auto Increment", `patch_name` varchar(1024) NOT NULL COMMENT "Patch Class Name", CONSTRAINT PRIMARY KEY (`patch_id`) -) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci COMMENT="List of data/schema patches" +) ENGINE=innodb DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci COMMENT="List of data/schema patches" ']; From 56b69b592789929dc6d48e6c9478f4572e9bd17b Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Thu, 16 Nov 2023 12:31:27 +0530 Subject: [PATCH 028/460] Fix static test failures --- .../revisions/base_update/InstallSchema.php | 1 + .../revisions/old_diff/InstallSchema.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php index b76c076d81977..3a85973e8582e 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/base_update/InstallSchema.php @@ -4,6 +4,7 @@ * See COPYING.txt for license details. */ declare(strict_types=1); +// phpcs:ignoreFile namespace Magento\TestSetupDeclarationModule1\Setup; diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php index ba18541941a5e..9ed507dc215bd 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule1/revisions/old_diff/InstallSchema.php @@ -3,7 +3,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ - +// phpcs:ignoreFile namespace Magento\TestSetupDeclarationModule1\Setup; use Magento\Framework\Setup\InstallSchemaInterface; From 69e376159eabf87e449e62fc4f985a5034606769 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Thu, 22 Feb 2024 16:48:55 +0000 Subject: [PATCH 029/460] Adhere to coding standard --- .../Setup/Console/Command/DiCompileCommand.php | 17 +++++++++++++---- .../Module/Di/Code/Reader/Decorator/Area.php | 7 ++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php index 91d5b506dca6d..69e202a9c2497 100644 --- a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php +++ b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php @@ -1,8 +1,10 @@ writeln($line); } + // we must have an exit code higher than zero to indicate something was wrong return Cli::RETURN_FAILURE; } @@ -224,6 +225,7 @@ function (OperationInterface $operation) use ($progressBar) { // we must have an exit code higher than zero to indicate something was wrong return Cli::RETURN_FAILURE; } + return Cli::RETURN_SUCCESS; } @@ -231,6 +233,7 @@ function (OperationInterface $operation) use ($progressBar) { * Build list of module path regexps which should be excluded from compilation * * @param string[] $modulePaths + * * @return string[] */ private function getExcludedModulePaths(array $modulePaths) @@ -251,6 +254,7 @@ private function getExcludedModulePaths(array $modulePaths) $vendorPathsRegExps[] = $vendorDir . '/(?:' . join('|', $vendorModules) . ')'; } + $basePathsRegExps[] = preg_quote($basePath, '#') . '/(?:' . join('|', $vendorPathsRegExps) . ')'; } @@ -266,6 +270,7 @@ private function getExcludedModulePaths(array $modulePaths) * Build list of library path regexps which should be excluded from compilation * * @param string[] $libraryPaths + * * @return string[] */ private function getExcludedLibraryPaths(array $libraryPaths) @@ -288,6 +293,7 @@ function ($libraryPath) { * Get excluded setup application paths * * @param string $setupPath + * * @return string[] */ private function getExcludedSetupPaths($setupPath) @@ -301,6 +307,7 @@ private function getExcludedSetupPaths($setupPath) * Delete directories by their code from "var" directory * * @param array $directoryCodeList + * * @return void */ private function cleanupFilesystem($directoryCodeList) @@ -314,6 +321,7 @@ private function cleanupFilesystem($directoryCodeList) * Configure Object Manager * * @param OutputInterface $output + * * @return void */ private function configureObjectManager(OutputInterface $output) @@ -365,6 +373,7 @@ private function configureObjectManager(OutputInterface $output) * Returns operations configuration * * @param array $compiledPathsList + * * @return array */ private function getOperationsConfiguration( diff --git a/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php b/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php index 083bc6b765962..03b39e02e7b57 100644 --- a/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php +++ b/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php @@ -1,19 +1,16 @@ Date: Thu, 21 Mar 2024 17:48:40 +0000 Subject: [PATCH 030/460] Redirect loop when URL have uppercase --- .../Config/Model/Config/Backend/Baseurl.php | 6 +++-- .../Unit/Model/Config/Backend/BaseurlTest.php | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php index 5e43e53f1b64f..fb20185e100bd 100644 --- a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php +++ b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php @@ -5,8 +5,8 @@ */ namespace Magento\Config\Model\Config\Backend; -use Magento\Framework\Validator\Url as UrlValidator; use Magento\Framework\App\ObjectManager; +use Magento\Framework\Validator\Url as UrlValidator; /** * @api @@ -56,7 +56,7 @@ public function __construct( */ public function beforeSave() { - $value = $this->getValue(); + $value = strtolower($this->getValue()); try { if (!$this->_validateUnsecure($value) && !$this->_validateSecure($value)) { $this->_validateFullyQualifiedUrl($value); @@ -68,6 +68,7 @@ public function beforeSave() $error = new \Magento\Framework\Exception\LocalizedException($msg, $e); throw $error; } + $this->setValue($value); } /** @@ -232,6 +233,7 @@ public function afterSave() * Get URL Validator * * @deprecated 100.1.12 + * @see Nothing * @return UrlValidator */ private function getUrlValidator() diff --git a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php index 9ba3ccd9fb965..f2516cdff9702 100644 --- a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php +++ b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php @@ -61,4 +61,30 @@ public function testSaveMergedJsCssMustBeCleaned() $model->setValue('http://example.com/')->setPath(Store::XML_PATH_UNSECURE_BASE_URL); $model->afterSave(); } + + /** + * @dataProvider beforeSaveDataProvider + * @param string|null $value + * @param string|bool $expectedValue false if exception to be thrown + * @return void + */ + public function testBeforeSaveConvertLowerCase($value, $expectedValue) + { + $model = (new ObjectManager($this))->getObject(Baseurl::class); + $model->setValue($value); + $model->beforeSave(); + $this->assertEquals($expectedValue, $model->getValue()); + } + + /** + * @return array + */ + public function beforeSaveDataProvider() + { + return [ + ['https://Example1.com/', 'https://example1.com/'], + ['https://EXAMPLE2.COM/', 'https://example2.com/'], + ['HTtpS://ExamPLe3.COM/', 'https://example3.com/'], + ]; + } } From 614cbdc8fe1a45c150d0238009c3f2bc1c5464b9 Mon Sep 17 00:00:00 2001 From: Roger Date: Thu, 21 Mar 2024 17:52:30 +0000 Subject: [PATCH 031/460] update code --- .../Config/Test/Unit/Model/Config/Backend/BaseurlTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php index f2516cdff9702..675f92c93768b 100644 --- a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php +++ b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php @@ -64,8 +64,8 @@ public function testSaveMergedJsCssMustBeCleaned() /** * @dataProvider beforeSaveDataProvider - * @param string|null $value - * @param string|bool $expectedValue false if exception to be thrown + * @param string $value + * @param string $expectedValue * @return void */ public function testBeforeSaveConvertLowerCase($value, $expectedValue) From 8315e5798e092414b9a9eb7cb4de153101fb1c5f Mon Sep 17 00:00:00 2001 From: Saurabh Kumar Date: Thu, 28 Mar 2024 15:52:13 +0530 Subject: [PATCH 032/460] AC-9755: Set default collation to utf8mb4 for MySQL --- .../Schema/Db/MySQL/DbSchemaReader.php | 6 ++- .../Schema/Dto/Columns/StringBinary.php | 47 ++++++++++++++++++- .../Declaration/Schema/Dto/Columns/Text.php | 42 ++++++++++++++++- .../Definition/Columns/StringBinaryTest.php | 6 +++ 4 files changed, 95 insertions(+), 6 deletions(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php index d8c85ea9e206d..d1ff72329e5c7 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php @@ -21,7 +21,7 @@ class DbSchemaReader implements DbSchemaReaderInterface /** * Table type in information_schema.TABLES which allows to identify only tables and ignore views */ - const MYSQL_TABLE_TYPE = 'BASE TABLE'; + protected const MYSQL_TABLE_TYPE = 'BASE TABLE'; /** * @var ResourceConnection @@ -98,7 +98,9 @@ public function readColumns($tableName, $resource) 'nullable' => new Expression('IF(IS_NULLABLE="YES", true, false)'), 'definition' => 'COLUMN_TYPE', 'extra' => 'EXTRA', - 'comment' => new Expression('IF(COLUMN_COMMENT="", NULL, COLUMN_COMMENT)') + 'comment' => new Expression('IF(COLUMN_COMMENT="", NULL, COLUMN_COMMENT)'), + 'charset' => 'CHARACTER_SET_NAME', + 'collation' => 'COLLATION_NAME' ] ) ->where('TABLE_SCHEMA = ?', $dbName) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php index 4de198ae631f4..d9606c5e6621d 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php @@ -34,6 +34,16 @@ class StringBinary extends Column implements */ private $length; + /** + * @var string|null + */ + protected $charset; + + /** + * @var string|null + */ + protected $collation; + /** * Constructor. * @@ -45,6 +55,10 @@ class StringBinary extends Column implements * @param string $default * @param string|null $comment * @param string|null $onCreate + * @param string|null $charset + * @param string|null $collation + * + * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( string $name, @@ -54,12 +68,16 @@ public function __construct( bool $nullable = true, string $default = null, string $comment = null, - string $onCreate = null + string $onCreate = null, + ?string $charset = 'utf8mb4', + ?string $collation = 'utf8mb4_general_ci' ) { parent::__construct($name, $type, $table, $comment, $onCreate); $this->nullable = $nullable; $this->default = $default; $this->length = $length; + $this->charset = $charset; + $this->collation = $collation; } /** @@ -92,17 +110,42 @@ public function getLength() return $this->length; } + /** + * Get collation + * + * @return string|null + */ + public function getCollation(): ?string + { + return $this->collation; + } + + /** + * Get charset + * + * @return string|null + */ + public function getCharset(): ?string + { + return $this->charset; + } + /** * @inheritdoc */ public function getDiffSensitiveParams() { - return [ + $param = [ 'type' => $this->getType(), 'nullable' => $this->isNullable(), 'default' => $this->getDefault(), 'length' => $this->getLength(), 'comment' => $this->getComment() ]; + if ($this->getType() == "varchar") { + $param['collation'] = $this->getCollation(); + $param['charset'] = $this->getCharset(); + } + return $param; } } diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php index b127d5d50e08c..d453df6122b1c 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php @@ -22,6 +22,16 @@ class Text extends Column implements */ private $nullable; + /** + * @var string|null + */ + protected $charset; + + /** + * @var string|null + */ + protected $collation; + /** * Constructor. * @@ -31,6 +41,8 @@ class Text extends Column implements * @param bool $nullable * @param string|null $comment * @param string|null $onCreate + * @param string|null $charset + * @param string|null $collation */ public function __construct( string $name, @@ -38,10 +50,14 @@ public function __construct( Table $table, bool $nullable = true, string $comment = null, - string $onCreate = null + string $onCreate = null, + ?string $charset = 'utf8mb4', + ?string $collation = 'utf8mb4_general_ci' ) { parent::__construct($name, $type, $table, $comment, $onCreate); $this->nullable = $nullable; + $this->charset = $charset; + $this->collation = $collation; } /** @@ -54,6 +70,26 @@ public function isNullable() return $this->nullable; } + /** + * Get collation + * + * @return string|null + */ + public function getCollation(): ?string + { + return $this->collation; + } + + /** + * Get charset + * + * @return string|null + */ + public function getCharset(): ?string + { + return $this->charset; + } + /** * @inheritdoc */ @@ -62,7 +98,9 @@ public function getDiffSensitiveParams() return [ 'type' => $this->getType(), 'nullable' => $this->isNullable(), - 'comment' => $this->getComment() + 'comment' => $this->getComment(), + 'collation' => $this->getCollation(), + 'charset' => $this->getCharset() ]; } } diff --git a/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php b/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php index 202aeae58e903..2d6952f367b47 100644 --- a/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php +++ b/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php @@ -88,6 +88,12 @@ public function testToDefinition() $column->expects($this->any()) ->method('getLength') ->willReturn(50); + $column->expects($this->any()) + ->method('getCollation') + ->willReturn('utf8mb4_general_ci'); + $column->expects($this->any()) + ->method('getCharset') + ->willReturn('utf8mb4'); $column->expects($this->any()) ->method('getDefault') ->willReturn('test'); From 548cd5a33d6d0b88108fc29b657abb4e42e34543 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar Date: Thu, 4 Apr 2024 08:39:07 +0530 Subject: [PATCH 033/460] AC-9755: Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Ddl/Table.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index 5ba54368c188d..3037f0b693515 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -235,7 +235,7 @@ class Table * * @var array */ - protected $_options = ['type' => 'INNODB', 'charset' => 'utf8', 'collate' => 'utf8_general_ci']; + protected $_options = ['type' => 'INNODB', 'charset' => 'utf8mb4', 'collate' => 'utf8mb4_general_ci']; /** * Set table name From 2340b80790e39c6ed1e6e65285aa57475e8cab97 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar Date: Thu, 4 Apr 2024 21:34:40 +0530 Subject: [PATCH 034/460] AC-9755: Set default collation to utf8mb4 for MySQL --- .../Magento/Framework/DB/Ddl/Table.php | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index 3037f0b693515..0cfa50b7df5a1 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -6,6 +6,8 @@ namespace Magento\Framework\DB\Ddl; use Magento\Framework\DB\Adapter\AdapterInterface; +use Magento\Framework\Setup\Declaration\Schema\Dto\Factories\Table as DtoTable; +use Magento\Framework\App\ObjectManager; /** * Data Definition for table @@ -235,7 +237,23 @@ class Table * * @var array */ - protected $_options = ['type' => 'INNODB', 'charset' => 'utf8mb4', 'collate' => 'utf8mb4_general_ci']; + protected $_options = ['type' => 'INNODB', 'charset' => 'utf8', 'collate' => 'utf8_general_ci']; + + /** + * @var DtoTable + */ + protected DtoTable $DtoTable; + + /*** + * constructor + * + * @param DtoTable|null $DtoTable $DtoTable + */ + public function __construct( + DtoTable $DtoTable = null + ) { + $this->DtoTable = $DtoTable ?: ObjectManager::getInstance()->get(DtoTable::class); + } /** * Set table name @@ -636,16 +654,29 @@ public function setOption($key, $value) /** * Retrieve table option value by option name * - * Return null if option does not exits + * Return null if option does not exist * * @param string $key * @return null|string + * @throws \ReflectionException */ public function getOption($key) { if (!isset($this->_options[$key])) { return null; } + if (strtolower($key) == 'charset') { + $refClass = new \ReflectionClass(DtoTable::class); + $refMethod = $refClass->getMethod('getDefaultCharset'); + $refMethod->setAccessible(true); + return $refMethod->invoke($this->DtoTable); + } + if (strtolower($key) == 'collate') { + $refClass = new \ReflectionClass(DtoTable::class); + $refMethod = $refClass->getMethod('getDefaultCollation'); + $refMethod->setAccessible(true); + return $refMethod->invoke($this->DtoTable); + } return $this->_options[$key]; } From 5c900967af9b36dad4ef0ce0068ae26065d08b88 Mon Sep 17 00:00:00 2001 From: mani mallelli Date: Wed, 24 Apr 2024 16:56:22 +0530 Subject: [PATCH 035/460] ACQE-5754:Create Order Using PayPalExpress Checkout With Payment Action Is Sale --- ...alExpressCheckoutMethodAndFlatRateTest.xml | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml new file mode 100644 index 0000000000000..9ac158c3cb000 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -0,0 +1,105 @@ + + + + + + + + + + <description value="Create Order Using PayPalExpress Checkout With Payment Action Is Sale."/> + <severity value="MAJOR"/> + <testCaseId value="AC-6147"/> + <group value="3rd_party_integration"/> + </annotations> + <before> + <!-- Create Category and Product --> + <createData entity="_defaultCategory" stepKey="createCategory"/> + <createData entity="_defaultProduct" stepKey="createProduct"> + <field key="price">10</field> + <requiredEntity createDataKey="createCategory"/> + </createData> + <!-- Create Customer --> + <createData entity="Simple_US_Customer" stepKey="createCustomer"/> + <!-- Admin Login --> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <!-- Enabling PayPal Express Checkout --> + <actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="configPayPalExpress"> + <argument name="credentials" value="SamplePaypalExpressConfig2"/> + </actionGroup> + <!-- Changing PayPal Express Checkout Basic Settings --> + <magentoCLI command="config:set {{StorefrontPaypalExpressSalePaymentActionOptionConfigData.path}} {{StorefrontPaypalExpressSalePaymentActionOptionConfigData.value}}" stepKey="changePaymentAction"/> + <!--Login to storefront as previously created customer--> + <actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginAsCustomer"> + <argument name="Customer" value="$$createCustomer$$"/> + </actionGroup> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCache"> + <argument name="tags" value=""/> + </actionGroup> + <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="amOnProductPage"> + <argument name="product" value="$createProduct$"/> + </actionGroup> + <actionGroup ref="AddProductWithQtyToCartFromStorefrontProductPageActionGroup" stepKey="addProductToCart"> + <argument name="productName" value="$$createProduct.name$$"/> + <argument name="productQty" value="2"/> + </actionGroup> + <!-- Go to Checkout --> + <actionGroup ref="OpenStoreFrontCheckoutShippingPageActionGroup" stepKey="goToCheckoutPage"/> + <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatRate"> + <argument name="shippingMethodName" value="Flat Rate"/> + </actionGroup> + <!-- Go to Order review --> + <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> + <waitForElementClickable selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="waitForPayPalExpressCheckoutIsPresent"/> + <click selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="clickPayPalExpressCheckout"/> + <waitForPageLoad stepKey="waitForPaypalExpressCheckoutToBeLoaded"/> + <!-- Click on Paypal paypal button--> + <actionGroup ref="SwitchToPayPalGroupBtnActionGroup" stepKey="clickPayPalBtn"/> + <!--Login to Paypal in-context--> + <actionGroup ref="StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup" stepKey="LoginToPayPal"/> + <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> + <!-- See order successful Page instead of Order Review Page --> + <waitForElement selector="{{CheckoutSuccessMainSection.successTitle}}" stepKey="waitForLoadSuccessPageTitle"/> + <waitForElement selector="{{CheckoutSuccessMainSection.success}}" stepKey="waitForLoadSuccessPage"/> + <!--Grab order number--> + <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="waitForOrderNumberToBeGrabbed"/> + <grabTextFrom selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="grabOrderNumber"/> + </before> + <!--Go to admin sales page and open the order id--> + <actionGroup ref="OpenOrderByIdActionGroup" stepKey="openOrder"> + <argument name="orderId" value="{$grabOrderNumber}"/> + </actionGroup> + <!--Assert the total--> + <waitForText selector="{{AdminOrderTotalSection.grandTotal}}" userInput="$30.00" stepKey="checkGrandTotal"/> + <!--Grab the transaction id--> + <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForTransactionIDFieldToBeAppeared"/> + <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabTransactionID"/> + <!--Open comment history tab and assert the comment--> + <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistory"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Ordered amount')}}" userInput="Ordered amount of $30.00 Transaction ID: "{$grabTransactionID}"" stepKey="seeOrderHistoryNotes"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderStatus}}" userInput="Processing" stepKey="assertOrderStatusInCommentsHistorySection"/> + <!-- Open Invoice and check --> + <actionGroup ref="AdminOpenInvoiceFromOrderPageActionGroup" stepKey="openInvoiceFromOrder"/> + <after> + <!-- delete category and product --> + <deleteData createDataKey="createCategory" stepKey="deleteCategory"/> + <deleteData createDataKey="createProduct" stepKey="deleteProduct"/> + <!-- Disable PayPal Express Checkout and Basic setting change --> + <actionGroup ref="AdminPayPalExpressCheckoutDisableActionGroup" stepKey="configPaypalExpressCheckoutDisable"/> + <magentoCLI command="config:set {{StorefrontPaypalExpressAuthorizationPaymentActionOptionConfigData.path}} {{StorefrontPaypalExpressAuthorizationPaymentActionOptionConfigData.value}}" stepKey="paymentActionChangeToAuthorization"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/> + <!--Delete customer --> + <actionGroup ref="StorefrontCustomerLogoutActionGroup" stepKey="logoutCustomer" /> + <deleteData stepKey="deleteCustomer" createDataKey="createCustomer"/> + </after> + </test> +</tests> From c6d80ef2719e85f79e7452d6993b3483257becbf Mon Sep 17 00:00:00 2001 From: Shanthi Rajendran <glo25731@adobe.com> Date: Tue, 30 Apr 2024 15:25:56 +0530 Subject: [PATCH 036/460] ACQE-6326: UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest Moved files from currency symbol to Directory Module --- ...NavigateToCurrencySetupPageActionGroup.xml | 15 ------------ .../AdminExpandCurrencyOptionsActionGroup.xml | 0 .../AdminImportCurrencyRatesActionGroup.xml | 23 +++++++++++++++++++ ...NavigateToCurrencySetupPageActionGroup.xml | 1 + .../AdminSetDefaultCurrencyActionGroup.xml | 0 .../Section/AdminCurrencyRatesSection.xml | 16 +++++++++++++ .../Section/AdminCurrencySetupSection.xml | 15 ++++++++++++ ...orQuotesInStatusesOrderedAndClosedTest.xml | 0 8 files changed, 55 insertions(+), 15 deletions(-) delete mode 100644 app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml rename app/code/Magento/{CurrencySymbol => Directory}/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml (100%) create mode 100644 app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml rename app/code/Magento/{CurrencySymbol => Directory}/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml (100%) create mode 100644 app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml create mode 100644 app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml rename app/code/Magento/{CurrencySymbol => Directory}/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml (100%) diff --git a/app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml b/app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml deleted file mode 100644 index c1f0cd004a592..0000000000000 --- a/app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminNavigateToCurrencySetupPageActionGroup"> - <amOnPage url="{{ConfigCurrencySetupPage.url}}" stepKey="navigateToConfigCurrencySetupPage1"/> - <waitForPageLoad stepKey="waitForPageLoad"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml similarity index 100% rename from app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml rename to app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml diff --git a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml new file mode 100644 index 0000000000000..d7b3588227d82 --- /dev/null +++ b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml @@ -0,0 +1,23 @@ +?xml version="1.0" encoding="UTF-8"?> + <!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + --> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminImportCurrencyRatesActionGroup"> + <annotations> + <description>Admin imports currency rate.</description> + </annotations> + <arguments> + <argument name="rateService" type="string" defaultValue="Fixer.io"/> + </arguments> + <selectOption selector="{{AdminCurrencyRatesSection.rateService}}" userInput="{{rateService}}" stepKey="selectRateService"/> + <waitForElementClickable selector="{{AdminCurrencyRatesSection.import}}" stepKey="waitToClickImport"/> + <click selector="{{AdminCurrencyRatesSection.import}}" stepKey="clickImport"/> + <waitForElementVisible selector="{{AdminCurrencyRatesSection.oldRate}}" stepKey="waitForOldRateVisible"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml index 0f0237ee8ec33..8d50bbe05a693 100644 --- a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml +++ b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml @@ -13,5 +13,6 @@ <description>Go to the currency setup admin configuration page.</description> </annotations> <amOnPage url="{{AdminCurrencySetupPage.url}}" stepKey="goToCurrencySetupPage"/> + <waitForPageLoad stepKey="waitForPageLoad"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml similarity index 100% rename from app/code/Magento/CurrencySymbol/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml rename to app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml diff --git a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml new file mode 100644 index 0000000000000..74894dec28afd --- /dev/null +++ b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="AdminCurrencyRatesSection"> + <element name="import" type="button" selector="//button[@title='Import']"/> + <element name="oldRateLabel" type="text" selector="//div[contains(@class, 'admin__field-note') and contains(text(), 'Old rate:')]"/> + <element name="rateService" type="select" selector="#rate_services"/> + </section> +</sections> diff --git a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml new file mode 100644 index 0000000000000..3a1eca3ef5ab9 --- /dev/null +++ b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="CurrencySetupSection"> + <element name="defaultCurrency" type="select" selector="#currency_options_default"/> + <element name="defaultdisplayCurrency" type="select" selector="#currency_options_default_inherit"/> + </section> +</sections> diff --git a/app/code/Magento/CurrencySymbol/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml b/app/code/Magento/Directory/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml similarity index 100% rename from app/code/Magento/CurrencySymbol/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml rename to app/code/Magento/Directory/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml From 395396ae2c08479ad640e4f8188ff57966b550b9 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Thu, 2 May 2024 11:04:22 +0530 Subject: [PATCH 037/460] ACQE-6491:Default configuration for Paypal Pay Later Message on Checkout Page --- .../CheckValuesForCartConfigActionGroup.xml | 21 +++++++++ ...PaypalPaylaterConfigurationActionGroup.xml | 19 ++++++++ .../PayPalCheckoutCartConfigSection.xml | 20 +++++++++ ...aylaterPaypalExpressCheckoutConfigTest.xml | 43 +++++++++++++++++++ 4 files changed, 103 insertions(+) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml new file mode 100644 index 0000000000000..e7d386363d46d --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml @@ -0,0 +1,21 @@ +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="CheckValuesForCartConfigActionGroup" > + <annotations> + <description>Check the default Dropdown Values Available in Checkout Cart Page.</description> + </annotations> + <selectOption selector ="{{PayPalCheckoutCartConfigSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.stylelayout('us')}}" userInput="Text" stepKey="seeSelectedStylelayout"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logotype('us')}}" userInput="Primary" stepKey="seeSelectedlogotype"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoposition('us')}}" userInput="Left" stepKey="seeSelectedlogoposition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textcolor('us')}}" userInput="Black" stepKey="seeSelectedtextcolor"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml new file mode 100644 index 0000000000000..614fbbf7bfce1 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml @@ -0,0 +1,19 @@ +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="EnablePaypalPaylaterConfigurationActionGroup" > + <annotations> + <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> + </annotations> + <waitForPageLoad stepKey="waitForadvisepaylaterdropdown"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablepaypallater"/> + <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="waitForcheckoutcartpageclickable"/> + <click selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="clickCheckoutCart"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml new file mode 100755 index 0000000000000..3bd4801cb0845 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="PayPalCheckoutCartConfigSection"> + <element name="expandcheckoutcartpage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> + <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> + <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> + <element name="stylelayout" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_stylelayout" parameterized="true" /> + <element name="logotype" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logotype" parameterized="true" /> + <element name="logoposition" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logoposition" parameterized="true" /> + <element name="textcolor" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_textcolor" parameterized="true" /> + </section> +</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml new file mode 100644 index 0000000000000..ab1109437da5b --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="EnablePaypalPaylaterPaypalExpressCheckoutConfigTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="configuration for paypal pay later on checkout page"/> + <description value="Paypal Pay Later Message should display on Admin Checkout Cart Page configuration"/> + <severity value="CRITICAL"/> + <testCaseId value="AC-5667"/> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> + </before> + <after> + <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> + </after> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <!--Enable Paypal Express Checkout Paylater Solution --> + <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> + </actionGroup> + <!--Check default values selected in dropdown --> + <actionGroup ref="CheckValuesForCartConfigActionGroup" stepKey="checkValuesForCartConfiguration"> + </actionGroup> + <!--Click on Save configure Button --> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> + </actionGroup> + <!-- Reindex and cache flush --> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexPage"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCachePage"> + <argument name="tags" value=""/> + </actionGroup> + </test> +</tests> From 156cfdb41e5fe88603dc60095743a887b6c20705 Mon Sep 17 00:00:00 2001 From: Shanthi Rajendran <glo25731@adobe.com> Date: Thu, 2 May 2024 12:10:36 +0530 Subject: [PATCH 038/460] ACQE-6326: UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest Renamed section file's class name --- .../Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml index 3a1eca3ef5ab9..e5810b4f10285 100644 --- a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml +++ b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml @@ -8,7 +8,7 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="CurrencySetupSection"> + <section name="AdminCurrencySetupSection"> <element name="defaultCurrency" type="select" selector="#currency_options_default"/> <element name="defaultdisplayCurrency" type="select" selector="#currency_options_default_inherit"/> </section> From 67b0af8b4373bb04c3546223e4dda0a64ef3b1ee Mon Sep 17 00:00:00 2001 From: glo06716 <glo06716@adobe.com> Date: Fri, 19 Apr 2024 11:15:19 +0530 Subject: [PATCH 039/460] ACQE-6445 : AC-5185:Guest Checkout Using PayPal Payments Standard and Flat Rate fixedStaticCheckFailureInGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest createdAdminCreateApiConfigurableProductForPayPalActionGroupinPaypalMOdule addedSamplePaypalExpressConfig2ForPalStandardPayment Changes made to fix test failure Added SimpleTaxRateCA AddedSubmitInvoiceOrder changesFileNameFormatForTestFileAndActionGroupFile --- .../Catalog/Test/Mftf/Data/ProductData.xml | 26 +++ .../Mftf/Data/ConfigurableProductData.xml | 11 ++ ...onfigurableProductForPayPalActionGroup.xml | 68 ++++++++ ...ndardEnableForGuestCheckoutActionGroup.xml | 38 +++++ ...tInPaymentPageGuestCheckoutActionGroup.xml | 18 +++ ...PayPalPaymentAccountTwoStepActionGroup.xml | 1 + ...tandardPaymentGuestCheckoutActionGroup.xml | 17 ++ .../Test/Mftf/Data/PaypalConfigData.xml | 12 ++ .../Paypal/Test/Mftf/Data/PaypalData.xml | 8 + ...yPalStandardConfigGuestCheckoutSection.xml | 22 +++ .../CheckoutPaymentSection.xml | 1 + .../Suite/ConfigPayPalStandardNewSuite.xml | 35 ++++ ...gPayPalPaymentsStandardAndFlatRateTest.xml | 150 ++++++++++++++++++ ...ectnessInvoicedItemInBundleProductTest.xml | 4 +- 14 files changed, 409 insertions(+), 2 deletions(-) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml diff --git a/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml b/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml index 4f16376957318..1b5b457f8d03d 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml @@ -325,6 +325,19 @@ <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> <requiredEntity type="custom_attribute">CustomAttributeProductAttribute</requiredEntity> </entity> + <entity name="ApiSimpleOne1" type="product2"> + <data key="name" unique="suffix">Api Simple Product</data> + <data key="sku" unique="suffix">api-simple-product</data> + <data key="urlKey" unique="suffix">api-simple-product</data> + <data key="type_id">simple</data> + <data key="attribute_set_id">4</data> + <data key="visibility">4</data> + <data key="price">1</data> + <data key="status">1</data> + <data key="quantity">1</data> + <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> + <requiredEntity type="custom_attribute">CustomAttributeProductAttribute</requiredEntity> + </entity> <entity name="ApiSimpleProductWithCategory" type="product2" extends="ApiSimpleOne"> <requiredEntity type="custom_attribute">CustomAttributeCategoryIds</requiredEntity> </entity> @@ -357,6 +370,19 @@ <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> <requiredEntity type="custom_attribute">CustomAttributeProductAttribute</requiredEntity> </entity> + <entity name="ApiSimpleTwo1" type="product2"> + <data key="name" unique="suffix">Api Simple Product Two</data> + <data key="sku" unique="suffix">api-simple-product-two</data> + <data key="urlKey" unique="suffix">api-simple-product-two</data> + <data key="type_id">simple</data> + <data key="attribute_set_id">4</data> + <data key="visibility">4</data> + <data key="price">1</data> + <data key="status">1</data> + <data key="quantity">1</data> + <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> + <requiredEntity type="custom_attribute">CustomAttributeProductAttribute</requiredEntity> + </entity> <entity name="ApiSimpleProductWithPrice50" type="product2" extends="ApiSimpleOne"> <data key="price">50</data> </entity> diff --git a/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml b/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml index f07faf4087c33..96493beb0114d 100644 --- a/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml +++ b/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml @@ -47,6 +47,17 @@ <data key="quantity">100</data> <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> </entity> + <entity name="ApiConfigurableProductWithOutCategory1" type="product"> + <data key="sku" unique="suffix">api-configurable-product-with-out-category</data> + <data key="type_id">configurable</data> + <data key="attribute_set_id">4</data> + <data key="visibility">4</data> + <data key="name" unique="suffix">API Configurable Product</data> + <data key="urlKey" unique="suffix">api-configurable-product</data> + <data key="status">1</data> + <data key="quantity">1</data> + <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> + </entity> <entity name="ApiConfigurableProductWithDescription" type="product"> <data key="sku" unique="suffix">api-configurable-product</data> <data key="type_id">configurable</data> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml new file mode 100644 index 0000000000000..66055a1c1eeee --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminCreateApiConfigurableProductForPayPalActionGroup"> + <annotations> + <description>Creates a Configurable Product with 2 Product Options via the API.</description> + </annotations> + <arguments> + <argument name="productName" defaultValue="{{ApiConfigurableProductWithOutCategory.name}}" type="string"/> + </arguments> + + <!-- Create the configurable product based on the data in the /data folder --> + <createData entity="ApiConfigurableProductWithOutCategory1" stepKey="createConfigProduct"> + <field key="name">{{productName}}</field> + </createData> + + <!-- Create attribute with 2 options to be used in children products --> + <createData entity="productAttributeWithTwoOptions" stepKey="createConfigProductAttribute"/> + <createData entity="productAttributeOption1" stepKey="createConfigProductAttributeOption1"> + <requiredEntity createDataKey="createConfigProductAttribute"/> + </createData> + <createData entity="productAttributeOption2" stepKey="createConfigProductAttributeOption2"> + <requiredEntity createDataKey="createConfigProductAttribute"/> + </createData> + <createData entity="AddToDefaultSet" stepKey="addAttributeToAttributeSet"> + <requiredEntity createDataKey="createConfigProductAttribute"/> + </createData> + <getData entity="ProductAttributeOptionGetter" index="1" stepKey="getConfigAttributeOption1"> + <requiredEntity createDataKey="createConfigProductAttribute"/> + </getData> + <getData entity="ProductAttributeOptionGetter" index="2" stepKey="getConfigAttributeOption2"> + <requiredEntity createDataKey="createConfigProductAttribute"/> + </getData> + + <!-- Create the 2 children that will be a part of the configurable product --> + <createData entity="ApiSimpleOne1" stepKey="createConfigChildProduct1"> + <requiredEntity createDataKey="createConfigProductAttribute"/> + <requiredEntity createDataKey="getConfigAttributeOption1"/> + </createData> + <createData entity="ApiSimpleTwo1" stepKey="createConfigChildProduct2"> + <requiredEntity createDataKey="createConfigProductAttribute"/> + <requiredEntity createDataKey="getConfigAttributeOption2"/> + </createData> + + <!-- Assign the two products to the configurable product --> + <createData entity="ConfigurableProductTwoOptions" stepKey="createConfigProductOption"> + <requiredEntity createDataKey="createConfigProduct"/> + <requiredEntity createDataKey="createConfigProductAttribute"/> + <requiredEntity createDataKey="getConfigAttributeOption1"/> + <requiredEntity createDataKey="getConfigAttributeOption2"/> + </createData> + <createData entity="ConfigurableProductAddChild" stepKey="createConfigProductAddChild1"> + <requiredEntity createDataKey="createConfigProduct"/> + <requiredEntity createDataKey="createConfigChildProduct1"/> + </createData> + <createData entity="ConfigurableProductAddChild" stepKey="createConfigProductAddChild2"> + <requiredEntity createDataKey="createConfigProduct"/> + <requiredEntity createDataKey="createConfigChildProduct2"/> + </createData> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml new file mode 100644 index 0000000000000..c7df395a044c9 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminPayPalStandardEnableForGuestCheckoutActionGroup"> + <annotations> + <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> + </annotations> + <arguments> + <argument name="credentials" defaultValue="SamplePaypalExpressConfig2"/> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForPageLoad1"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="expandOtherPaypalConfigButton"/> + <conditionalClick selector="{{AdminPayPalStandardConfigGuestCheckoutSection.enablePaymentSolution(countryCode)}}" dependentSelector="{{AdminPayPalStandardConfigGuestCheckoutSection.enablePaymentSolutionActive(countryCode)}}" visible="false" stepKey="expandPaymentSolutionContentTab"/> + <scrollTo selector="{{AdminPayPalStandardConfigGuestCheckoutSection.configureBtn(countryCode)}}" x="0" y="-80" stepKey="scrollToConfigure"/> + <waitForElementClickable selector="{{AdminPayPalStandardConfigGuestCheckoutSection.configureBtn(countryCode)}}" stepKey="waitForPayPalStandardConfigureBtn" /> + <click selector="{{AdminPayPalStandardConfigGuestCheckoutSection.configureBtn(countryCode)}}" stepKey="clickPayPalStandardConfigureBtn"/> + <waitForElementVisible selector="{{AdminPayPalStandardConfigGuestCheckoutSection.email(countryCode)}}" stepKey="waitForEmailTab"/> + <fillField selector ="{{AdminPayPalStandardConfigGuestCheckoutSection.email(countryCode)}}" userInput="{{credentials.paypal_express_email}}" stepKey="inputEmailAssociatedWithPayPalMerchantAccount"/> + <selectOption selector ="{{AdminPayPalStandardConfigGuestCheckoutSection.apiMethod(countryCode)}}" userInput="API Signature" stepKey="inputAPIAuthenticationMethods"/> + <fillField selector ="{{AdminPayPalStandardConfigGuestCheckoutSection.username(countryCode)}}" userInput="{{credentials.paypal_express_api_username}}" stepKey="inputAPIUsername"/> + <fillField selector ="{{AdminPayPalStandardConfigGuestCheckoutSection.password(countryCode)}}" userInput="{{credentials.paypal_express_api_password}}" stepKey="inputAPIPassword"/> + <fillField selector ="{{AdminPayPalStandardConfigGuestCheckoutSection.signature(countryCode)}}" userInput="{{credentials.paypal_express_api_signature}}" stepKey="inputAPISignature"/> + <selectOption selector ="{{AdminPayPalStandardConfigGuestCheckoutSection.sandboxMode(countryCode)}}" userInput="Yes" stepKey="enableSandboxMode"/> + <selectOption selector="{{AdminPayPalStandardConfigGuestCheckoutSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> + <waitForElementClickable selector="{{AdminConfigSection.saveButton}}" stepKey="waitForConfigureBtn" /> + <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/> + <waitForPageLoad stepKey="waitForPageLoad2"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml new file mode 100644 index 0000000000000..2694315c63cc4 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <!--Create Shipment With Tracking Number--> + <actionGroup name="AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup"> + <waitForElementClickable selector="{{CheckoutPaymentSection.PayPalPaymentRadio}}" stepKey="waitForPayPalRadioButton"/> + <click selector="{{CheckoutPaymentSection.PayPalPaymentRadio}}" stepKey="selectPaypalPayment"/> + <waitForElementClickable selector="{{CheckoutPaymentSection.ContinuePayPalBtn1}}" stepKey="waitForPayPalBtn"/> + <click selector="{{CheckoutPaymentSection.ContinuePayPalBtn1}}" stepKey="clickPayPalBtn"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml index 0a1077e0c18eb..cd1be504572da 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml @@ -24,6 +24,7 @@ <waitForElementVisible selector="{{PayPalPaymentSection.password}}" stepKey="waitForPasswordField"/> <click selector="{{PayPalPaymentSection.password}}" stepKey="focusOnPasswordField"/> <fillField selector="{{PayPalPaymentSection.password}}" userInput="{{credentials.magento/PAYPAL_PWD}}" stepKey="fillPassword"/> + <waitForElementClickable selector="{{PayPalPaymentSection.loginBtn}}" stepKey="waitForLoginBtn"/> <click selector="{{PayPalPaymentSection.loginBtn}}" stepKey="login"/> <waitForPageLoad stepKey="wait"/> </actionGroup> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml new file mode 100644 index 0000000000000..4ea51ff3a2a84 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup" extends="StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup"> + <annotations> + <description>remove click btn which is not coming when we login with paypal standard payment enabled</description> + </annotations> + <remove keyForRemoval="clickNext"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml index 59c7090956712..7d431a3399ac3 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml @@ -317,4 +317,16 @@ <data key="path">payment/payflowpro_cc_vault/active</data> <data key="value">0</data> </entity> + <entity name="StorefrontPaypalStandardAuthorizationPaymentActionOptionConfigData"> + <data key="path">payment/paypal_standard/payment_action</data> + <data key="scope_id">1</data> + <data key="label">No</data> + <data key="value">Authorization</data> + </entity> + <entity name="StorefrontPaypalStandardAuthorizationPaymentActionOptionConfigDataToDefaultValue"> + <data key="path">payment/paypal_standard/payment_action</data> + <data key="scope_id">1</data> + <data key="label">No</data> + <data key="value">Order</data> + </entity> </entities> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index 4e88bbe73e2e6..8995fa960e6b8 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -229,4 +229,12 @@ <data key="paypal_paymentspro_vendor">MksGLTest</data> <data key="paypal_paymentspro_password">Abcd@123</data> </entity> + <entity name="EnablePaypalPayStandardNew"> + <data key="path">payment/wps_express/active</data> + <data key="value">1</data> + </entity> + <entity name="DisablePaypalPayStandardNew"> + <data key="path">payment/wps_express/active</data> + <data key="value">0</data> + </entity> </entities> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml new file mode 100644 index 0000000000000..ad0103d4461c3 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="AdminPayPalStandardConfigGuestCheckoutSection"> + <element name="configureBtn" type="button" selector="//button[@id='payment_{{countryCode}}_paypal_group_all_in_one_wps_express-head']" parameterized="true"/> + <element name="email" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express_express_checkout_required_express_checkout_required_express_checkout_business_account" parameterized="true"/> + <element name="apiMethod" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express_express_checkout_required_express_checkout_required_express_checkout_api_authentication" parameterized="true"/> + <element name="username" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express_express_checkout_required_express_checkout_required_express_checkout_api_username" parameterized="true"/> + <element name="password" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express_express_checkout_required_express_checkout_required_express_checkout_api_password" parameterized="true"/> + <element name="signature" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express_express_checkout_required_express_checkout_required_express_checkout_api_signature" parameterized="true"/> + <element name="sandboxMode" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express_express_checkout_required_express_checkout_required_express_checkout_sandbox_flag" parameterized="true"/> + <element name="enableSolution" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express_express_checkout_required_enable_express_checkout" parameterized="true"/> + <element name="enablePaymentSolution" type="button" selector="//a[@id='payment_{{countryCode}}_paypal_group_all_in_one-head']" parameterized="true"/> + <element name="enablePaymentSolutionActive" type="button" selector="//div[@class='section-config complex paypal-other-section paypal-all-in-one-section active']//a[@id='payment_{{countryCode}}_paypal_group_all_in_one-head']" parameterized="true"/> + </section> +</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/CheckoutPaymentSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/CheckoutPaymentSection.xml index 2156add4f01ac..10b97c020b83e 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/CheckoutPaymentSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/CheckoutPaymentSection.xml @@ -13,5 +13,6 @@ <element name="smartButtonPayPalFrame" type="iframe" selector=".component-frame" timeout="10"/> <element name="PayPalPaymentRadio" type="radio" selector="input#paypal_express.radio" timeout="30"/> <element name="PayPalBtn" type="radio" selector=".paypal-button.paypal-button-number-0" timeout="30"/> + <element name="ContinuePayPalBtn1" type="button" selector="//span[text()='Continue to PayPal']"/> </section> </sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml new file mode 100644 index 0000000000000..734e5ff6389bb --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> + <suite name="ConfigPayPalStandardNewSuite"> + <before> + <!-- Login --> + <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> + <!--Config PayPal Standard--> + <actionGroup ref="AdminPayPalStandardEnableForGuestCheckoutActionGroup" stepKey="ConfigPayPalStandard"/> + <magentoCLI command="config:set {{StorefrontPaypalExpressAuthorizationPaymentActionOptionConfigData.path}} {{StorefrontPaypalExpressAuthorizationPaymentActionOptionConfigData.value}}" stepKey="setPaymentAction"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexConfig"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + </before> + <after> + <!-- Cleanup PayPal Standard configurations --> + <magentoCLI command="config:set {{DisablePaypalPayStandardNew.path}} {{DisablePaypalPayStandardNew.value}}" stepKey="disablePayPalStandard"/> + <magentoCLI command="config:set {{StorefrontPaypalStandardAuthorizationPaymentActionOptionConfigDataToDefaultValue.path}} {{StorefrontPaypalStandardAuthorizationPaymentActionOptionConfigDataToDefaultValue.value}}" stepKey="setPaymentActionToOrder"/> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + </after> + <include> + <group name="paypalStandard"/> + </include> + </suite> +</suites> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml new file mode 100644 index 0000000000000..0415710d00c9a --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest"> + <annotations> + <features value="PayPal"/> + <stories value="Paypal Payments Standard Checkout Configuration"/> + <title value="Paypal Payments Standard Checkout configuration with valid credentials"/> + <description value="As a customer I want to be able to place and Order using PayPal Payments Standard with Flat Rate"/> + <severity value="CRITICAL"/> + <testCaseId value="AC-5185"/> + <group value="paypalStandard"/> + <group value="3rd_party_integration" /> +<!-- <group value="pr_exclude"/>--> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <!--Create category and simple product--> + <createData entity="SimpleSubCategory" stepKey="createCategory"/> + <createData entity="_defaultProduct" stepKey="createSimpleProduct"> + <field key="qty">120</field> + <field key="price">10</field> + <requiredEntity createDataKey="createCategory"/> + </createData> + <!--Create configurable product--> + <actionGroup ref="AdminCreateApiConfigurableProductForPayPalActionGroup" stepKey="createConfigurableProduct"/> + <!--Create bundle product--> + <createData entity="ApiBundleProductPriceViewRange" stepKey="createBundleProduct"> + <requiredEntity createDataKey="createCategory"/> + </createData> + <createData entity="DropDownBundleOption" stepKey="bundleOption"> + <requiredEntity createDataKey="createBundleProduct"/> + </createData> + <createData entity="ApiBundleLink" stepKey="createBundleLink1"> + <requiredEntity createDataKey="createBundleProduct"/> + <requiredEntity createDataKey="bundleOption"/> + <requiredEntity createDataKey="createSimpleProduct"/> + <field key="qty">11</field> + </createData> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexConfig"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCacheConfig"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!--Add new tax rates. Go to tax rule page --> + <actionGroup ref="AddNewTaxRuleActionGroup" stepKey="addFirstTaxRuleActionGroup"/> + <fillField stepKey="fillRuleName" selector="{{AdminTaxRulesSection.ruleName}}" userInput="{{TaxRule.name}}"/> + <!-- Adding product rate tax for CA --> + <actionGroup ref="AddNewTaxRateNoZipUIActionGroup" stepKey="addProductTaxRateForCA"> + <argument name="taxCode" value="SimpleTaxCA"/> + </actionGroup> + <!-- Save Tax Rule --> + <actionGroup ref="ClickSaveButtonActionGroup" stepKey="saveAnotherTaxRule"> + <argument name="message" value="You saved the tax rule."/> + </actionGroup> + </before> + <after> + <!--Delete created data--> + <deleteData createDataKey="createCategory" stepKey="deleteCategory"/> + <deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/> + <deleteData createDataKey="createBundleProduct" stepKey="deleteBundleProduct"/> + <deleteData createDataKey="createConfigProductCreateConfigurableProduct" stepKey="deleteConfigurableProduct"/> + <deleteData createDataKey="createConfigProductAttributeCreateConfigurableProduct" stepKey="deleteConfigProductAttribute"/> + <deleteData createDataKey="createConfigChildProduct1CreateConfigurableProduct" stepKey="deleteConfigChildProduct1"/> + <deleteData createDataKey="createConfigChildProduct2CreateConfigurableProduct" stepKey="deleteConfigChildProduct2"/> + <!-- Reindex invalidated indices after product attribute has been created/deleted --> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexInvalidatedIndices"> + <argument name="indices" value=""/> + </actionGroup> + <!-- Go to the tax rule page and delete the row created--> + <actionGroup ref="AdminTaxRuleGridOpenPageActionGroup" stepKey="goToTaxRulesPageA"/> + <actionGroup ref="deleteEntitySecondaryGrid" stepKey="deleteRule"> + <argument name="name" value="{{TaxRule.name}}"/> + <argument name="searchInput" value="{{AdminSecondaryGridSection.taxIdentifierSearch}}"/> + </actionGroup> + <!-- Deleting Tax zones and rate for Product Tax --> + <actionGroup ref="AdminNavigateMenuActionGroup" stepKey="navigateToStoresTaxZonesAndRatesPage"> + <argument name="menuUiId" value="{{AdminMenuStores.dataUiId}}"/> + <argument name="submenuUiId" value="{{AdminMenuStoresTaxZonesAndRates.dataUiId}}"/> + </actionGroup> + <actionGroup ref="deleteEntitySecondaryGrid" stepKey="deleteProductTaxRule1"> + <argument name="name" value="{{SimpleTaxCA.identifier}}-{{SimpleTaxCA.rate}}"/> + <argument name="searchInput" value="{{AdminSecondaryGridSection.taxIdentifierSearch}}"/> + </actionGroup> + <actionGroup ref="AdminOrdersPageOpenActionGroup" stepKey="navigateToSalesOrderPage"/> + <actionGroup ref="AdminClearFiltersActionGroup" stepKey="clickOnButtonToRemoveFiltersIfPresent"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logOut"/> + </after> + <!-- Navigate to StoreFront --> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + <!-- Add configurable product to the cart --> + <actionGroup ref="StorefrontAddConfigurableProductToTheCartActionGroup" stepKey="addConfigurableProductToCart"> + <argument name="urlKey" value="$$createConfigProductCreateConfigurableProduct.custom_attributes[url_key]$$" /> + <argument name="productAttribute" value="$$createConfigProductAttributeCreateConfigurableProduct.default_value$$"/> + <argument name="productOption" value="$$getConfigAttributeOption2CreateConfigurableProduct.label$$"/> + <argument name="qty" value="1"/> + </actionGroup> + <!-- Navigate to StoreFront --> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront2"/> + <!-- Add simple product to cart --> + <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addProductToCart"> + <argument name="product" value="$$createSimpleProduct$$"/> + </actionGroup> + <!-- Navigate to StoreFront --> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront3"/> + <actionGroup ref="StorefrontOpenProductPageActionGroup" stepKey="openProductStorefront"> + <argument name="productUrl" value="$$createBundleProduct.custom_attributes[url_key]$$"/> + </actionGroup> + <actionGroup ref="StorefrontSelectCustomizeAndAddToTheCartButtonActionGroup" stepKey="customizeBundleProduct"/> + <actionGroup ref="StorefrontAddToTheCartButtonActionGroup" stepKey="addToCartBundleProduct"/> + <actionGroup ref="StorefrontOpenCheckoutPageActionGroup" stepKey="goToCheckout"/> + <!--Fill Shipping Address--> + <actionGroup ref="FillGuestCheckoutShippingAddressFormActionGroup" stepKey="fillShippingAddress"/> + <selectOption selector="{{CheckoutCartSummarySection.stateProvince}}" userInput="California" stepKey="fillState"/> + <waitForPageLoad stepKey="waitForShippingPageToLoad"/> + <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatRate"> + <argument name="shippingMethodName" value="Flat Rate"/> + </actionGroup> + <!-- Click Next button --> + <actionGroup ref="StorefrontGuestCheckoutProceedToPaymentStepActionGroup" stepKey="clickNext"/> + + <!-- Click on PayPal payment radio button and click on continue btn --> + <actionGroup ref="AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup" stepKey="selectPaypalStandardPaymentAndClickOnContinuebtn"/> + <!-- Login to Paypal in-context and verify order total on paypal page--> + <actionGroup ref="StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup" stepKey="loginToPayPal"/> + <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> + <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="waitForOrderNumberToBeGrabbed"/> + <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="grabOrderNumber"/> + <!--Go to Admin and check order information--> + <actionGroup ref="FilterOrderGridByIdActionGroup" stepKey="filterOrderGrid"> + <argument name="orderId" value="$grabOrderNumber"/> + </actionGroup> + <actionGroup ref="AdminOrderGridClickFirstRowActionGroup" stepKey="clickOrderRow"/> + <!-- Check status --> + <actionGroup ref="AdminOrderViewCheckStatusActionGroup" stepKey="seeAdminOrderStatus"> + <argument name="status" value="Processing"/> + </actionGroup> + <actionGroup ref="StartCreateInvoiceFromOrderPageActionGroup" stepKey="createInvoice"/> + <actionGroup ref="SubmitInvoiceActionGroup" stepKey="submitInvoice"/> + <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistory"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderComment}}" userInput="Authorized amount of $145.98." stepKey="seeOrderHistoryNotes"/> + </test> +</tests> diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml index 6ae5789882133..e1976ff6c44da 100644 --- a/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml +++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml @@ -92,8 +92,8 @@ <actionGroup ref="GoToShipmentIntoOrderActionGroup" stepKey="goToShipment"/> <grabTextFrom selector="{{AdminShipmentItemsSection.itemQtyInvoiced('1')}}" stepKey="grabInvoicedItemQty"/> <assertEquals stepKey="assertInvoicedItemsQty"> - <actualResult type="const">$grabInvoicedItemQty</actualResult> - <expectedResult type="string">5</expectedResult> + <actualResult type="const">$grabInvoicedItemQty</actualResult> + <expectedResult type="string">5</expectedResult> </assertEquals> </test> </tests> From fc860ce1b306300afdb7641ec034ec5d9df14fc4 Mon Sep 17 00:00:00 2001 From: Shanthi Rajendran <glo25731@adobe.com> Date: Thu, 2 May 2024 12:20:26 +0530 Subject: [PATCH 040/460] ACQE-6326: UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest Added < in AdminImportCurrencyRatesActionGroup --- .../Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml index d7b3588227d82..96caa2218c318 100644 --- a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml +++ b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml @@ -1,4 +1,4 @@ -?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- /** * Copyright © Magento, Inc. All rights reserved. From 86f1d7f2c8f56c161496c05f2c5313256a4f8bf5 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Thu, 2 May 2024 13:10:36 +0530 Subject: [PATCH 041/460] ACQE-6491:Default configuration for Paypal Pay Later Message on Cart Page --- .../EnablePaypalPaylaterConfigurationActionGroup.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml index 614fbbf7bfce1..a768cc5275de4 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml @@ -11,6 +11,10 @@ <annotations> <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> </annotations> + <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablepaylaterExp"/> + <waitForPageLoad stepKey="waitForAdvisePageLoad"/> + <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateClickedr"/> <waitForPageLoad stepKey="waitForadvisepaylaterdropdown"/> <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablepaypallater"/> <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="waitForcheckoutcartpageclickable"/> From a4b3b52b78d3d6a985b6385e902f052c526a5c49 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 6 May 2024 14:58:28 +0530 Subject: [PATCH 042/460] ACQE-6491:configuration for paypal pay later on checkout page Correction on waitForElementClickable In EnablePaypalPaylaterConfigurationActionGroup --- ...PaypalPaylaterConfigurationActionGroup.xml | 8 +++-- .../Suite/ConfigurePaypalPaylaterSuite.xml | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml index a768cc5275de4..b18d449251010 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml @@ -11,13 +11,15 @@ <annotations> <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> </annotations> + <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonToClickable"/> <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablepaylaterExp"/> <waitForPageLoad stepKey="waitForAdvisePageLoad"/> - <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateClickedr"/> + <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="waitForPayLaterDropdownClickable"/> + <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateToClicked"/> <waitForPageLoad stepKey="waitForadvisepaylaterdropdown"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablepaypallater"/> - <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="waitForcheckoutcartpageclickable"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> + <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> <click selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="clickCheckoutCart"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml new file mode 100644 index 0000000000000..11fdea196ee76 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> + <suite name="ConfigurePaypalPaylaterSuite"> + <before> + <!-- Login --> + <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> + <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> + </actionGroup> + <!--Check default values selected in dropdown --> + <actionGroup ref="CheckValuesForCartConfigActionGroup" stepKey="checkValuesForCartConfiguration"> + </actionGroup> + <!--Click on Save configure Button --> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> + </actionGroup> + </before> + <after> + <!-- Cleanup Paypal configurations --> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + </after> + <include> + <group name="paypalPaylater"/> + </include> + </suite> +</suites> From 866b12c8f59e35ebb15be013574240e117460a01 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Tue, 7 May 2024 19:28:35 +0530 Subject: [PATCH 043/460] ACQE-6434:Default configuration for Paypal pay later New Automation testcase added for Paypal Pay Later on Admin Cart --- ...eckValuesForAdminCartConfigActionGroup.xml | 20 +++++++++ ...PaypalPaylaterConfigurationActionGroup.xml | 18 ++++++++ .../PayPalCheckoutCartConfigSection.xml | 19 ++++++++ .../Test/AdminConfigForPaypalPaylaterTest.xml | 45 +++++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml new file mode 100644 index 0000000000000..5a1ef0fb32182 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml @@ -0,0 +1,20 @@ +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="CheckValuesForAdminCartConfigActionGroup"> + <annotations> + <description>Check the default Dropdown Values Available in Admin Cart Page.</description> + </annotations> + <selectOption selector ="{{PayPalCheckoutCartConfigSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartPage"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml new file mode 100644 index 0000000000000..95d06dd92f125 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml @@ -0,0 +1,18 @@ +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="EnablePaypalPaylaterConfigurationActionGroup" > + <annotations> + <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> + </annotations> + <waitForPageLoad stepKey="waitForAdvisePaylaterDropdown"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> + <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartPageClickable"/> + <click selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml new file mode 100755 index 0000000000000..988f7c76ce668 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="PayPalCheckoutCartConfigSection"> + <element name="expandCheckoutCartPage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> + <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> + <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> + <element name="styleLayout" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_stylelayout" parameterized="true" /> + <element name="logoType" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logotype" parameterized="true" /> + <element name="logoPosition" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logoposition" parameterized="true" /> + <element name="textColor" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_textcolor" parameterized="true" /> + </section> +</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml new file mode 100755 index 0000000000000..9a1ac24ebfba6 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminConfigForPaypalPaylaterTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Default configuration for Paypal pay later"/> + <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> + <severity value="CRITICAL"/> + <testCaseId value="AC-5644"/> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="ConfigPayPalExpress"> + <argument name="credentials" value="SamplePaypalExpressConfig2"/> + </actionGroup> + </before> + <after> + <magentoCLI command="config:set payment/paypal_express/active 0" stepKey="disablePayPalExpress"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> + </after> + <!--Enable Paylater For Paypal Express Checkout --> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonClickable"/> + <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablePaylaterExp"/> + <waitForPageLoad stepKey="waitForAdvisePageLoad"/> + <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylater"/> + <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> + </actionGroup> + <!--Check default values selected in dropdown --> + <actionGroup ref="CheckValuesForAdminCartConfigActionGroup" stepKey="checkValuesForAdminCartConfiguration"> + </actionGroup> + <!--Click on Save configure Button --> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> + </actionGroup> + </test> +</tests> From 925270c85fcccb2ac6443e59ed8db8db9996efd8 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Wed, 8 May 2024 07:00:31 +0530 Subject: [PATCH 044/460] ACQE-6491:Default configuration for Paypal pay later On Admin Cart Page Correction of ConfigurePaypalPaylaterSuite --- .../CheckValuesForCartConfigActionGroup.xml | 21 --------- ...PaypalPaylaterConfigurationActionGroup.xml | 10 ++++- .../PayPalCheckoutCartConfigSection.xml | 10 ++--- .../Suite/ConfigurePaypalPaylaterSuite.xml | 11 +++-- ...aylaterPaypalExpressCheckoutConfigTest.xml | 43 ------------------- 5 files changed, 20 insertions(+), 75 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml deleted file mode 100644 index e7d386363d46d..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForCartConfigActionGroup.xml +++ /dev/null @@ -1,21 +0,0 @@ -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="CheckValuesForCartConfigActionGroup" > - <annotations> - <description>Check the default Dropdown Values Available in Checkout Cart Page.</description> - </annotations> - <selectOption selector ="{{PayPalCheckoutCartConfigSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.stylelayout('us')}}" userInput="Text" stepKey="seeSelectedStylelayout"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logotype('us')}}" userInput="Primary" stepKey="seeSelectedlogotype"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoposition('us')}}" userInput="Left" stepKey="seeSelectedlogoposition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textcolor('us')}}" userInput="Black" stepKey="seeSelectedtextcolor"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml index b18d449251010..df927dc40a39b 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml @@ -19,7 +19,13 @@ <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateToClicked"/> <waitForPageLoad stepKey="waitForadvisepaylaterdropdown"/> <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> - <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> - <click selector="{{PayPalCheckoutCartConfigSection.expandcheckoutcartpage('us')}}" stepKey="clickCheckoutCart"/> + <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> + <click selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> + <selectOption selector ="{{PayPalCheckoutCartConfigSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml index 3bd4801cb0845..3faa60a51370f 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml @@ -9,12 +9,12 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="PayPalCheckoutCartConfigSection"> - <element name="expandcheckoutcartpage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> + <element name="expandCheckoutCartPage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> - <element name="stylelayout" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_stylelayout" parameterized="true" /> - <element name="logotype" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logotype" parameterized="true" /> - <element name="logoposition" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logoposition" parameterized="true" /> - <element name="textcolor" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_textcolor" parameterized="true" /> + <element name="styleLayout" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_stylelayout" parameterized="true" /> + <element name="logoType" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logotype" parameterized="true" /> + <element name="logoPosition" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logoposition" parameterized="true" /> + <element name="textColor" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_textcolor" parameterized="true" /> </section> </sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml index 11fdea196ee76..e58dfe13a4562 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml @@ -10,10 +10,11 @@ <before> <!-- Login --> <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> - <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> + <actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="ConfigPayPalExpress"> + <argument name="credentials" value="SamplePaypalExpressConfig2"/> </actionGroup> - <!--Check default values selected in dropdown --> - <actionGroup ref="CheckValuesForCartConfigActionGroup" stepKey="checkValuesForCartConfiguration"> + <!--Enable Paylater Solution On Admin Cart Page --> + <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaylaterOnAdminCartConfiguration"> </actionGroup> <!--Click on Save configure Button --> <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> @@ -21,12 +22,14 @@ </before> <after> <!-- Cleanup Paypal configurations --> + <magentoCLI command="config:set payment/paypal_express/active 0" stepKey="disablePayPalExpress"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> <argument name="tags" value="config full_page"/> </actionGroup> </after> <include> - <group name="paypalPaylater"/> + <group name="paypalPayLater"/> </include> </suite> </suites> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml deleted file mode 100644 index ab1109437da5b..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Test/EnablePaypalPaylaterPaypalExpressCheckoutConfigTest.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="EnablePaypalPaylaterPaypalExpressCheckoutConfigTest"> - <annotations> - <features value="PayPal"/> - <stories value="Payment methods"/> - <title value="configuration for paypal pay later on checkout page"/> - <description value="Paypal Pay Later Message should display on Admin Checkout Cart Page configuration"/> - <severity value="CRITICAL"/> - <testCaseId value="AC-5667"/> - </annotations> - <before> - <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> - </before> - <after> - <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> - </after> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <!--Enable Paypal Express Checkout Paylater Solution --> - <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> - </actionGroup> - <!--Check default values selected in dropdown --> - <actionGroup ref="CheckValuesForCartConfigActionGroup" stepKey="checkValuesForCartConfiguration"> - </actionGroup> - <!--Click on Save configure Button --> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> - </actionGroup> - <!-- Reindex and cache flush --> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexPage"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCachePage"> - <argument name="tags" value=""/> - </actionGroup> - </test> -</tests> From 2f0b8bb53938653b8eb0c80e94b6241871f63db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CDattaAmrita=E2=80=9D?= <glo06716@adobe.com> Date: Wed, 8 May 2024 15:40:14 +0530 Subject: [PATCH 045/460] ACQE-6445 : AC-5185:Guest Checkout Using PayPal Payments Standard and Flat Rate AddedPr_ExcludeGroupInTestFile --- ...tGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml index 0415710d00c9a..f31c22bc2629a 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml @@ -17,7 +17,7 @@ <testCaseId value="AC-5185"/> <group value="paypalStandard"/> <group value="3rd_party_integration" /> -<!-- <group value="pr_exclude"/>--> + <group value="pr_exclude"/> </annotations> <before> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> From a4e35a0a7c9ed39d6079f7fce064522d8fdde713 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Wed, 8 May 2024 18:50:39 +0530 Subject: [PATCH 046/460] ACQE-6491:Default configuration for Paypal Pay Later Message on Checkout Page Adding New Testcase AdminConfigForPaypalPaylaterTest --- .../Test/AdminConfigForPaypalPaylaterTest.xml | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml new file mode 100755 index 0000000000000..00bfd6b4c6fff --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminConfigForPaypalPaylaterTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Default configuration for paypalpaylater"/> + <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> + <severity value="CRITICAL"/> + <testCaseId value="AC-5644"/> + <group value="paypalPayLater"/> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> + </before> + <after> + <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> + </after> + <!-- Navigate to StoreFront --> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + </test> +</tests> From 21c9de19be6fac1a7f88c97474d954b6463de23a Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Thu, 9 May 2024 11:48:27 +0530 Subject: [PATCH 047/460] ACQE-6491:Default configuration for Paypal Pay Later Message on Checkout Page Deletion Of Testcase AdminConfigForPaypalPaylaterTest --- .../Test/AdminConfigForPaypalPaylaterTest.xml | 29 ------------------- 1 file changed, 29 deletions(-) delete mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml deleted file mode 100755 index 00bfd6b4c6fff..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminConfigForPaypalPaylaterTest"> - <annotations> - <features value="PayPal"/> - <stories value="Payment methods"/> - <title value="Default configuration for paypalpaylater"/> - <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> - <severity value="CRITICAL"/> - <testCaseId value="AC-5644"/> - <group value="paypalPayLater"/> - </annotations> - <before> - <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> - </before> - <after> - <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> - </after> - <!-- Navigate to StoreFront --> - <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> - </test> -</tests> From c2e4ab87ec2604702060f9ee65abe06bfa8e24f9 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Sat, 11 May 2024 18:27:03 +0530 Subject: [PATCH 048/460] ACQE-6434:Default configuration for Paypal pay later Correction On PaylaterConfigurationActionGroup For Code Reusuability --- ...nGroup.xml => PaylaterConfigurationActionGroup.xml} | 8 +++++++- .../Mftf/Test/AdminConfigForPaypalPaylaterTest.xml | 10 ++-------- 2 files changed, 9 insertions(+), 9 deletions(-) rename app/code/Magento/Paypal/Test/Mftf/ActionGroup/{EnablePaypalPaylaterConfigurationActionGroup.xml => PaylaterConfigurationActionGroup.xml} (55%) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml similarity index 55% rename from app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml index 95d06dd92f125..b95898c00c5a0 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml @@ -6,10 +6,16 @@ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="EnablePaypalPaylaterConfigurationActionGroup" > + <actionGroup name="PaylaterConfigurationActionGroup" > <annotations> <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> </annotations> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonClickable"/> + <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablePaylaterExp"/> + <waitForPageLoad stepKey="waitForAdvisePageLoad"/> + <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylater"/> <waitForPageLoad stepKey="waitForAdvisePaylaterDropdown"/> <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartPageClickable"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index 9a1ac24ebfba6..4a91df7f67881 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -24,16 +24,10 @@ </before> <after> <magentoCLI command="config:set payment/paypal_express/active 0" stepKey="disablePayPalExpress"/> + <magentoCLI command="cache:flush" stepKey="cleanCache"/> <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> </after> - <!--Enable Paylater For Paypal Express Checkout --> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonClickable"/> - <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablePaylaterExp"/> - <waitForPageLoad stepKey="waitForAdvisePageLoad"/> - <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylater"/> - <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> + <actionGroup ref="PaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> </actionGroup> <!--Check default values selected in dropdown --> <actionGroup ref="CheckValuesForAdminCartConfigActionGroup" stepKey="checkValuesForAdminCartConfiguration"> From 416e344e94269af6b7978b96783f01b3003305ef Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 13 May 2024 16:42:53 +0530 Subject: [PATCH 049/460] ACQE-6434:Default configuration for Paypal pay later Correction On PaylaterConfigurationActionGroup and AdminConfigForPaypalPaylaterTest --- ...CheckValuesForAdminCartConfigActionGroup.xml | 17 +++++++++++------ .../PaylaterConfigurationActionGroup.xml | 17 +++++++++-------- .../Test/AdminConfigForPaypalPaylaterTest.xml | 9 +++------ 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml index 5a1ef0fb32182..9665cdd2450e6 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml @@ -10,11 +10,16 @@ <annotations> <description>Check the default Dropdown Values Available in Admin Cart Page.</description> </annotations> - <selectOption selector ="{{PayPalCheckoutCartConfigSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartPage"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage(countryCode)}}" stepKey="waitForCheckoutCartPageClickable"/> + <click selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage(countryCode)}}" stepKey="clickCheckoutCart"/> + <selectOption selector ="{{PayPalCheckoutCartConfigSection.display(countryCode)}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartPage"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position(countryCode)}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.styleLayout(countryCode)}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoType(countryCode)}}" userInput="Primary" stepKey="seeSelectedLogoType"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoPosition(countryCode)}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> + <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textColor(countryCode)}}" userInput="Black" stepKey="seeSelectedTextColor"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml index b95898c00c5a0..8037a13a6741b 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml @@ -6,19 +6,20 @@ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="PaylaterConfigurationActionGroup" > + <actionGroup name="PaylaterConfigurationActionGroup"> <annotations> <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonClickable"/> - <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablePaylaterExp"/> + <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn(countryCode)}}" stepKey="waitForConfigureButtonClickable"/> + <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn(countryCode)}}" stepKey="configureButtonClicked"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater(countryCode)}}" userInput="Yes" stepKey="enablePaylaterExp"/> <waitForPageLoad stepKey="waitForAdvisePageLoad"/> - <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylater"/> + <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown(countryCode)}}" stepKey="advertisePaylater"/> <waitForPageLoad stepKey="waitForAdvisePaylaterDropdown"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> - <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartPageClickable"/> - <click selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn(countryCode)}}" userInput="Yes" stepKey="enablePaypalLater"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index 4a91df7f67881..b7bfa612797fc 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -27,13 +27,10 @@ <magentoCLI command="cache:flush" stepKey="cleanCache"/> <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> </after> - <actionGroup ref="PaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"> - </actionGroup> + <actionGroup ref="PaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"/> <!--Check default values selected in dropdown --> - <actionGroup ref="CheckValuesForAdminCartConfigActionGroup" stepKey="checkValuesForAdminCartConfiguration"> - </actionGroup> + <actionGroup ref="CheckValuesForAdminCartConfigActionGroup" stepKey="checkValuesForAdminCartConfiguration"/> <!--Click on Save configure Button --> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> - </actionGroup> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"/> </test> </tests> From 569dd91a4e1e69553b8da3aa7e94ebb08315d13d Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Tue, 14 May 2024 15:50:27 +0530 Subject: [PATCH 050/460] ACQE-5754:AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest --- ...alExpressCheckoutMethodAndFlatRateTest.xml | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml index 9ac158c3cb000..cd14f14ba97f1 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -35,45 +35,45 @@ </actionGroup> <!-- Changing PayPal Express Checkout Basic Settings --> <magentoCLI command="config:set {{StorefrontPaypalExpressSalePaymentActionOptionConfigData.path}} {{StorefrontPaypalExpressSalePaymentActionOptionConfigData.value}}" stepKey="changePaymentAction"/> - <!--Login to storefront as previously created customer--> - <actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginAsCustomer"> - <argument name="Customer" value="$$createCustomer$$"/> - </actionGroup> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCache"> - <argument name="tags" value=""/> - </actionGroup> - <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="amOnProductPage"> - <argument name="product" value="$createProduct$"/> - </actionGroup> - <actionGroup ref="AddProductWithQtyToCartFromStorefrontProductPageActionGroup" stepKey="addProductToCart"> - <argument name="productName" value="$$createProduct.name$$"/> - <argument name="productQty" value="2"/> - </actionGroup> - <!-- Go to Checkout --> - <actionGroup ref="OpenStoreFrontCheckoutShippingPageActionGroup" stepKey="goToCheckoutPage"/> - <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatRate"> - <argument name="shippingMethodName" value="Flat Rate"/> - </actionGroup> - <!-- Go to Order review --> - <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> - <waitForElementClickable selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="waitForPayPalExpressCheckoutIsPresent"/> - <click selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="clickPayPalExpressCheckout"/> - <waitForPageLoad stepKey="waitForPaypalExpressCheckoutToBeLoaded"/> - <!-- Click on Paypal paypal button--> - <actionGroup ref="SwitchToPayPalGroupBtnActionGroup" stepKey="clickPayPalBtn"/> - <!--Login to Paypal in-context--> - <actionGroup ref="StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup" stepKey="LoginToPayPal"/> - <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> - <!-- See order successful Page instead of Order Review Page --> - <waitForElement selector="{{CheckoutSuccessMainSection.successTitle}}" stepKey="waitForLoadSuccessPageTitle"/> - <waitForElement selector="{{CheckoutSuccessMainSection.success}}" stepKey="waitForLoadSuccessPage"/> - <!--Grab order number--> - <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="waitForOrderNumberToBeGrabbed"/> - <grabTextFrom selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="grabOrderNumber"/> </before> + <!--Login to storefront as previously created customer--> + <actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginAsCustomer"> + <argument name="Customer" value="$$createCustomer$$"/> + </actionGroup> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCache"> + <argument name="tags" value=""/> + </actionGroup> + <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="amOnProductPage"> + <argument name="product" value="$createProduct$"/> + </actionGroup> + <actionGroup ref="AddProductWithQtyToCartFromStorefrontProductPageActionGroup" stepKey="addProductToCart"> + <argument name="productName" value="$$createProduct.name$$"/> + <argument name="productQty" value="2"/> + </actionGroup> + <!-- Go to Checkout --> + <actionGroup ref="OpenStoreFrontCheckoutShippingPageActionGroup" stepKey="goToCheckoutPage"/> + <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatRate"> + <argument name="shippingMethodName" value="Flat Rate"/> + </actionGroup> + <!-- Go to Order review --> + <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> + <waitForElementClickable selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="waitForPayPalExpressCheckoutIsPresent"/> + <click selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="clickPayPalExpressCheckout"/> + <waitForPageLoad stepKey="waitForPaypalExpressCheckoutToBeLoaded"/> + <!-- Click on Paypal paypal button--> + <actionGroup ref="SwitchToPayPalGroupBtnActionGroup" stepKey="clickPayPalBtn"/> + <!--Login to Paypal in-context--> + <actionGroup ref="StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup" stepKey="LoginToPayPal"/> + <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> + <!-- See order successful Page instead of Order Review Page --> + <waitForElement selector="{{CheckoutSuccessMainSection.successTitle}}" stepKey="waitForLoadSuccessPageTitle"/> + <waitForElement selector="{{CheckoutSuccessMainSection.success}}" stepKey="waitForLoadSuccessPage"/> + <!--Grab order number--> + <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="waitForOrderNumberToBeGrabbed"/> + <grabTextFrom selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="grabOrderNumber"/> <!--Go to admin sales page and open the order id--> <actionGroup ref="OpenOrderByIdActionGroup" stepKey="openOrder"> <argument name="orderId" value="{$grabOrderNumber}"/> From ac567f352bd63686076211fca96dceb0baf8d4be Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 17 May 2024 10:14:22 +0530 Subject: [PATCH 051/460] ACQE-6434:Default configuration for Paypal pay later Adding group value as pr_exclude --- .../Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index b7bfa612797fc..5838666cc6084 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -15,6 +15,7 @@ <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> <severity value="CRITICAL"/> <testCaseId value="AC-5644"/> + <group value="pr_exclude"/> </annotations> <before> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> From 585d7b5f26240d23fb0c1fb0380961a4538d1fe0 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Fri, 17 May 2024 14:38:34 +0530 Subject: [PATCH 052/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index fc84dcafc4688..9dca1dd30483e 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -3054,7 +3054,7 @@ public function formatDate($date, $includeTime = true) public function startSetup() { $this->rawQuery("SET SQL_MODE=''"); - $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); + $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@GLOBAL.FOREIGN_KEY_CHECKS, GLOBAL FOREIGN_KEY_CHECKS=0"); $this->rawQuery("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'"); return $this; @@ -3068,7 +3068,7 @@ public function startSetup() public function endSetup() { $this->rawQuery("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')"); - $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); + $this->rawQuery("SET GLOBAL FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); return $this; } From 44ee0c64a6ed89dc0caeddc9be4e6babfc62d115 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Fri, 17 May 2024 22:27:12 +0530 Subject: [PATCH 053/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php b/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php index 2d6952f367b47..202aeae58e903 100644 --- a/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php +++ b/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php @@ -88,12 +88,6 @@ public function testToDefinition() $column->expects($this->any()) ->method('getLength') ->willReturn(50); - $column->expects($this->any()) - ->method('getCollation') - ->willReturn('utf8mb4_general_ci'); - $column->expects($this->any()) - ->method('getCharset') - ->willReturn('utf8mb4'); $column->expects($this->any()) ->method('getDefault') ->willReturn('test'); From 3908203f73176237e7229120921e00a2fac3be4d Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Sat, 18 May 2024 10:05:47 +0530 Subject: [PATCH 054/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index 9dca1dd30483e..fc84dcafc4688 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -3054,7 +3054,7 @@ public function formatDate($date, $includeTime = true) public function startSetup() { $this->rawQuery("SET SQL_MODE=''"); - $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@GLOBAL.FOREIGN_KEY_CHECKS, GLOBAL FOREIGN_KEY_CHECKS=0"); + $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); $this->rawQuery("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'"); return $this; @@ -3068,7 +3068,7 @@ public function startSetup() public function endSetup() { $this->rawQuery("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')"); - $this->rawQuery("SET GLOBAL FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); + $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); return $this; } From b846c9c3c6abd723e778c7684fa8ab1a2c6fb23e Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Sun, 19 May 2024 00:39:48 +0530 Subject: [PATCH 055/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Framework/DB/Adapter/Pdo/Mysql.php | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index fc84dcafc4688..ee9f270667328 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -32,6 +32,7 @@ use Magento\Framework\Stdlib\StringUtils; use Zend_Db_Adapter_Exception; use Zend_Db_Statement_Exception; +use Magento\Framework\DB\Adapter\SqlVersionProvider; // @codingStandardsIgnoreStart @@ -258,6 +259,7 @@ class Mysql extends \Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface, Rese * @param DateTime $dateTime * @param LoggerInterface $logger * @param SelectFactory $selectFactory + * @param SqlVersionProvider|null $sqlVersionProvider * @param array $config * @param SerializerInterface|null $serializer */ @@ -267,13 +269,15 @@ public function __construct( LoggerInterface $logger, SelectFactory $selectFactory, array $config = [], - SerializerInterface $serializer = null + SerializerInterface $serializer = null, + SqlVersionProvider $sqlVersionProvider=null ) { $this->pid = getmypid(); $this->string = $string; $this->dateTime = $dateTime; $this->logger = $logger; $this->selectFactory = $selectFactory; + $this->sqlVersionProvider = $sqlVersionProvider ?: ObjectManager::getInstance()->get(SqlVersionProvider::class); $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class); $this->exceptionMap = [ // SQLSTATE[HY000]: General error: 2006 MySQL server has gone away @@ -3050,11 +3054,16 @@ public function formatDate($date, $includeTime = true) * Run additional environment before setup * * @return $this + * @throws ConnectionException */ public function startSetup() { $this->rawQuery("SET SQL_MODE=''"); - $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); + if($this->isMariaDB106()) { + $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@GLOBAL.FOREIGN_KEY_CHECKS, GLOBAL FOREIGN_KEY_CHECKS=0"); + } else { + $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); + } $this->rawQuery("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'"); return $this; @@ -3064,12 +3073,16 @@ public function startSetup() * Run additional environment after setup * * @return $this + * @throws ConnectionException */ public function endSetup() { $this->rawQuery("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')"); - $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); - + if($this->isMariaDB106()) { + $this->rawQuery("SET GLOBAL FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); + } else { + $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); + } return $this; } @@ -4249,4 +4262,19 @@ public function __debugInfo() { return []; } + + /** + * Check if MariaDB version is 10.6+ + * + * @return bool + * @throws ConnectionException + */ + public function isMariaDB106(): bool + { + $sqlVersion = $this->sqlVersionProvider->getSqlVersion(); + if (str_contains($sqlVersion, SqlVersionProvider::MARIA_DB_10_6_VERSION)) { + return true; + } + return false; + } } From 0fd61bbed5b81c882ee91d4c597386154ab6f8cf Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Sun, 19 May 2024 10:16:12 +0530 Subject: [PATCH 056/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index ee9f270667328..3c7fb3a05effa 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -3059,9 +3059,7 @@ public function formatDate($date, $includeTime = true) public function startSetup() { $this->rawQuery("SET SQL_MODE=''"); - if($this->isMariaDB106()) { - $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@GLOBAL.FOREIGN_KEY_CHECKS, GLOBAL FOREIGN_KEY_CHECKS=0"); - } else { + if(!$this->isMariaDB106()) { $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); } $this->rawQuery("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'"); @@ -3078,9 +3076,7 @@ public function startSetup() public function endSetup() { $this->rawQuery("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')"); - if($this->isMariaDB106()) { - $this->rawQuery("SET GLOBAL FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); - } else { + if(!$this->isMariaDB106()) { $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); } return $this; From 58fefaba5ae46d6a712774adedbb51ffc6c58217 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 20 May 2024 07:28:08 +0530 Subject: [PATCH 057/460] ACQE-6434:Default configuration for Paypal Pay Later Message Correction on ActionGroupNaming and Adding Group Value As 3rd_party_integration --- ...xml => AdminConfigurePaypalPaylaterEnableActionGroup.xml} | 2 +- ...nConfigForDefaultValuesInPaylaterCartPageActionGroup.xml} | 4 ++-- .../Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) rename app/code/Magento/Paypal/Test/Mftf/ActionGroup/{PaylaterConfigurationActionGroup.xml => AdminConfigurePaypalPaylaterEnableActionGroup.xml} (95%) rename app/code/Magento/Paypal/Test/Mftf/ActionGroup/{CheckValuesForAdminCartConfigActionGroup.xml => AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml} (93%) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurePaypalPaylaterEnableActionGroup.xml similarity index 95% rename from app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurePaypalPaylaterEnableActionGroup.xml index 8037a13a6741b..91c47587c946f 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/PaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurePaypalPaylaterEnableActionGroup.xml @@ -6,7 +6,7 @@ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="PaylaterConfigurationActionGroup"> + <actionGroup name="AdminConfigurePaypalPaylaterEnableActionGroup"> <annotations> <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> </annotations> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml similarity index 93% rename from app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml index 9665cdd2450e6..71cabad256147 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/CheckValuesForAdminCartConfigActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml @@ -6,9 +6,9 @@ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="CheckValuesForAdminCartConfigActionGroup"> + <actionGroup name="AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup"> <annotations> - <description>Check the default Dropdown Values Available in Admin Cart Page.</description> + <description>Check the default Dropdown Values Available in Admin Cart Page</description> </annotations> <arguments> <argument name="countryCode" type="string" defaultValue="us"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index 5838666cc6084..caab72584fdc8 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -15,6 +15,7 @@ <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> <severity value="CRITICAL"/> <testCaseId value="AC-5644"/> + <group value="3rd_party_integration"/> <group value="pr_exclude"/> </annotations> <before> @@ -28,9 +29,9 @@ <magentoCLI command="cache:flush" stepKey="cleanCache"/> <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> </after> - <actionGroup ref="PaylaterConfigurationActionGroup" stepKey="enablePaypalPaylaterSolution"/> + <actionGroup ref="AdminConfigurePaypalPaylaterEnableActionGroup" stepKey="enablePaypalPaylaterSolution"/> <!--Check default values selected in dropdown --> - <actionGroup ref="CheckValuesForAdminCartConfigActionGroup" stepKey="checkValuesForAdminCartConfiguration"/> + <actionGroup ref="AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup" stepKey="checkValuesForAdminCartConfiguration"/> <!--Click on Save configure Button --> <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"/> </test> From 7f507caf2b5eff78434029bfc9b5e3880a5b3bae Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Mon, 20 May 2024 08:59:32 +0530 Subject: [PATCH 058/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Framework/DB/Adapter/Pdo/Mysql.php | 32 +++---------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index 3c7fb3a05effa..fc84dcafc4688 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -32,7 +32,6 @@ use Magento\Framework\Stdlib\StringUtils; use Zend_Db_Adapter_Exception; use Zend_Db_Statement_Exception; -use Magento\Framework\DB\Adapter\SqlVersionProvider; // @codingStandardsIgnoreStart @@ -259,7 +258,6 @@ class Mysql extends \Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface, Rese * @param DateTime $dateTime * @param LoggerInterface $logger * @param SelectFactory $selectFactory - * @param SqlVersionProvider|null $sqlVersionProvider * @param array $config * @param SerializerInterface|null $serializer */ @@ -269,15 +267,13 @@ public function __construct( LoggerInterface $logger, SelectFactory $selectFactory, array $config = [], - SerializerInterface $serializer = null, - SqlVersionProvider $sqlVersionProvider=null + SerializerInterface $serializer = null ) { $this->pid = getmypid(); $this->string = $string; $this->dateTime = $dateTime; $this->logger = $logger; $this->selectFactory = $selectFactory; - $this->sqlVersionProvider = $sqlVersionProvider ?: ObjectManager::getInstance()->get(SqlVersionProvider::class); $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class); $this->exceptionMap = [ // SQLSTATE[HY000]: General error: 2006 MySQL server has gone away @@ -3054,14 +3050,11 @@ public function formatDate($date, $includeTime = true) * Run additional environment before setup * * @return $this - * @throws ConnectionException */ public function startSetup() { $this->rawQuery("SET SQL_MODE=''"); - if(!$this->isMariaDB106()) { - $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); - } + $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); $this->rawQuery("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'"); return $this; @@ -3071,14 +3064,12 @@ public function startSetup() * Run additional environment after setup * * @return $this - * @throws ConnectionException */ public function endSetup() { $this->rawQuery("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')"); - if(!$this->isMariaDB106()) { - $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); - } + $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)"); + return $this; } @@ -4258,19 +4249,4 @@ public function __debugInfo() { return []; } - - /** - * Check if MariaDB version is 10.6+ - * - * @return bool - * @throws ConnectionException - */ - public function isMariaDB106(): bool - { - $sqlVersion = $this->sqlVersionProvider->getSqlVersion(); - if (str_contains($sqlVersion, SqlVersionProvider::MARIA_DB_10_6_VERSION)) { - return true; - } - return false; - } } From 2eb3b23572dde82b78685e124dec7ca12f22bb8c Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 20 May 2024 12:31:24 +0530 Subject: [PATCH 059/460] ACQE-6434:Default configuration for Paypal pay later Removing Group Value as 3rd Party Integration --- .../Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index caab72584fdc8..ff161f8cac816 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -15,7 +15,6 @@ <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> <severity value="CRITICAL"/> <testCaseId value="AC-5644"/> - <group value="3rd_party_integration"/> <group value="pr_exclude"/> </annotations> <before> From 008ab55ef7dc01ecc4ee3c2dbdddbf0d88a2ce5d Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 20 May 2024 13:58:52 +0530 Subject: [PATCH 060/460] ACQE-6434:Default configuration for Paypal Pay Later Message Renaming PayPalCheckoutPageConfigSection to AdminPaypalCheckoutPageConfigSection --- ...efaultValuesInPaylaterCartPageActionGroup.xml | 16 ++++++++-------- ...AdminPaypalCheckoutCartPageConfigSection.xml} | 2 +- .../Test/AdminConfigForPaypalPaylaterTest.xml | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) rename app/code/Magento/Paypal/Test/Mftf/Section/{PayPalCheckoutCartConfigSection.xml => AdminPaypalCheckoutCartPageConfigSection.xml} (97%) mode change 100755 => 100644 diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml index 71cabad256147..868c70bca7732 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml @@ -13,13 +13,13 @@ <arguments> <argument name="countryCode" type="string" defaultValue="us"/> </arguments> - <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage(countryCode)}}" stepKey="waitForCheckoutCartPageClickable"/> - <click selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage(countryCode)}}" stepKey="clickCheckoutCart"/> - <selectOption selector ="{{PayPalCheckoutCartConfigSection.display(countryCode)}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartPage"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position(countryCode)}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.styleLayout(countryCode)}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoType(countryCode)}}" userInput="Primary" stepKey="seeSelectedLogoType"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoPosition(countryCode)}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textColor(countryCode)}}" userInput="Black" stepKey="seeSelectedTextColor"/> + <waitForElementClickable selector="{{AdminPaypalCheckoutCartPageConfigSection.expandCheckoutCartPage(countryCode)}}" stepKey="waitForCheckoutCartPageClickable"/> + <click selector="{{AdminPaypalCheckoutCartPageConfigSection.expandCheckoutCartPage(countryCode)}}" stepKey="clickCheckoutCart"/> + <selectOption selector ="{{AdminPaypalCheckoutCartPageConfigSection.display(countryCode)}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartPage"/> + <seeOptionIsSelected selector="{{AdminPaypalCheckoutCartPageConfigSection.position(countryCode)}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> + <seeOptionIsSelected selector="{{AdminPaypalCheckoutCartPageConfigSection.styleLayout(countryCode)}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> + <seeOptionIsSelected selector="{{AdminPaypalCheckoutCartPageConfigSection.logoType(countryCode)}}" userInput="Primary" stepKey="seeSelectedLogoType"/> + <seeOptionIsSelected selector="{{AdminPaypalCheckoutCartPageConfigSection.logoPosition(countryCode)}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> + <seeOptionIsSelected selector="{{AdminPaypalCheckoutCartPageConfigSection.textColor(countryCode)}}" userInput="Black" stepKey="seeSelectedTextColor"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPaypalCheckoutCartPageConfigSection.xml old mode 100755 new mode 100644 similarity index 97% rename from app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml rename to app/code/Magento/Paypal/Test/Mftf/Section/AdminPaypalCheckoutCartPageConfigSection.xml index 988f7c76ce668..d276afc415bba --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPaypalCheckoutCartPageConfigSection.xml @@ -7,7 +7,7 @@ --> <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="PayPalCheckoutCartConfigSection"> + <section name="AdminPaypalCheckoutCartPageConfigSection"> <element name="expandCheckoutCartPage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index ff161f8cac816..f12346cf9022b 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -16,6 +16,7 @@ <severity value="CRITICAL"/> <testCaseId value="AC-5644"/> <group value="pr_exclude"/> + <group value="3rd_party_integration"/> </annotations> <before> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> From d7106c33aa267ccf80008e72b4b9719ef2703df8 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Mon, 20 May 2024 15:21:05 +0530 Subject: [PATCH 061/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Schema/Db/MySQL/DbSchemaWriter.php | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index b466eae77d9e2..1a038d6934d38 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -59,6 +59,11 @@ class DbSchemaWriter implements DbSchemaWriterInterface */ private $dryRunLogger; + /** + * @var string|null + */ + private ?string $addForeignKeyStatement = null; + /** * @param ResourceConnection $resourceConnection * @param StatementFactory $statementFactory @@ -288,6 +293,11 @@ public function compile(StatementAggregator $statementAggregator, $dryRun) ) ); } else { + $varcharPrimaryKeyTable = ['sales_order_status_state','sales_order_status_label','weee_tax']; + if(in_array($statement->getTableName(), $varcharPrimaryKeyTable)) { + $statementsSql = $this->removeConstraint($statementsSql); + } + $adapter->query( sprintf( $this->statementDirectives[$statement->getType()], @@ -295,6 +305,12 @@ public function compile(StatementAggregator $statementAggregator, $dryRun) implode(", ", $statementsSql) ) ); + if($this->addForeignKeyStatement !== null) { + $adapter->query( + sprintf('ALTER TABLE %s %s', $statement->getTableName(),$this->addForeignKeyStatement ) + ); + $this->addForeignKeyStatement = null; + } //Do post update, like SQL DML operations or etc... foreach ($statement->getTriggers() as $trigger) { call_user_func($trigger); @@ -325,4 +341,24 @@ private function getNextAutoIncrementValue(string $tableName, string $resource): } } + + /*** + * Removal of adding foreign key + * @param $statementsSql + * @return array + */ + private function removeConstraint($statementsSql): array + { + $sqlStmtWithoutAddingConstraint = []; + if(count($statementsSql)) { + foreach ($statementsSql as $tinySQL) { + if (!preg_match("/(?=.*\bADD CONSTRAINT\b)(?=.*\bFOREIGN KEY\b).*/i", $tinySQL)) { + $sqlStmtWithoutAddingConstraint[] = $tinySQL; + } else { + $this->addForeignKeyStatement = $tinySQL; + } + } + } + return $sqlStmtWithoutAddingConstraint; + } } From 0be3add44a2f8a01c911ccadcc68e0c7248c4dec Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Tue, 21 May 2024 11:46:51 +0530 Subject: [PATCH 062/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index 1a038d6934d38..fe9bdcf1f8b4c 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -294,7 +294,7 @@ public function compile(StatementAggregator $statementAggregator, $dryRun) ); } else { $varcharPrimaryKeyTable = ['sales_order_status_state','sales_order_status_label','weee_tax']; - if(in_array($statement->getTableName(), $varcharPrimaryKeyTable)) { + if (in_array($statement->getTableName(), $varcharPrimaryKeyTable)) { $statementsSql = $this->removeConstraint($statementsSql); } @@ -305,9 +305,9 @@ public function compile(StatementAggregator $statementAggregator, $dryRun) implode(", ", $statementsSql) ) ); - if($this->addForeignKeyStatement !== null) { + if ($this->addForeignKeyStatement !== null) { $adapter->query( - sprintf('ALTER TABLE %s %s', $statement->getTableName(),$this->addForeignKeyStatement ) + sprintf('ALTER TABLE %s %s', $statement->getTableName(), $this->addForeignKeyStatement) ); $this->addForeignKeyStatement = null; } @@ -339,18 +339,18 @@ private function getNextAutoIncrementValue(string $tableName, string $resource): } else { return 1; } - } /*** * Removal of adding foreign key - * @param $statementsSql + * + * @param array $statementsSql * @return array */ private function removeConstraint($statementsSql): array { $sqlStmtWithoutAddingConstraint = []; - if(count($statementsSql)) { + if (count($statementsSql)) { foreach ($statementsSql as $tinySQL) { if (!preg_match("/(?=.*\bADD CONSTRAINT\b)(?=.*\bFOREIGN KEY\b).*/i", $tinySQL)) { $sqlStmtWithoutAddingConstraint[] = $tinySQL; From 4b2c77c4624aabb3b5d1af3bc69b991020a63588 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Tue, 21 May 2024 15:37:36 +0530 Subject: [PATCH 063/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php b/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php index 202aeae58e903..2d6952f367b47 100644 --- a/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php +++ b/lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php @@ -88,6 +88,12 @@ public function testToDefinition() $column->expects($this->any()) ->method('getLength') ->willReturn(50); + $column->expects($this->any()) + ->method('getCollation') + ->willReturn('utf8mb4_general_ci'); + $column->expects($this->any()) + ->method('getCharset') + ->willReturn('utf8mb4'); $column->expects($this->any()) ->method('getDefault') ->willReturn('test'); From 4e9a59302eab1b16b8d8ef8009521383a8b484fd Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 27 May 2024 19:37:34 +0530 Subject: [PATCH 064/460] ACQE-6570:Check config for PayPal Credit in Unites States New Testcase added --- ...minClearPaymentAdvancedDataActionGroup.xml | 28 +++++++ ...aymentsAdvancedPaypalCreditActionGroup.xml | 31 ++++++++ ...aymentAdvancedConfigurationActionGroup.xml | 38 ++++++++++ .../Paypal/Test/Mftf/Data/PaypalData.xml | 7 ++ .../AdminConfigPaymentsAdvancedSection.xml | 34 +++++++++ ...figPaymentsAdvancedForPaypalCreditTest.xml | 75 +++++++++++++++++++ 6 files changed, 213 insertions(+) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml new file mode 100644 index 0000000000000..dd0a548170550 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminClearPaymentAdvancedDataActionGroup"> + <annotations> + <description>Admin goes to payments advanced configuration and clears provided Sample PayPal credentials</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <waitForPageLoad stepKey="waitForPageLoad1"/> + <clearField selector ="{{AdminConfigPaymentsAdvancedSection.email(countryCode)}}" stepKey="clearInputEmailField"/> + <clearField selector ="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> + <clearField selector ="{{AdminConfigPaymentsAdvancedSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> + <clearField selector ="{{AdminConfigPaymentsAdvancedSection.user(countryCode)}}" stepKey="clearInputUsereField"/> + <clearField selector ="{{AdminConfigPaymentsAdvancedSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> + <selectOption selector ="{{AdminConfigPaymentsAdvancedSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> + <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.enabledSolution(countryCode)}}" stepKey="enabledSolutions"/> + <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.enabledPaypalCredit(countryCode)}}" stepKey="disabledPaypalCredit"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml new file mode 100644 index 0000000000000..2b9c0d99f17ea --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminConfigForPaymentsAdvancedPaypalCreditActionGroup"> + <annotations> + <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="expandOtherPaypalConfigButton"/> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.otherPaypalLink(countryCode)}}" stepKey="assertPayinAllLink"/> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paypalPaymentGatewayLink(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> + <scrollTo selector="{{AdminConfigPaymentsAdvancedSection.otherPaypalLink(countryCode)}}" stepKey="scrollPayinAll"/> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="assertPaymentAdvanced"/> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsPro(countryCode)}}" stepKey="assertPaymentsPro"/> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsStandard(countryCode)}}" stepKey="assertPaymentStandard"/> + <wait time="10" stepKey="waitForConfigurebtnForPaymentsAdvanced"/> + <click selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="clickPaymentAdvanced"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml new file mode 100644 index 0000000000000..efafa9b594e00 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminEnablePaymentAdvancedConfigurationActionGroup"> + <annotations> + <description>Configuration for Payments Advanced and Paypal credit Sample PayPal credentials</description> + </annotations> + <arguments> + <argument name="credentials" defaultValue="SamplePaypalPaymentsAdvancedConfig2"/> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <scrollTo selector="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" stepKey="scrollToBottom"/> + <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" stepKey="waitForPartner"/> + <fillField selector ="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" userInput="{{credentials.payflow_advanced_partner}}" stepKey="inputPartner"/> + <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.vendor(countryCode)}}" stepKey="waitForVendor"/> + <fillField selector ="{{AdminConfigPaymentsAdvancedSection.vendor(countryCode)}}" userInput="{{credentials.payflow_advanced_vendor}}" stepKey="inputVendor"/> + <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.user(countryCode)}}" stepKey="waitForUser"/> + <fillField selector ="{{AdminConfigPaymentsAdvancedSection.user(countryCode)}}" userInput="{{credentials.payflow_advanced_user}}" stepKey="inputUser"/> + <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.password(countryCode)}}" stepKey="waitForPassword"/> + <fillField selector ="{{AdminConfigPaymentsAdvancedSection.password(countryCode)}}" userInput="{{credentials.payflow_advanced_password}}" stepKey="inputPassword"/> + <selectOption selector="{{AdminConfigPaymentsAdvancedSection.testMode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> + <wait time="10" stepKey="waitToEnableAdvanced"/> + <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.solution(countryCode)}}" stepKey="activeEnableSolutions"/> + <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.enabledPaypalCredit(countryCode)}}" stepKey="disablePaypalCredit"/> + <waitForPageLoad stepKey="waitForPageLoadForEnableSolution"/> + <selectOption selector ="{{AdminConfigPaymentsAdvancedSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> + <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.solution(countryCode)}}" stepKey="assertEnabledSolutions"/> + <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.paypalCredit(countryCode)}}" stepKey="enablePaypalCredit"/> + <seeElement selector ="{{AdminConfigPaymentsAdvancedSection.sortOrder(countryCode)}}" stepKey="assertSortOrderPaypalCredit"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index 4e88bbe73e2e6..91d35ff0f11ee 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -223,6 +223,13 @@ <data key="paypal_express_api_signature">AFcWxV21C7fd0v3bYYYRCpSSRl31AqoP3QLd.JUUpDPuPpQIgT0-m401</data> <data key="paypal_express_merchantID">54Z2EE6T7PRB4</data> </entity> + <!-- configuration used for paypal PaymentsAdvanced--> + <entity name="SamplePaypalPaymentsAdvancedConfig2" type="payflow_advanced_config"> + <data key="payflow_advanced_partner">PayPal</data> + <data key="payflow_advanced_user">mpilink</data> + <data key="payflow_advanced_vendor">mpilink</data> + <data key="payflow_advanced_password">1234_1234L!</data> + </entity> <entity name="SamplePaypalPaymentsProConfig" type="paypal_paymentspro_config"> <data key="paypal_paymentspro_parner">PayPal</data> <data key="paypal_paymentspro_user">MksGLTest</data> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml new file mode 100644 index 0000000000000..adceca9a15549 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="AdminConfigPaymentsAdvancedSection"> + <element name="paymentsAdvanced" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced-head" parameterized="true"/> + <element name="paymentsPro" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head" parameterized="true"/> + <element name="paymentsStandard" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express-head" parameterized="true"/> + <element name="email" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_business_account" parameterized="true"/> + <element name="partner" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_partner" parameterized="true"/> + <element name="user" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_user" parameterized="true"/> + <element name="vendor" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_vendor" parameterized="true"/> + <element name="password" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_pwd" parameterized="true"/> + <element name="testMode" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_sandbox_flag" parameterized="true" /> + <element name="otherPaypalLink" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> + <element name="paypalPaymentGatewayLink" type="button" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_payment_gateways-head')]" parameterized="true" /> + <element name="enableSolution" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced" parameterized="true"/> + <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_express_checkout_bml" parameterized="true"/> + <element name="enabledSolution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced')]//label[@class='enabled']" parameterized="true"/> + <element name="enabledPaypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_express_checkout_bml')]//label[@class='enabled']" parameterized="true"/> + <element name="solution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced')]//label[@class='disabled']" parameterized="true"/> + <element name="paypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_express_checkout_bml')]//label[@class='disabled']" parameterized="true"/> + <element name="payFlowEdition" type="button" selector="//span[contains(text(), 'PayPal Express Checkout Payflow Edition')]"/> + <element name="payFlowExpress" type="button" selector="//span[contains(text(), 'PayPal Credit (Payflow Express Bml)')]"/> + <element name="creditCardPayflowAdvanced" type="button" selector="//span[contains(text(), 'Credit Card (Payflow Advanced)')]"/> + <element name="sortOrder" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_express_checkout_bml_sort_order" parameterized="true"/> + </section> +</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml new file mode 100644 index 0000000000000..7a8afaef13e26 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminConfigPaymentsAdvancedForPaypalCreditTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Check config for PayPal Credit in Unites States"/> + <description value="Check paypal Credit payment option's enablement and disablement based on the configuration setting in backend"/> + <severity value="MAJOR"/> + <testCaseId value="AC-5151"/> + </annotations> + <before> + <createData entity="Simple_US_Customer" stepKey="createCustomer"/> + <createData entity="SimpleSubCategory" stepKey="simpleCategory"/> + <createData entity="SimpleProduct" stepKey="simpleProduct"> + <requiredEntity createDataKey="simpleCategory"/> + </createData> + <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + </before> + <after> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> + <magentoCLI command="config:set payment/payflow_advanced/active 0" stepKey="disablePaymentsAdvanced"/> + <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> + <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> + <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> + </after> + <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> + <actionGroup ref="AdminConfigForPaymentsAdvancedPaypalCreditActionGroup" stepKey="configPaymentsAdvanced"/> + <!--Clear paypal credit config related data--> + <actionGroup ref="AdminClearPaymentAdvancedDataActionGroup" stepKey="clearPaymentsAdvanced"/> + <!--Enable Payment Advanced and Paypal Credit--> + <actionGroup ref="AdminEnablePaymentAdvancedConfigurationActionGroup" stepKey="enablePaymentsAdvanced"/> + <!--Save Configuration--> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfigs"/> + <magentoCLI command="indexer:reindex" stepKey="performReindex"/> + <magentoCLI command="cache:flush" stepKey="cleanCache"/> + <!--Login to storefront as guest customer--> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + <waitForPageLoad stepKey="waitForProductPage"/> + <!--Add simple product--> + <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart"> + <argument name="product" value="$simpleProduct$"/> + </actionGroup> + <!--Go to cart page--> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> + <!--Open cart page and proceed to checkout--> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> + <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> + <!--Fill Shipping Address--> + <actionGroup ref="GuestCheckoutFillNewShippingAddressActionGroup" stepKey="fillShippingAddress"> + <argument name="customer" value="$$createCustomer$$" /> + <argument name="address" value="US_Address_TX"/> + </actionGroup> + <!-- Select shipping --> + <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectShippingMethodAsFlatRate"> + <argument name="shippingMethodName" value="Flat Rate"/> + </actionGroup> + <!-- Go to Order review --> + <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> + <waitForPageLoad stepKey="waitForLoadingMask"/> + <!-- Assert Paypal Advanced and Paypal Credit Payment method --> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> + <seeElement selector="{{AdminConfigPaymentsAdvancedSection.creditCardPayflowAdvanced}}" stepKey="assertCreditCardPayflowAdvanced"/> + </test> +</tests> From 920162c4ba6d9fac5ae697db5f35b6f6aec49f4f Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Thu, 30 May 2024 07:55:33 +0530 Subject: [PATCH 065/460] ACQE-5754 : Create Order User PayPalExpress Checkout With Payment Action Is Sale paypal expreess checkout with flatrate shipping --- ...ayPalExpressCheckoutPaymentActionGroup.xml | 20 ++++++ ...ertOrderDetailsOnPayPalPageActionGroup.xml | 29 +++++++++ .../PayPalPaymentSection.xml | 1 + ...lExpressCheckoutMethodAndFlatRateTest.xml} | 65 +++++++++++-------- 4 files changed, 88 insertions(+), 27 deletions(-) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml rename app/code/Magento/Paypal/Test/Mftf/Test/{AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml => AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml} (57%) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml new file mode 100644 index 0000000000000..df484a55593f4 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminSelectPayPalExpressCheckoutPaymentActionGroup"> + <annotations> + <description>Selects the 'PayPal Express' Payment Method on the Storefront Checkout page.</description> + </annotations> + + <waitForElementClickable selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="waitForPayPalExpressCheckoutIsPresent"/> + <click selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="clickPayPalExpressCheckout"/> + <waitForPageLoad stepKey="waitForPaypalExpressCheckoutToBeLoaded"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml new file mode 100644 index 0000000000000..8d8151923e1ee --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="StorefrontAssertOrderDetailsOnPayPalPageActionGroup"> + <annotations> + <description>On PayPal page asserts order amount and shipping details .</description> + </annotations> + <arguments> + <argument name="subtotalAmount" type="string" defaultValue="$10.00"/> + <argument name="shippingAmount" type="string" defaultValue="$5.00"/> + <argument name="totalAmount" type="string" defaultValue="$15.00"/> + <argument name="shippingAddress" type="string" defaultValue="4145 Madison Ave, Culver City, CA 90232"/> + </arguments> + <waitForElementClickable selector="{{PayPalPaymentSection.orderTotalOnPaypalCheckout}}" stepKey="waitForAmountButtonToBeClickable"/> + <click selector="{{PayPalPaymentSection.orderTotalOnPaypalCheckout}}" stepKey="clickAmountToOpen"/> + <waitForElementVisible selector="{{PayPalPaymentSection.subtotal(subtotalAmount)}}" stepKey="assertSubtotal"/> + <waitForElementVisible selector="{{PayPalPaymentSection.shipping(shippingAmount)}}" stepKey="assertShipping"/> + <waitForText selector="{{PayPalPaymentSection.total}}" userInput="{{totalAmount}}" stepKey="assertTotal"/> + <waitForElementClickable selector="{{PayPalPaymentSection.close}}" stepKey="waitForCLoseButtonToBeClickable"/> + <click selector="{{PayPalPaymentSection.close}}" stepKey="clickCloseButton"/> + <waitForText selector="{{PayPalPaymentSection.shippingAddress}}" userInput="{{shippingAddress}}" stepKey="assertShippingAddress"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml index 4eaa59e369915..8488b52f94c9c 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml @@ -26,5 +26,6 @@ <element name="paypalCart" type="text" selector="#transactionCart"/> <element name="productNamePosition" type="text" selector=".itemName"/> <element name="orderTotalOnPaypalCheckout" type="text" selector="//div[@id='cart']//span[contains(text(),'$')]"/> + <element name="shippingAddress" type="text" selector="//div[@data-testid='shipping-address']/p[@data-testid='ship-to-address']"/> </section> </sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml similarity index 57% rename from app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml rename to app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index cd14f14ba97f1..81e0fe5e49aba 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -8,22 +8,20 @@ <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminRegisteredUsingPayPalExpressCheckoutMethodAndFlatRateTest"> + <test name="AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest"> <annotations> <features value="PayPal"/> - <stories value="Checkout Using PayPalExpress Checkout With Payment Action Is Sale"/> - <title value="Checkout Using PayPalExpress Checkout Method And Flat Rate"/> - <description value="Create Order Using PayPalExpress Checkout With Payment Action Is Sale."/> - <severity value="MAJOR"/> + <stories value="Checkout User PayPalExpress Checkout With Payment Action Is Sale"/> + <title value="Checkout User PayPalExpress Checkout Method And Flat Rate"/> + <description value="Create Order User PayPalExpress Checkout With Payment Action Is Sale."/> + <severity value="CRITICAL"/> <testCaseId value="AC-6147"/> <group value="3rd_party_integration"/> </annotations> <before> - <!-- Create Category and Product --> - <createData entity="_defaultCategory" stepKey="createCategory"/> + <!-- Create Product --> <createData entity="_defaultProduct" stepKey="createProduct"> <field key="price">10</field> - <requiredEntity createDataKey="createCategory"/> </createData> <!-- Create Customer --> <createData entity="Simple_US_Customer" stepKey="createCustomer"/> @@ -43,8 +41,8 @@ <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> <argument name="indices" value=""/> </actionGroup> - <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCache"> - <argument name="tags" value=""/> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanInvalidatedCaches"> + <argument name="tags" value="full_page"/> </actionGroup> <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="amOnProductPage"> <argument name="product" value="$createProduct$"/> @@ -60,13 +58,21 @@ </actionGroup> <!-- Go to Order review --> <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> - <waitForElementClickable selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="waitForPayPalExpressCheckoutIsPresent"/> - <click selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout')}}" stepKey="clickPayPalExpressCheckout"/> - <waitForPageLoad stepKey="waitForPaypalExpressCheckoutToBeLoaded"/> + <actionGroup ref="VerifyCheckoutPaymentOrderSummaryActionGroup" stepKey="verifyCheckoutPaymentOrderSummary"> + <argument name="orderSummarySubTotal" value="$20.00"/> + <argument name="orderSummaryShippingTotal" value="$10.00"/> + <argument name="orderSummaryTotal" value="$30.00"/> + </actionGroup> + <!-- Select Paypal paypal radio button--> + <actionGroup ref="AdminSelectPayPalExpressCheckoutPaymentActionGroup" stepKey="selectPayPalExpressCheckout"/> <!-- Click on Paypal paypal button--> <actionGroup ref="SwitchToPayPalGroupBtnActionGroup" stepKey="clickPayPalBtn"/> <!--Login to Paypal in-context--> <actionGroup ref="StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup" stepKey="LoginToPayPal"/> + <!--Verify Buyer shipping address --> + <actionGroup ref="StorefrontAssertOrderDetailsOnPayPalPageActionGroup" stepKey="assertOrderDetails"> + <argument name="shippingAddress" value="7700 West Parmer Lane, Austin, TX 78729"/> + </actionGroup> <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> <!-- See order successful Page instead of Order Review Page --> <waitForElement selector="{{CheckoutSuccessMainSection.successTitle}}" stepKey="waitForLoadSuccessPageTitle"/> @@ -74,21 +80,26 @@ <!--Grab order number--> <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="waitForOrderNumberToBeGrabbed"/> <grabTextFrom selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="grabOrderNumber"/> - <!--Go to admin sales page and open the order id--> - <actionGroup ref="OpenOrderByIdActionGroup" stepKey="openOrder"> + <!--Go to admin sales page and open the order id--> + <actionGroup ref="OpenOrderByIdActionGroup" stepKey="openOrder"> <argument name="orderId" value="{$grabOrderNumber}"/> - </actionGroup> - <!--Assert the total--> - <waitForText selector="{{AdminOrderTotalSection.grandTotal}}" userInput="$30.00" stepKey="checkGrandTotal"/> - <!--Grab the transaction id--> - <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForTransactionIDFieldToBeAppeared"/> - <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabTransactionID"/> - <!--Open comment history tab and assert the comment--> - <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistory"/> - <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Ordered amount')}}" userInput="Ordered amount of $30.00 Transaction ID: "{$grabTransactionID}"" stepKey="seeOrderHistoryNotes"/> - <waitForText selector="{{AdminOrderCommentsTabSection.orderStatus}}" userInput="Processing" stepKey="assertOrderStatusInCommentsHistorySection"/> - <!-- Open Invoice and check --> - <actionGroup ref="AdminOpenInvoiceFromOrderPageActionGroup" stepKey="openInvoiceFromOrder"/> + </actionGroup> + <!--Assert the total--> + <waitForText selector="{{AdminOrderTotalSection.grandTotal}}" userInput="$30.00" stepKey="checkGrandTotal"/> + <!--Grab the transaction id--> + <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForTransactionIDFieldToBeAppeared"/> + <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabTransactionID"/> + <!--Open comment history tab and assert the comment--> + <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistory"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $30.00 online. Transaction ID: "{$grabLastTransactionID}"" stepKey="seeOrderHistoryNotes"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderStatus}}" userInput="Processing" stepKey="assertOrderStatusInCommentsHistorySection"/> + <!-- Open Invoice and check --> + <actionGroup ref="AdminOpenInvoiceFromOrderPageActionGroup" stepKey="openInvoiceFromOrder"/> + <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForLastTransactionIDFieldToBeAppearedAfterSubmittingInvoice"/> + <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> + <!--Open the comment history tab and assert the comment--> + <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryAfterSubmittingInvoice"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $128.00 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> <after> <!-- delete category and product --> <deleteData createDataKey="createCategory" stepKey="deleteCategory"/> From 816944d32377999cd0101cca35ea421023e906b2 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 30 May 2024 09:20:15 +0530 Subject: [PATCH 066/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Ddl/Table.php | 2 +- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php | 2 +- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 1 + .../Setup/Declaration/Schema/Dto/Columns/StringBinary.php | 6 +++--- .../Framework/Setup/Declaration/Schema/Dto/Columns/Text.php | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index 0cfa50b7df5a1..e876ffa11a829 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -242,7 +242,7 @@ class Table /** * @var DtoTable */ - protected DtoTable $DtoTable; + private DtoTable $DtoTable; /*** * constructor diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php index d1ff72329e5c7..e4e0c40fcbdbd 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php @@ -21,7 +21,7 @@ class DbSchemaReader implements DbSchemaReaderInterface /** * Table type in information_schema.TABLES which allows to identify only tables and ignore views */ - protected const MYSQL_TABLE_TYPE = 'BASE TABLE'; + public const MYSQL_TABLE_TYPE = 'BASE TABLE'; /** * @var ResourceConnection diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index fe9bdcf1f8b4c..b34a7139e0880 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -3,6 +3,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); namespace Magento\Framework\Setup\Declaration\Schema\Db\MySQL; diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php index d9606c5e6621d..1d02ef53ff9bf 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/StringBinary.php @@ -37,12 +37,12 @@ class StringBinary extends Column implements /** * @var string|null */ - protected $charset; + private $charset; /** * @var string|null */ - protected $collation; + private $collation; /** * Constructor. @@ -142,7 +142,7 @@ public function getDiffSensitiveParams() 'length' => $this->getLength(), 'comment' => $this->getComment() ]; - if ($this->getType() == "varchar") { + if ($this->getType() === 'varchar') { $param['collation'] = $this->getCollation(); $param['charset'] = $this->getCharset(); } diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php index d453df6122b1c..c0fb47f99799c 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Columns/Text.php @@ -25,12 +25,12 @@ class Text extends Column implements /** * @var string|null */ - protected $charset; + private $charset; /** * @var string|null */ - protected $collation; + private $collation; /** * Constructor. From 9fca23bb531f65c8ea9034ef8f64bd0ee85be8dd Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 30 May 2024 09:31:11 +0530 Subject: [PATCH 067/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index b34a7139e0880..cb3e377e4a640 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -348,7 +348,7 @@ private function getNextAutoIncrementValue(string $tableName, string $resource): * @param array $statementsSql * @return array */ - private function removeConstraint($statementsSql): array + private function removeConstraint(array $statementsSql): array { $sqlStmtWithoutAddingConstraint = []; if (count($statementsSql)) { From 4b442d842d84dab03b97fe8e809e20f254d68308 Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Thu, 30 May 2024 11:42:28 +0530 Subject: [PATCH 068/460] ACQE-5754 : Create Order User PayPalExpress Checkout With Payment Action Is Sale paypal expreess checkout with flatrate shipping --- .../PayPalPaymentSection.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml index 8488b52f94c9c..cbba877dad3ad 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml @@ -26,6 +26,10 @@ <element name="paypalCart" type="text" selector="#transactionCart"/> <element name="productNamePosition" type="text" selector=".itemName"/> <element name="orderTotalOnPaypalCheckout" type="text" selector="//div[@id='cart']//span[contains(text(),'$')]"/> + <element name="subtotal" type="text" selector="//div[@data-testid='line-item-subtotal']//span[contains(text(),'{{subtotal}}')]" parameterized="true"/> + <element name="shipping" type="text" selector="//div[@data-testid='line-item-shipping']//span[contains(text(),'{{shippingAmount}}')]" parameterized="true"/> + <element name="total" type="text" selector="//span[@data-testid='cart-sheet-total']"/> <element name="shippingAddress" type="text" selector="//div[@data-testid='shipping-address']/p[@data-testid='ship-to-address']"/> + <element name="close" type="button" selector="//button[@class='InterstitialHeader_closeBtn_36m7m']//span"/> </section> </sections> From e62a916cce0071cafdeb63aba25b3285a8b32f35 Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Thu, 30 May 2024 14:19:52 +0530 Subject: [PATCH 069/460] ACQE-5754 : Create Order User PayPalExpress Checkout With Payment Action Is Sale paypal expreess checkout with flatrate shipping --- ...gisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 81e0fe5e49aba..19a083be7ca6c 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -70,9 +70,7 @@ <!--Login to Paypal in-context--> <actionGroup ref="StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup" stepKey="LoginToPayPal"/> <!--Verify Buyer shipping address --> - <actionGroup ref="StorefrontAssertOrderDetailsOnPayPalPageActionGroup" stepKey="assertOrderDetails"> - <argument name="shippingAddress" value="7700 West Parmer Lane, Austin, TX 78729"/> - </actionGroup> + <waitForText selector="{{PayPalPaymentSection.shippingAddress}}" userInput="7700 West Parmer Lane, Austin, TX 78729" stepKey="assertShippingAddress"/> <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> <!-- See order successful Page instead of Order Review Page --> <waitForElement selector="{{CheckoutSuccessMainSection.successTitle}}" stepKey="waitForLoadSuccessPageTitle"/> From 252c734eb789cdae93b3bca2c781e6a24c9ce92c Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Thu, 30 May 2024 14:35:57 +0530 Subject: [PATCH 070/460] ACQE-5754 : Create Order User PayPalExpress Checkout With Payment Action Is Sale paypal expreess checkout with flatrate shipping --- ...RegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 19a083be7ca6c..2fea5d934532f 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -99,8 +99,6 @@ <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryAfterSubmittingInvoice"/> <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $128.00 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> <after> - <!-- delete category and product --> - <deleteData createDataKey="createCategory" stepKey="deleteCategory"/> <deleteData createDataKey="createProduct" stepKey="deleteProduct"/> <!-- Disable PayPal Express Checkout and Basic setting change --> <actionGroup ref="AdminPayPalExpressCheckoutDisableActionGroup" stepKey="configPaypalExpressCheckoutDisable"/> From a0c3fb7e6d6cee130306f504665defd061b4fe0b Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Thu, 30 May 2024 14:37:11 +0530 Subject: [PATCH 071/460] ACQE-5754 : Create Order User PayPalExpress Checkout With Payment Action Is Sale paypal expreess checkout with flatrate shipping --- ...nRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 2fea5d934532f..89711759a7f08 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -99,6 +99,7 @@ <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryAfterSubmittingInvoice"/> <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $128.00 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> <after> + <!--Delete product --> <deleteData createDataKey="createProduct" stepKey="deleteProduct"/> <!-- Disable PayPal Express Checkout and Basic setting change --> <actionGroup ref="AdminPayPalExpressCheckoutDisableActionGroup" stepKey="configPaypalExpressCheckoutDisable"/> From 27779ab28cbe1d22d13a8b53dbe0890b444c5bd3 Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Fri, 31 May 2024 09:09:57 +0530 Subject: [PATCH 072/460] ACQE-5754 : Create Order User PayPalExpress Checkout With Payment Action Is Sale paypal expreess checkout with flatrate shipping --- ...RegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 89711759a7f08..6cda3c78d997b 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -97,7 +97,7 @@ <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> <!--Open the comment history tab and assert the comment--> <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryAfterSubmittingInvoice"/> - <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $128.00 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $30.00 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> <after> <!--Delete product --> <deleteData createDataKey="createProduct" stepKey="deleteProduct"/> From f73748be6ab747557e7bdef787eb2e07a533bf1c Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Fri, 31 May 2024 13:58:31 +0530 Subject: [PATCH 073/460] ACQE-5754 : Create Order User PayPalExpress Checkout With Payment Action Is Sale paypal expreess checkout with flatrate shipping --- ...teredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 6cda3c78d997b..e0612385d2f61 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -93,11 +93,6 @@ <waitForText selector="{{AdminOrderCommentsTabSection.orderStatus}}" userInput="Processing" stepKey="assertOrderStatusInCommentsHistorySection"/> <!-- Open Invoice and check --> <actionGroup ref="AdminOpenInvoiceFromOrderPageActionGroup" stepKey="openInvoiceFromOrder"/> - <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForLastTransactionIDFieldToBeAppearedAfterSubmittingInvoice"/> - <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> - <!--Open the comment history tab and assert the comment--> - <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryAfterSubmittingInvoice"/> - <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $30.00 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> <after> <!--Delete product --> <deleteData createDataKey="createProduct" stepKey="deleteProduct"/> @@ -105,8 +100,8 @@ <actionGroup ref="AdminPayPalExpressCheckoutDisableActionGroup" stepKey="configPaypalExpressCheckoutDisable"/> <magentoCLI command="config:set {{StorefrontPaypalExpressAuthorizationPaymentActionOptionConfigData.path}} {{StorefrontPaypalExpressAuthorizationPaymentActionOptionConfigData.value}}" stepKey="paymentActionChangeToAuthorization"/> <actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/> - <!--Delete customer --> <actionGroup ref="StorefrontCustomerLogoutActionGroup" stepKey="logoutCustomer" /> + <!--Delete customer --> <deleteData stepKey="deleteCustomer" createDataKey="createCustomer"/> </after> </test> From c20f6f6565e9c4f4eaafcfbb80a8298a5b31edfb Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 31 May 2024 14:07:47 +0530 Subject: [PATCH 074/460] ACQE-6570:Check config for PayPal Credit in Unites States Correction On ActionGroup added For ReIndex and Clean Cache --- ...nfigForPaymentsAdvancedPaypalCreditActionGroup.xml | 2 +- ...nEnablePaymentAdvancedConfigurationActionGroup.xml | 2 +- app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml | 2 +- ...AdminConfigPaymentsAdvancedForPaypalCreditTest.xml | 11 ++++++++--- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml index 2b9c0d99f17ea..336d9c1c4d87b 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml @@ -25,7 +25,7 @@ <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="assertPaymentAdvanced"/> <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsPro(countryCode)}}" stepKey="assertPaymentsPro"/> <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsStandard(countryCode)}}" stepKey="assertPaymentStandard"/> - <wait time="10" stepKey="waitForConfigurebtnForPaymentsAdvanced"/> + <waitForElementClickable selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="waitToClickPaymentAdvanced"/> <click selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="clickPaymentAdvanced"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml index efafa9b594e00..159ea95bf00c7 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml @@ -13,7 +13,7 @@ <description>Configuration for Payments Advanced and Paypal credit Sample PayPal credentials</description> </annotations> <arguments> - <argument name="credentials" defaultValue="SamplePaypalPaymentsAdvancedConfig2"/> + <argument name="credentials" defaultValue="SamplePaypalPaymentsAdvancedConfig"/> <argument name="countryCode" type="string" defaultValue="us"/> </arguments> <scrollTo selector="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" stepKey="scrollToBottom"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index 91d35ff0f11ee..1459565d79784 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -224,7 +224,7 @@ <data key="paypal_express_merchantID">54Z2EE6T7PRB4</data> </entity> <!-- configuration used for paypal PaymentsAdvanced--> - <entity name="SamplePaypalPaymentsAdvancedConfig2" type="payflow_advanced_config"> + <entity name="SamplePaypalPaymentsAdvancedConfig" type="payflow_advanced_config"> <data key="payflow_advanced_partner">PayPal</data> <data key="payflow_advanced_user">mpilink</data> <data key="payflow_advanced_vendor">mpilink</data> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml index 7a8afaef13e26..ce130686b2882 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml @@ -27,7 +27,7 @@ </before> <after> <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> - <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> + <magentoCLI command="config:set paypal/general/merchant_country 0" stepKey="setMerchantCountryAsUS"/> <magentoCLI command="config:set payment/payflow_advanced/active 0" stepKey="disablePaymentsAdvanced"/> <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> @@ -41,8 +41,13 @@ <actionGroup ref="AdminEnablePaymentAdvancedConfigurationActionGroup" stepKey="enablePaymentsAdvanced"/> <!--Save Configuration--> <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfigs"/> - <magentoCLI command="indexer:reindex" stepKey="performReindex"/> - <magentoCLI command="cache:flush" stepKey="cleanCache"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!--Login to storefront as guest customer--> <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> <waitForPageLoad stepKey="waitForProductPage"/> From 62db8f5dac4409f57cd86bc4904437ec791fcbb5 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Sun, 2 Jun 2024 06:33:29 +0530 Subject: [PATCH 075/460] ACQE-6491:Default configuration for Paypal Pay Later Message on Checkout Page Renamed AdminEnablePaypalPaylaterConfigurationActionGroup --- ...ml => AdminEnablePaypalPaylaterConfigurationActionGroup.xml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename app/code/Magento/Paypal/Test/Mftf/ActionGroup/{EnablePaypalPaylaterConfigurationActionGroup.xml => AdminEnablePaypalPaylaterConfigurationActionGroup.xml} (97%) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml similarity index 97% rename from app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml index df927dc40a39b..42b0f8fd0bb1f 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/EnablePaypalPaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml @@ -7,7 +7,7 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="EnablePaypalPaylaterConfigurationActionGroup" > + <actionGroup name="AdminEnablePaypalPaylaterConfigurationActionGroup" > <annotations> <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> </annotations> From fb5415490b511b5d5e4144463500e09bb57b9b92 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Sun, 2 Jun 2024 06:37:47 +0530 Subject: [PATCH 076/460] ACQE-6491:Default configuration for Paypal Pay Later Message on Checkout Page Correction Of ActionGroup On ConfigurationPaypalPaylaterSuite --- .../Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml index e58dfe13a4562..1d6b2ddfe0e75 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml @@ -14,7 +14,7 @@ <argument name="credentials" value="SamplePaypalExpressConfig2"/> </actionGroup> <!--Enable Paylater Solution On Admin Cart Page --> - <actionGroup ref="EnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaylaterOnAdminCartConfiguration"> + <actionGroup ref="AdminEnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaylaterOnAdminCartConfiguration"> </actionGroup> <!--Click on Save configure Button --> <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> From 0de7ee9d1261e8606bc4143fbd5a0b921643424d Mon Sep 17 00:00:00 2001 From: Manikayala <81371915+Manikayala@users.noreply.github.com> Date: Thu, 6 Jun 2024 14:35:08 +0530 Subject: [PATCH 077/460] ACQE-5754:Create Order User PayPalExpress Checkout With Payment Action Is Sale --- ...RegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index e0612385d2f61..351e81792d1aa 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -89,7 +89,7 @@ <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabTransactionID"/> <!--Open comment history tab and assert the comment--> <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistory"/> - <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $30.00 online. Transaction ID: "{$grabLastTransactionID}"" stepKey="seeOrderHistoryNotes"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $30.00 online. Transaction ID: "{$grabTransactionID}"" stepKey="seeOrderHistoryNotes"/> <waitForText selector="{{AdminOrderCommentsTabSection.orderStatus}}" userInput="Processing" stepKey="assertOrderStatusInCommentsHistorySection"/> <!-- Open Invoice and check --> <actionGroup ref="AdminOpenInvoiceFromOrderPageActionGroup" stepKey="openInvoiceFromOrder"/> From 1d88348daaad0e530efd48a3c54bfe366c1567a8 Mon Sep 17 00:00:00 2001 From: Manikayala <81371915+Manikayala@users.noreply.github.com> Date: Fri, 7 Jun 2024 13:09:08 +0530 Subject: [PATCH 078/460] ACQE-5754:Create Order User PayPalExpress Checkout With Payment Action Is Sale --- ...nRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 351e81792d1aa..63da698dba00d 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -17,6 +17,7 @@ <severity value="CRITICAL"/> <testCaseId value="AC-6147"/> <group value="3rd_party_integration"/> + <group value="pr_exclude"/> </annotations> <before> <!-- Create Product --> From 3f37841d459e7f1482344404366a9c39bd1e21b1 Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Wed, 19 Jun 2024 13:11:12 +0530 Subject: [PATCH 079/460] AC-6116 :Cancel an order with paypal express checkout as payment method paypal --- .../SwitchToPayPalGroupBtnActionGroup.xml | 31 ++++----- .../AdminCancelPaypalExpressCheckoutTest.xml | 64 +++++++++++++++++++ 2 files changed, 80 insertions(+), 15 deletions(-) create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml index 2e57bdf6265b1..2ab99867fc6f5 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml @@ -8,19 +8,20 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="SwitchToPayPalGroupBtnActionGroup"> - <annotations> - <description>Switch to Paypal group button</description> - </annotations> - <arguments> - <argument name="elementNumber" type="string" defaultValue="0"/> - </arguments> - <!--set ID for iframe of PayPal group button--> - <executeJS function="document.getElementsByClassName('component-frame')[{{elementNumber}}].setAttribute('name', 'myFrame');" stepKey="setIDForIframe"/> - <!--switch to iframe of PayPal group button--> - <switchToIFrame userInput="myFrame" stepKey="switchToIframe"/> - <waitForElementVisible selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="waitForPayPalBtn"/> - <click selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="clickPayPalBtn"/> - <switchToIFrame stepKey="switchBackToMainFrame"/> - </actionGroup> +<actionGroup name="SwitchToPayPalGroupBtnActionGroup"> + <annotations> + <description>Switch to Paypal group button</description> + </annotations> + <arguments> + <argument name="elementNumber" type="string" defaultValue="0"/> + <argument name="frameName" type="string" defaultValue="myFrame"/> + </arguments> + <!--set ID for iframe of PayPal group button--> + <executeJS function="document.getElementsByClassName('component-frame')[{{elementNumber}}].setAttribute('name', '{{frameName}}');" stepKey="setIDForIframe"/> + <!--switch to iframe of PayPal group button--> + <switchToIFrame userInput="{{frameName}}" stepKey="switchToIframe"/> + <waitForElementClickable selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="waitForPayPalBtn"/> + <click selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="clickPayPalBtn"/> + <switchToIFrame stepKey="switchBackToMainFrame"/> +</actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml new file mode 100644 index 0000000000000..9163efe909e7c --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminCancelPaypalExpressCheckoutTest"> + <annotations> + <features value="PayPal"/> + <stories value="Cancel an order with paypal express checkout"/> + <title value="Cancel an order with paypal express checkout with valid credentials"/> + <description value="Cancel an order with paypal express checkout as payment method"/> + <severity value="CRITICAL"/> + <testCaseId value="AC-6116"/> + <group value="3rd_party_integration"/> + </annotations> + <before> + <!-- Create Product --> + <createData entity="_defaultProduct" stepKey="createSimpleProduct"> + <field key="price">10</field> + </createData> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <!-- Configure Paypal Express Checkout --> + <actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="ConfigPayPalExpress"> + <argument name="credentials" value="SamplePaypalExpressConfig2"/> + </actionGroup> + </before> + <after> + <magentoCLI command="config:set payment/paypal_express/active 0" stepKey="disablePayPalExpress"/> + <deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + </after> + <!-- Go to storefront home page --> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="openProductPage"> + <argument name="product" value="$createSimpleProduct$"/> + </actionGroup> + <!-- Click on PayPal payment button --> + <actionGroup ref="SwitchToPayPalGroupBtnActionGroup" stepKey="clickPayPalBtn"/> + <!-- display PayPal popup and close the PayPal popup--> + <switchToNextTab stepKey="switchToDownloadedLinkTab"/> + <waitForPageLoad stepKey="waitForPageLoad"/> + <closeTab stepKey="closeStorefrontTab"/> + <waitForPageLoad stepKey="waitForPageLoadAgain" time="30"/> + <!-- Goes to Shopping Cart page and Product is added to cart --> + <seeInCurrentUrl url="{{CheckoutCartPage.url}}" stepKey="assertUrl"/> + <seeInField userInput="1" selector="{{CheckoutCartProductSection.ProductQuantityByName($$createSimpleProduct.name$$)}}" stepKey="seeInQtyField20"/> + <!-- Again Click on PayPal payment button --> + <actionGroup ref="SwitchToPayPalGroupBtnActionGroup" stepKey="clickPayPalBtnAgain"> + <argument name="elementNumber" value="1"/> + <argument name="frameName" value="myFrame2"/> + </actionGroup> + <!-- Login to Paypal in-context--> + <actionGroup ref="StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup" stepKey="loginToPayPal"/> + <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> + <actionGroup ref="StorefrontPlaceOrderOnOrderReviewPageActionGroup" stepKey="clickPlaceOrderBtn"/> + <!-- I see order successful Page --> + <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="waitForOrderNumberToBeGrabbed"/> + <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="grabOrderNumber"/> + </test> +</tests> From fbc1c0aabc93eea7762a6fb6e0a8ad80e585c024 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Fri, 21 Jun 2024 17:45:18 +0530 Subject: [PATCH 080/460] ACQE-6733 : Verify Terms and Conditions The testcase intends to Verify that Terms and Conditions is presented on storefront for non main website. --- ...sAndConditionsConfigurationActionGroup.xml | 17 +++ ...sAndConditionsConfigurationActionGroup.xml | 17 +++ ...ndConditionsCustomStoreViewActionGroup.xml | 19 +++ .../Test/Mftf/Data/TermData.xml | 16 +++ .../StorefrontCheckoutAgreementsSection.xml | 2 + ...nditionsPresentedForNonMainWebsiteTest.xml | 114 ++++++++++++++++++ 6 files changed, 185 insertions(+) create mode 100644 app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminDisableTermsAndConditionsConfigurationActionGroup.xml create mode 100644 app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminEnableTermsAndConditionsConfigurationActionGroup.xml create mode 100644 app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml create mode 100644 app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminDisableTermsAndConditionsConfigurationActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminDisableTermsAndConditionsConfigurationActionGroup.xml new file mode 100644 index 0000000000000..022ac0176c8be --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminDisableTermsAndConditionsConfigurationActionGroup.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminDisableTermsAndConditionsConfigurationActionGroup"> + <annotations> + <description>Disable Terms and Conditions On Configuration page.</description> + </annotations> + + <magentoCLI command="config:set {{disableTermsAndConditions.path}} {{disableTermsAndConditions.value}}" stepKey="DisableTermsAndConditions"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminEnableTermsAndConditionsConfigurationActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminEnableTermsAndConditionsConfigurationActionGroup.xml new file mode 100644 index 0000000000000..0d7d1eda73583 --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminEnableTermsAndConditionsConfigurationActionGroup.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminEnableTermsAndConditionsConfigurationActionGroup"> + <annotations> + <description>Enable Terms and Conditions On Configuration page.</description> + </annotations> + + <magentoCLI command="config:set {{enableTermsAndConditions.path}} {{enableTermsAndConditions.value}}" stepKey="EnableTermsAndConditions"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml new file mode 100644 index 0000000000000..6b31e0ae1e72d --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminFillTermsAndConditionsCustomStoreViewActionGroup" extends="AdminTermsConditionsFillTermEditFormActionGroup"> + <arguments> + <argument name="storeView" type="string" defaultValue="customStoreEN.name"/> + </arguments> + + <remove keyForRemoval="selectOptionStoreView"/> + <selectOption selector="{{AdminNewTermFormSection.storeView}}" userInput="{{storeView}}" stepKey="selectOptionStoreView" /> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml index 5fd439c0ce244..b3b27fc9febbc 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml @@ -53,4 +53,20 @@ <data key="checkboxText" unique="suffix">test_checkbox</data> <data key="content" unique="suffix">TestMessage</data> </entity> + <entity name="enableTextTerm" type="term"> + <data key="name">Test Condition</data> + <data key="isActive">Enabled</data> + <data key="isHtml">Text</data> + <data key="mode">Manually</data> + <data key="checkboxText">Terms and Conditions</data> + <data key="content">terms text</data> + </entity> + <entity name="enableTermsAndConditions" type="term"> + <data key="path">checkout/options/enable_agreements</data> + <data key="value">1</data> + </entity> + <entity name="disableTermsAndConditions" type="term"> + <data key="path">checkout/options/enable_agreements</data> + <data key="value">0</data> + </entity> </entities> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index e62148ad30a94..6729cb707fe36 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -13,5 +13,7 @@ <element name="checkoutAgreementButton" type="button" selector="div.checkout-agreements-block > div > div > div > label > button > span"/> <element name="checkoutAgreementErrorMessage" type="button" selector="div.checkout-agreement.field.choice.required > div.mage-error"/> <element name="checkoutAgreementCheckboxcheck" type="checkbox" selector="//span[text()='{{agreementname}}']/../../../input[@type='checkbox']" parameterized="true"/> + <element name="contentArea" type="text" selector="#modal-content-12 #checkout-agreements-modal .checkout-agreements-item-content"/> + <element name="close" type="button" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//footer//span"/> </section> </sections> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml new file mode 100644 index 0000000000000..cc3c87d260ed0 --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest"> + <annotations> + <features value="CheckoutAgreements"/> + <stories value="Verify that Terms and Conditions is presented on storefront for non main website."/> + <title value="Verify Terms and Conditions"/> + <description value="The testcase intends to Verify that Terms and Conditions is presented on storefront for non main website."/> + <severity value="MAJOR"/> + <testCaseId value="AC-4595"/> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <createData entity="SimpleProduct" stepKey="createSimpleProduct"/> + <actionGroup ref="AdminEnableTermsAndConditionsConfigurationActionGroup" stepKey="EnableTermsAndConditions"/> + <!-- Create Additional website--> + <actionGroup ref="AdminCreateWebsiteActionGroup" stepKey="createWebsite"> + <argument name="newWebsiteName" value="{{customWebsite.name}}"/> + <argument name="websiteCode" value="{{customWebsite.code}}"/> + </actionGroup> + <!-- Create Additional store --> + <actionGroup ref="CreateCustomStoreActionGroup" stepKey="createCustomStore"> + <argument name="website" value="{{customWebsite.name}}"/> + <argument name="store" value="{{customStoreGroup.name}}"/> + <argument name="rootCategory" value="Default Category"/> + </actionGroup> + <!-- Create Additional store view --> + <actionGroup ref="AdminCreateStoreViewActionGroup" stepKey="createCustomStoreView"> + <argument name="StoreGroup" value="customStoreGroup"/> + <argument name="customStore" value="customStoreEN"/> + </actionGroup> + </before> + <after> + <!--Delete created data--> + <deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/> + <!--Set the main website as default--> + <actionGroup ref="AdminSetDefaultWebsiteActionGroup" stepKey="setMainWebsiteAsDefault"> + <argument name="websiteName" value="{{_defaultWebsite.name}}"/> + </actionGroup> + <!--Delete website--> + <actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite"> + <argument name="websiteName" value="{{customWebsite.name}}"/> + </actionGroup> + <actionGroup ref="AdminTermsConditionsOpenGridActionGroup" stepKey="openTermsGridToDelete"/> + <actionGroup ref="AdminDeleteAllTermConditionsActionGroup" stepKey="deleteAllTerms"/> + <actionGroup ref="AdminDisableTermsAndConditionsConfigurationActionGroup" stepKey="DisableTermsAndConditions"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logOutOfAdmin"/> + </after> + <!-- Open simple product to additional website --> + <actionGroup ref="AdminProductPageOpenByIdActionGroup" stepKey="openProductEditPage"> + <argument name="productId" value="$createSimpleProduct.id$"/> + </actionGroup> + <actionGroup ref="AdminAssignProductInWebsiteActionGroup" stepKey="assignProductToAdditionalWebsite"> + <argument name="website" value="{{customWebsite.name}}"/> + </actionGroup> + <actionGroup ref="AdminUnassignProductInWebsiteActionGroup" stepKey="unAssignProductFromDefaultWebsite"> + <argument name="website" value="{{_defaultWebsite.name}}"/> + </actionGroup> + <actionGroup ref="SaveProductFormActionGroup" stepKey="saveSimpleProduct"/> + <!-- Open New Terms And Conditions Page--> + <actionGroup ref="AdminTermsConditionsOpenNewTermPageActionGroup" stepKey="openNewTerm"/> + <!-- Fill the Required Details--> + <actionGroup ref="AdminFillTermsAndConditionsCustomStoreViewActionGroup" stepKey="fillNewTerm"> + <argument name="term" value="enableTextTerm"/> + <argument name="storeView" value="{{customStoreEN.name}}"/> + </actionGroup> + <!-- Save Details--> + <actionGroup ref="AdminTermsConditionsSaveTermActionGroup" stepKey="saveFilledTerm"/> + <!--Set Additional website as default website--> + <actionGroup ref="AdminSetDefaultWebsiteActionGroup" stepKey="setAdditionalWebsiteAsDefault"> + <argument name="websiteName" value="{{customWebsite.name}}"/> + </actionGroup> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value="catalogsearch_fulltext catalog_category_product catalog_product_price catalogrule_rule"/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!--Add product to cart.--> + <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addProductToCart"> + <argument name="product" value="$createSimpleProduct$"/> + </actionGroup> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> + <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> + <!--Filling shipping information and click next--> + <actionGroup ref="GuestCheckoutFillingShippingSectionActionGroup" stepKey="guestCheckoutFillingShipping"> + <argument name="shippingMethod" value="Flat Rate"/> + <argument name="customerVar" value="Simple_US_Customer_NY"/> + <argument name="customerAddressVar" value="US_Address_NY"/> + </actionGroup> + <actionGroup ref="CheckoutSelectCheckMoneyOrderPaymentActionGroup" stepKey="selectCheckMoneyPayment"/> + <!--Check-box with text for Terms and Condition is present--> + <waitForElement selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="seeTermInCheckout"/> + <waitForElement selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton(enableTextTerm.checkboxText)}}" stepKey="seeTermTextInCheckoutIsPresent"/> + <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" stepKey="waitForTermsAndConditionsLinkToBeClickable"/> + <click selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" stepKey="ClickOnTermsAndConditionsLink"/> + <waitForText selector="{{StorefrontCheckoutAgreementsSection.contentArea}}" userInput="{{enableTextTerm.content}}" stepKey="verifyTextMessage"/> + <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="waitForCloseToBeClickable"/> + <click selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="ClickOnClose"/> + <!-- Check check-box for Terms and Condition--> + <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckBoxToBeClickable"/> + <checkOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="checkAgreement"/> + <actionGroup ref="ClickPlaceOrderActionGroup" stepKey="placeOrder"/> + <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/> + </test> +</tests> From 140c2e159329644160bfd5c526f77d26346e0209 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Sat, 22 Jun 2024 15:23:20 +0530 Subject: [PATCH 081/460] ACQE-6733 : Verify Terms and Conditions modified xpath related to contentArea --- .../Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml | 2 +- ...orefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index 6729cb707fe36..db0a5d7507fc8 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -13,7 +13,7 @@ <element name="checkoutAgreementButton" type="button" selector="div.checkout-agreements-block > div > div > div > label > button > span"/> <element name="checkoutAgreementErrorMessage" type="button" selector="div.checkout-agreement.field.choice.required > div.mage-error"/> <element name="checkoutAgreementCheckboxcheck" type="checkbox" selector="//span[text()='{{agreementname}}']/../../../input[@type='checkbox']" parameterized="true"/> - <element name="contentArea" type="text" selector="#modal-content-12 #checkout-agreements-modal .checkout-agreements-item-content"/> + <element name="contentArea" type="text" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//div[@class='checkout-agreements-item-content' and contains(text(), '{{contentText}}')]" parameterized="true"/> <element name="close" type="button" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//footer//span"/> </section> </sections> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index cc3c87d260ed0..96d746fe8bbde 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -102,7 +102,7 @@ <waitForElement selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton(enableTextTerm.checkboxText)}}" stepKey="seeTermTextInCheckoutIsPresent"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" stepKey="waitForTermsAndConditionsLinkToBeClickable"/> <click selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" stepKey="ClickOnTermsAndConditionsLink"/> - <waitForText selector="{{StorefrontCheckoutAgreementsSection.contentArea}}" userInput="{{enableTextTerm.content}}" stepKey="verifyTextMessage"/> + <waitForElement selector="{{StorefrontCheckoutAgreementsSection.contentArea(enableTextTerm.content)}}" stepKey="verifyTextMessage"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="waitForCloseToBeClickable"/> <click selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="ClickOnClose"/> <!-- Check check-box for Terms and Condition--> From af17205f1e55e28dee867a82b9fe602ba8dbc602 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Tue, 25 Jun 2024 10:51:38 +0530 Subject: [PATCH 082/460] ACQE-6733 : Verify Terms and Conditions Created new xpath to check checkbox --- .../Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml | 1 + ...orefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index db0a5d7507fc8..7d766c2e09f74 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -15,5 +15,6 @@ <element name="checkoutAgreementCheckboxcheck" type="checkbox" selector="//span[text()='{{agreementname}}']/../../../input[@type='checkbox']" parameterized="true"/> <element name="contentArea" type="text" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//div[@class='checkout-agreements-item-content' and contains(text(), '{{contentText}}')]" parameterized="true"/> <element name="close" type="button" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//footer//span"/> + <element name="defaultPaymentAgreementCheckboxCheck" type="checkbox" selector="//div[@class='payment-method _active']//span[text()='{{agreementName}}']/../../../input[@type='checkbox']" parameterized="true"/> </section> </sections> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index 96d746fe8bbde..50791c04bf8e7 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -107,7 +107,7 @@ <click selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="ClickOnClose"/> <!-- Check check-box for Terms and Condition--> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckBoxToBeClickable"/> - <checkOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="checkAgreement"/> + <checkOption selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="checkAgreement"/> <actionGroup ref="ClickPlaceOrderActionGroup" stepKey="placeOrder"/> <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/> </test> From 8cd366985b34a68fbe0adb2ab7ab800013738252 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Tue, 25 Jun 2024 13:20:12 +0530 Subject: [PATCH 083/460] AC-9755: Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Ddl/Table.php | 13 +++---------- .../Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 12 ++++++++++-- .../Declaration/Schema/Dto/Factories/Table.php | 4 ++-- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index e876ffa11a829..22e63f74f61b6 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -657,8 +657,7 @@ public function setOption($key, $value) * Return null if option does not exist * * @param string $key - * @return null|string - * @throws \ReflectionException + * @return mixed|string|null */ public function getOption($key) { @@ -666,16 +665,10 @@ public function getOption($key) return null; } if (strtolower($key) == 'charset') { - $refClass = new \ReflectionClass(DtoTable::class); - $refMethod = $refClass->getMethod('getDefaultCharset'); - $refMethod->setAccessible(true); - return $refMethod->invoke($this->DtoTable); + return $this->DtoTable->getDefaultCharset(); } if (strtolower($key) == 'collate') { - $refClass = new \ReflectionClass(DtoTable::class); - $refMethod = $refClass->getMethod('getDefaultCollation'); - $refMethod->setAccessible(true); - return $refMethod->invoke($this->DtoTable); + return $this->DtoTable->getDefaultCollation(); } return $this->_options[$key]; } diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index cb3e377e4a640..6d2ba6ab6b086 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -65,6 +65,15 @@ class DbSchemaWriter implements DbSchemaWriterInterface */ private ?string $addForeignKeyStatement = null; + /*** + * @var array + */ + private array $varcharPrimaryKeyTable = [ + 'sales_order_status_state', + 'sales_order_status_label', + 'weee_tax' + ]; + /** * @param ResourceConnection $resourceConnection * @param StatementFactory $statementFactory @@ -294,8 +303,7 @@ public function compile(StatementAggregator $statementAggregator, $dryRun) ) ); } else { - $varcharPrimaryKeyTable = ['sales_order_status_state','sales_order_status_label','weee_tax']; - if (in_array($statement->getTableName(), $varcharPrimaryKeyTable)) { + if (in_array($statement->getTableName(), $this->varcharPrimaryKeyTable)) { $statementsSql = $this->removeConstraint($statementsSql); } diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php index 04cd5b02462c4..08a93ee80e0e5 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php @@ -122,7 +122,7 @@ public function create(array $data) * * @return string */ - private function getDefaultCharset(): string + public function getDefaultCharset(): string { if ($this->sqlVersionProvider->isMysqlGte8029()) { return self::$defaultCharset['mysql_8_29']; @@ -137,7 +137,7 @@ private function getDefaultCharset(): string * * @return string */ - private function getDefaultCollation(): string + public function getDefaultCollation(): string { if ($this->sqlVersionProvider->isMysqlGte8029()) { return self::$defaultCollation['mysql_8_29']; From b918fc3cc6a8c664ec23efadb856f60f484791a6 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Tue, 25 Jun 2024 15:53:45 +0530 Subject: [PATCH 084/460] ACQE-6733 : Verify Terms and Conditions Added waitElementClickable and scrollTo for checkbox element --- ...refrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index 50791c04bf8e7..c01b407f22a25 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -106,7 +106,8 @@ <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="waitForCloseToBeClickable"/> <click selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="ClickOnClose"/> <!-- Check check-box for Terms and Condition--> - <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckBoxToBeClickable"/> + <scrollTo selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="scrollToAgreementCheckBox"/> + <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="waitForCheckBoxToBeClickable"/> <checkOption selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="checkAgreement"/> <actionGroup ref="ClickPlaceOrderActionGroup" stepKey="placeOrder"/> <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/> From 87a3e5b2c9ff6cb5a001113b39c711cef29bf45a Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 26 Jun 2024 11:55:44 +0530 Subject: [PATCH 085/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Ddl/Table.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index 22e63f74f61b6..11da5ae300eab 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -239,18 +239,18 @@ class Table */ protected $_options = ['type' => 'INNODB', 'charset' => 'utf8', 'collate' => 'utf8_general_ci']; - /** - * @var DtoTable + /*** + * @var DtoTable|mixed|null */ - private DtoTable $DtoTable; + private ?DtoTable $DtoTable; /*** * constructor * - * @param DtoTable|null $DtoTable $DtoTable + * @param DtoTable|null $DtoTable */ public function __construct( - DtoTable $DtoTable = null + ?DtoTable $DtoTable = null ) { $this->DtoTable = $DtoTable ?: ObjectManager::getInstance()->get(DtoTable::class); } From 8115da7cc70f6fd6cf927950937d6ffeac76b6de Mon Sep 17 00:00:00 2001 From: sharuksyed <92149337+glo74186@users.noreply.github.com> Date: Wed, 26 Jun 2024 14:26:08 +0530 Subject: [PATCH 086/460] ACQE-6733 : Verify Terms and Conditions Used selectOption instead of checkOption --- ...orefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index c01b407f22a25..aba16bf40684d 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -108,7 +108,7 @@ <!-- Check check-box for Terms and Condition--> <scrollTo selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="scrollToAgreementCheckBox"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="waitForCheckBoxToBeClickable"/> - <checkOption selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="checkAgreement"/> + <selectOption selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="checkAgreement"/> <actionGroup ref="ClickPlaceOrderActionGroup" stepKey="placeOrder"/> <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/> </test> From 05f60ee5b5ceed9f804cda0af7ed9cc754e58724 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Wed, 26 Jun 2024 16:07:41 +0530 Subject: [PATCH 087/460] ACQE-6733 : Verify Terms and Conditions Added actionGroup to check with terms and conditions checkbox --- ...tTermsAndConditionsPresentedForNonMainWebsiteTest.xml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index aba16bf40684d..8ca4faeef34af 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -105,11 +105,8 @@ <waitForElement selector="{{StorefrontCheckoutAgreementsSection.contentArea(enableTextTerm.content)}}" stepKey="verifyTextMessage"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="waitForCloseToBeClickable"/> <click selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="ClickOnClose"/> - <!-- Check check-box for Terms and Condition--> - <scrollTo selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="scrollToAgreementCheckBox"/> - <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="waitForCheckBoxToBeClickable"/> - <selectOption selector="{{StorefrontCheckoutAgreementsSection.defaultPaymentAgreementCheckboxCheck(enableTextTerm.checkboxText)}}" stepKey="checkAgreement"/> - <actionGroup ref="ClickPlaceOrderActionGroup" stepKey="placeOrder"/> - <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/> + <actionGroup ref="AssertStorefrontTermInCheckoutActionGroup" stepKey="assertTermInCheckoutAndPlaceOrder"> + <argument name="termCheckboxText" value="{{enableTextTerm.checkboxText}}"/> + </actionGroup> </test> </tests> From ddd84053a6821031ec0105d9c4b8351907502c36 Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Thu, 27 Jun 2024 10:53:16 +0530 Subject: [PATCH 088/460] AC-6116 :Cancel an order with paypal express checkout as payment method paypal --- .../SwitchToPayPalGroupBtnActionGroup.xml | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml index 2ab99867fc6f5..ec6d3bc084300 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml @@ -5,23 +5,22 @@ * See COPYING.txt for license details. */ --> - <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> -<actionGroup name="SwitchToPayPalGroupBtnActionGroup"> - <annotations> - <description>Switch to Paypal group button</description> - </annotations> - <arguments> - <argument name="elementNumber" type="string" defaultValue="0"/> - <argument name="frameName" type="string" defaultValue="myFrame"/> - </arguments> - <!--set ID for iframe of PayPal group button--> - <executeJS function="document.getElementsByClassName('component-frame')[{{elementNumber}}].setAttribute('name', '{{frameName}}');" stepKey="setIDForIframe"/> - <!--switch to iframe of PayPal group button--> - <switchToIFrame userInput="{{frameName}}" stepKey="switchToIframe"/> - <waitForElementClickable selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="waitForPayPalBtn"/> - <click selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="clickPayPalBtn"/> - <switchToIFrame stepKey="switchBackToMainFrame"/> -</actionGroup> -</actionGroups> + <actionGroup name="SwitchToPayPalGroupBtnActionGroup"> + <annotations> + <description>Switch to Paypal group button</description> + </annotations> + <arguments> + <argument name="elementNumber" type="string" defaultValue="0"/> + <argument name="frameName" type="string" defaultValue="myFrame"/> + </arguments> + <!--set ID for iframe of PayPal group button--> + <executeJS function="document.getElementsByClassName('component-frame')[{{elementNumber}}].setAttribute('name', '{{frameName}}');" stepKey="setIDForIframe"/> + <!--switch to iframe of PayPal group button--> + <switchToIFrame userInput="{{frameName}}" stepKey="switchToIframe"/> + <waitForElementClickable selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="waitForPayPalBtn"/> + <click selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="clickPayPalBtn"/> + <switchToIFrame stepKey="switchBackToMainFrame"/> + </actionGroup> +</actionGroups> \ No newline at end of file From d20844a01fd50c86b822b27dcca07151de94146f Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 27 Jun 2024 11:15:19 +0530 Subject: [PATCH 089/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Ddl/Table.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index 11da5ae300eab..3e1ee8c9ded8e 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -657,7 +657,7 @@ public function setOption($key, $value) * Return null if option does not exist * * @param string $key - * @return mixed|string|null + * @return null|string */ public function getOption($key) { From f5d8fe12213b9fa01e1a865201c618c2bfc3ecb9 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:18:38 +0530 Subject: [PATCH 090/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- .../Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index 7d766c2e09f74..9175ae1d2cda8 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -9,7 +9,7 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="StorefrontCheckoutAgreementsSection"> - <element name="checkoutAgreementCheckbox" type="checkbox" selector="div.checkout-agreement.field.choice.required > input"/> + <element name="checkoutAgreementCheckbox" type="checkbox" selector="//div[@data-role='checkout-agreements']//div[@class='checkout-agreements fieldset']//div[@class='checkout-agreement field choice required']//input[@type='checkbox']"/> <element name="checkoutAgreementButton" type="button" selector="div.checkout-agreements-block > div > div > div > label > button > span"/> <element name="checkoutAgreementErrorMessage" type="button" selector="div.checkout-agreement.field.choice.required > div.mage-error"/> <element name="checkoutAgreementCheckboxcheck" type="checkbox" selector="//span[text()='{{agreementname}}']/../../../input[@type='checkbox']" parameterized="true"/> From 30002741cce618faa9b848e6e342b41af07f5ef7 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:29:45 +0530 Subject: [PATCH 091/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- .../Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index 9175ae1d2cda8..b7bdef8a758b4 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -9,7 +9,7 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="StorefrontCheckoutAgreementsSection"> - <element name="checkoutAgreementCheckbox" type="checkbox" selector="//div[@data-role='checkout-agreements']//div[@class='checkout-agreements fieldset']//div[@class='checkout-agreement field choice required']//input[@type='checkbox']"/> + <element name="checkoutAgreementCheckbox" type="checkbox" selector="input#agreement_checkmo_3.required-entry"/> <element name="checkoutAgreementButton" type="button" selector="div.checkout-agreements-block > div > div > div > label > button > span"/> <element name="checkoutAgreementErrorMessage" type="button" selector="div.checkout-agreement.field.choice.required > div.mage-error"/> <element name="checkoutAgreementCheckboxcheck" type="checkbox" selector="//span[text()='{{agreementname}}']/../../../input[@type='checkbox']" parameterized="true"/> From e42aec898ed606bf9706e3ab8cadbc91f9c7f18b Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:32:29 +0530 Subject: [PATCH 092/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- .../ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml index 05b485ac074cc..45fd4c8c092d2 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml @@ -13,7 +13,8 @@ <argument name="termCheckboxText" type="string"/> </arguments> <!--Check if agreement is present on checkout and select it--> - <see selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" userInput="{{termCheckboxText}}" stepKey="seeTermInCheckout"/> + <waitForText selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" userInput="{{termCheckboxText}}" stepKey="seeTermInCheckout"/> + <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckAgreementToBeClickable"/> <selectOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" userInput="{{termCheckboxText}}" stepKey="checkAgreement"/> <!--Checkout select Check/Money Order payment--> From be2ae29f2b6cc762f17cabcce1ac48e0156c7371 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:42:21 +0530 Subject: [PATCH 093/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- .../ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml index 45fd4c8c092d2..85f2e6ede2508 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml @@ -13,6 +13,8 @@ <argument name="termCheckboxText" type="string"/> </arguments> <!--Check if agreement is present on checkout and select it--> + <scrollTo selector=".checkout-agreements-block" stepKey="scrollToCheckoutAgreementBlock"/> + <click selector=".checkout-agreements-block" stepKey="waitForCheckoutAgreementBlockToBeClickable"/> <waitForText selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" userInput="{{termCheckboxText}}" stepKey="seeTermInCheckout"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckAgreementToBeClickable"/> <selectOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" userInput="{{termCheckboxText}}" stepKey="checkAgreement"/> From 146a97beb7062d2c24d3869041121b432c610231 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 13:59:17 +0530 Subject: [PATCH 094/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website From 9c089633dacb2d96a0c113ee029c5c13a3376580 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:01:52 +0530 Subject: [PATCH 095/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- ...TermInCheckoutAndPlaceOrderActionGroup.xml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml new file mode 100644 index 0000000000000..1bb747d1a63e3 --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AssertStorefrontTermInCheckoutActionGroup"> + <arguments> + <argument name="termCheckboxText" type="string"/> + </arguments> + <!--Check if agreement is present on checkout and select it--> + <scrollTo selector=".checkout-agreements-block" stepKey="scrollToCheckoutAgreementBlock"/> + <click selector=".checkout-agreements-block" stepKey="waitForCheckoutAgreementBlockToBeClickable"/> + <waitForText selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" userInput="{{termCheckboxText}}" stepKey="seeTermInCheckout"/> + <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckAgreementToBeClickable"/> + <selectOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckboxInput}}" userInput="{{termCheckboxText}}" stepKey="checkAgreement"/> + + <!--Checkout select Check/Money Order payment--> + <waitForPageLoad stepKey="waitForPaymentPageRendering"/> + <waitForPageLoad stepKey="waitForPaymentRendering"/> + <conditionalClick selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Check / Money order')}}" dependentSelector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Check / Money order')}}" visible="true" stepKey="selectCheckmoPaymentMethod"/> + <waitForPageLoad stepKey="waitForLoadingMaskAfterPaymentMethodSelection"/> + + <!--Click Place Order button--> + <click selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="clickPlaceOrder"/> + <waitForPageLoad stepKey="waitForOrderPlaced"/> + </actionGroup> +</actionGroups> From f51b14b7796bcbbe2957ecd3611a1af69e5d162e Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:03:36 +0530 Subject: [PATCH 096/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- .../Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index b7bdef8a758b4..865e8e92f4260 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -9,7 +9,8 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="StorefrontCheckoutAgreementsSection"> - <element name="checkoutAgreementCheckbox" type="checkbox" selector="input#agreement_checkmo_3.required-entry"/> + <element name="checkoutAgreementCheckboxInput" type="checkbox" selector="input#agreement_checkmo_3.required-entry"/> + <element name="checkoutAgreementCheckbox" type="checkbox" selector="div.checkout-agreement.field.choice.required > input"/> <element name="checkoutAgreementButton" type="button" selector="div.checkout-agreements-block > div > div > div > label > button > span"/> <element name="checkoutAgreementErrorMessage" type="button" selector="div.checkout-agreement.field.choice.required > div.mage-error"/> <element name="checkoutAgreementCheckboxcheck" type="checkbox" selector="//span[text()='{{agreementname}}']/../../../input[@type='checkbox']" parameterized="true"/> From a1613d5b7cc79e5f5f69d67cf881cee8d330656c Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:04:34 +0530 Subject: [PATCH 097/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- ...refrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index 8ca4faeef34af..0b39e6dffc9e0 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -108,5 +108,8 @@ <actionGroup ref="AssertStorefrontTermInCheckoutActionGroup" stepKey="assertTermInCheckoutAndPlaceOrder"> <argument name="termCheckboxText" value="{{enableTextTerm.checkboxText}}"/> </actionGroup> + <!--See success messages--> + <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="seeSuccessTitle"/> + <waitForText selector="{{CheckoutSuccessMainSection.orderNumberText}}" userInput="Your order # is: " stepKey="seeOrderNumber"/> </test> </tests> From 2c9f02293e740080f5b0e8ecc990020886f2bdf6 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:05:37 +0530 Subject: [PATCH 098/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- .../StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml index 1bb747d1a63e3..e77f8c926e3dd 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml @@ -8,7 +8,7 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AssertStorefrontTermInCheckoutActionGroup"> + <actionGroup name="StorefrontTermInCheckoutAndPlaceOrderActionGroup"> <arguments> <argument name="termCheckboxText" type="string"/> </arguments> From c3c8556bb46e5c044e4342eab44dc92dc4cf4bec Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:06:08 +0530 Subject: [PATCH 099/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website --- ...orefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index 0b39e6dffc9e0..cb364fa0d28c4 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -105,7 +105,7 @@ <waitForElement selector="{{StorefrontCheckoutAgreementsSection.contentArea(enableTextTerm.content)}}" stepKey="verifyTextMessage"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="waitForCloseToBeClickable"/> <click selector="{{StorefrontCheckoutAgreementsSection.close}}" stepKey="ClickOnClose"/> - <actionGroup ref="AssertStorefrontTermInCheckoutActionGroup" stepKey="assertTermInCheckoutAndPlaceOrder"> + <actionGroup ref="StorefrontTermInCheckoutAndPlaceOrderActionGroup" stepKey="assertTermInCheckoutAndPlaceOrder"> <argument name="termCheckboxText" value="{{enableTextTerm.checkboxText}}"/> </actionGroup> <!--See success messages--> From 2df5f0c7c08929daa141a8f4b45fc9101a794877 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:07:01 +0530 Subject: [PATCH 100/460] ACQE-6733 | [AC-4595] Verify that Terms and Conditions is presented on Storefront for non Main Website revert code --- .../AssertStorefrontTermInCheckoutActionGroup.xml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml index 85f2e6ede2508..05b485ac074cc 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AssertStorefrontTermInCheckoutActionGroup.xml @@ -13,10 +13,7 @@ <argument name="termCheckboxText" type="string"/> </arguments> <!--Check if agreement is present on checkout and select it--> - <scrollTo selector=".checkout-agreements-block" stepKey="scrollToCheckoutAgreementBlock"/> - <click selector=".checkout-agreements-block" stepKey="waitForCheckoutAgreementBlockToBeClickable"/> - <waitForText selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" userInput="{{termCheckboxText}}" stepKey="seeTermInCheckout"/> - <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckAgreementToBeClickable"/> + <see selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" userInput="{{termCheckboxText}}" stepKey="seeTermInCheckout"/> <selectOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" userInput="{{termCheckboxText}}" stepKey="checkAgreement"/> <!--Checkout select Check/Money Order payment--> From 82d18b2b0c010b37ad8bd4793b347d166a8c79a3 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Thu, 27 Jun 2024 16:09:11 +0530 Subject: [PATCH 101/460] ACQE-6733 : Verify Terms and Conditions Modified actionGroup --- ...efrontTermInCheckoutAndPlaceOrderActionGroup.xml | 13 +++---------- .../Section/StorefrontCheckoutAgreementsSection.xml | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml index e77f8c926e3dd..e08d5cc176101 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml @@ -13,19 +13,12 @@ <argument name="termCheckboxText" type="string"/> </arguments> <!--Check if agreement is present on checkout and select it--> - <scrollTo selector=".checkout-agreements-block" stepKey="scrollToCheckoutAgreementBlock"/> - <click selector=".checkout-agreements-block" stepKey="waitForCheckoutAgreementBlockToBeClickable"/> - <waitForText selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementButton}}" userInput="{{termCheckboxText}}" stepKey="seeTermInCheckout"/> + <scrollTo selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementBlock}}" stepKey="scrollToCheckoutAgreementBlock"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckAgreementToBeClickable"/> <selectOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckboxInput}}" userInput="{{termCheckboxText}}" stepKey="checkAgreement"/> - <!--Checkout select Check/Money Order payment--> - <waitForPageLoad stepKey="waitForPaymentPageRendering"/> - <waitForPageLoad stepKey="waitForPaymentRendering"/> - <conditionalClick selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Check / Money order')}}" dependentSelector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Check / Money order')}}" visible="true" stepKey="selectCheckmoPaymentMethod"/> - <waitForPageLoad stepKey="waitForLoadingMaskAfterPaymentMethodSelection"/> - - <!--Click Place Order button--> + <waitForPageLoad stepKey="waitForPageLoad"/> + <waitForElementClickable selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="waitForPlaceOrderButtonClickable"/> <click selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="clickPlaceOrder"/> <waitForPageLoad stepKey="waitForOrderPlaced"/> </actionGroup> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index 865e8e92f4260..7f5ee62e74db6 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -10,12 +10,12 @@ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="StorefrontCheckoutAgreementsSection"> <element name="checkoutAgreementCheckboxInput" type="checkbox" selector="input#agreement_checkmo_3.required-entry"/> + <element name="checkoutAgreementBlock" type="checkbox" selector=".checkout-agreements-block"/> <element name="checkoutAgreementCheckbox" type="checkbox" selector="div.checkout-agreement.field.choice.required > input"/> <element name="checkoutAgreementButton" type="button" selector="div.checkout-agreements-block > div > div > div > label > button > span"/> <element name="checkoutAgreementErrorMessage" type="button" selector="div.checkout-agreement.field.choice.required > div.mage-error"/> <element name="checkoutAgreementCheckboxcheck" type="checkbox" selector="//span[text()='{{agreementname}}']/../../../input[@type='checkbox']" parameterized="true"/> <element name="contentArea" type="text" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//div[@class='checkout-agreements-item-content' and contains(text(), '{{contentText}}')]" parameterized="true"/> <element name="close" type="button" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//footer//span"/> - <element name="defaultPaymentAgreementCheckboxCheck" type="checkbox" selector="//div[@class='payment-method _active']//span[text()='{{agreementName}}']/../../../input[@type='checkbox']" parameterized="true"/> </section> </sections> From 6357a2c10cfbbcfc9029fb4bc4289fe051264e38 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Thu, 27 Jun 2024 18:27:37 +0530 Subject: [PATCH 102/460] ACQE-6733 : Verify Terms and Conditions added click selector --- .../StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml index e08d5cc176101..7d28cc7c30c1d 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml @@ -14,6 +14,8 @@ </arguments> <!--Check if agreement is present on checkout and select it--> <scrollTo selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementBlock}}" stepKey="scrollToCheckoutAgreementBlock"/> + <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementBlock}}" stepKey="waitForCheckoutAgreementBlockToBeClickable"/> + <click selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementBlock}}" stepKey="clickCheckoutAgreementBlock"/> <waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckbox}}" stepKey="waitForCheckAgreementToBeClickable"/> <selectOption selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementCheckboxInput}}" userInput="{{termCheckboxText}}" stepKey="checkAgreement"/> <!--Checkout select Check/Money Order payment--> From df689cbb468d0fa432b4d35dc759adfc51111a88 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 28 Jun 2024 21:54:01 +0530 Subject: [PATCH 103/460] ACQE-6430:Correction of Configuration apply to Paypal Pay later message on Cart Page for Payment Advanced New Testcase Added --- ...AdminConfigPaymentsAdvancedActionGroup.xml | 42 +++++++++ .../Paypal/Test/Mftf/Data/PaypalData.xml | 8 +- .../Section/PaymentsAdvancedConfigSection.xml | 32 +++++++ .../Test/AdminConfigPaymentsAdvancedTest.xml | 87 +++++++++++++++++++ 4 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml new file mode 100644 index 0000000000000..7bb41a488fe0b --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminConfigPaymentsAdvancedActionGroup"> + <annotations> + <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> + </annotations> + <arguments> + <argument name="credentials" defaultValue="SamplePaypalPaymentsAdvancedConfig"/> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="expandOtherPaypalConfigButton"/> + <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.configBtn(countryCode)}}" stepKey="waitForPayPalPaymentsAdvancedConfigureBtn"/> + <click selector ="{{PaymentsAdvancedConfigSection.configBtn(countryCode)}}" stepKey="clickPayPalPaymentsAdvancedConfigureBtn"/> + <scrollTo selector="{{PaymentsAdvancedConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> + <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.partner(countryCode)}}" stepKey="waitForPartner"/> + <fillField selector ="{{PaymentsAdvancedConfigSection.partner(countryCode)}}" userInput="{{credentials.payflow_advanced_partner}}" stepKey="inputPartner"/> + <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.vendor(countryCode)}}" stepKey="waitForVendor"/> + <fillField selector ="{{PaymentsAdvancedConfigSection.vendor(countryCode)}}" userInput="{{credentials.payflow_advanced_vendor}}" stepKey="inputVendor"/> + <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.user(countryCode)}}" stepKey="waitForUser"/> + <fillField selector ="{{PaymentsAdvancedConfigSection.user(countryCode)}}" userInput="{{credentials.payflow_advanced_user}}" stepKey="inputUser"/> + <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.password(countryCode)}}" stepKey="waitForPassword"/> + <fillField selector ="{{PaymentsAdvancedConfigSection.password(countryCode)}}" userInput="{{credentials.payflow_advanced_password}}" stepKey="inputPassword"/> + <selectOption selector="{{PaymentsAdvancedConfigSection.testMode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> + <waitForPageLoad stepKey="waitForPageLoadForEnableSolution"/> + <selectOption selector ="{{PaymentsAdvancedConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> + <selectOption selector ="{{PaymentsAdvancedConfigSection.enablePaypalexp(countryCode)}}" userInput="Yes" stepKey="enablePaypalExperiencelater"/> + <waitForPageLoad stepKey="waitForAdvisePageLoad"/> + <waitForPageLoad stepKey="waitForAdvisepaylaterExpand"/> + <click selector ="{{PaymentsAdvancedConfigSection.advisepaylaterBtn(countryCode)}}" stepKey="clickPayPalPaymentsAdvisepaylatereBtn"/> + <selectOption selector ="{{PaymentsAdvancedConfigSection.payLaterConfigDropDown(countryCode)}}" userInput="Yes" stepKey="enablePaypalPaylater"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index f50daa901b2ca..c7c092b7025e1 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -127,7 +127,13 @@ <entity name="Payer"> <data key="firstName">Alex</data> </entity> - + <!-- configuration used for paypal PaymentsAdvanced--> + <entity name="SamplePaypalPaymentsAdvancedConfig" type="payflow_advanced_config"> + <data key="payflow_advanced_partner">PayPal</data> + <data key="payflow_advanced_user">mpilink</data> + <data key="payflow_advanced_vendor">mpilink</data> + <data key="payflow_advanced_password">1234_1234L!</data> + </entity> <!-- configuration used for paypal payflow pro --> <entity name="EnablePaypalPayflowProWithVault" type="custom_paypal_payflow_pro_config_state"> <requiredEntity type="enable_paypal_payflow">EnablePaypalPayflowProMethod</requiredEntity> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml new file mode 100644 index 0000000000000..9b5e0e0845842 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="PaymentsAdvancedConfigSection"> + <element name="configBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced-head" parameterized="true"/> + <element name="email" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_business_account" parameterized="true"/> + <element name="partner" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_partner" parameterized="true"/> + <element name="user" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_user" parameterized="true"/> + <element name="vendor" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_vendor" parameterized="true"/> + <element name="password" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_pwd" parameterized="true"/> + <element name="testMode" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_sandbox_flag" parameterized="true" /> + <element name="enableSolution" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced" parameterized="true" /> + <element name="enablePaypalexp" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_paypal_paylater_experience" parameterized="true" /> + <element name="advisepaylaterBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater-head" parameterized="true" /> + <element name="payLaterConfigDropDown" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_paylater_enabled" parameterized="true"/> + <element name="cartBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage-head" parameterized="true"/> + <element name="payLaterDisplay" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> + <element name="displayOption" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> + <element name="payLaterMessage" type="input" selector="//span[text()='Buy now, pay later.']"/> + <element name="positionOption" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> + <element name="payPalFrame" type="iframe" selector="//iframe[contains(@id, 'jsx-iframe')]"/> + <element name="categoryClick" type="button" selector="//span[contains(text(), 'SimpleSubCategory')]"/> + <element name="categoryExpand" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_categorypage-head" parameterized="true"/> + <element name="categoryDisplay" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_categorypage_paylater_categorypage_display" parameterized="true"/> + </section> +</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml new file mode 100644 index 0000000000000..5897feddfa534 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminConfigPaymentsAdvancedTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Configuration apply to Paypal Pay later message on Cart Page for Payment Advanced"/> + <description value="Paypal Pay Later Message for Paypal Advanced should display on Admin Cart Page configuration"/> + <severity value="MAJOR"/> + <testCaseId value="AC-5700"/> + <group value="3rd_party_integration"/> + <group value="pr_exclude"/> + </annotations> + <before> + <createData entity="SimpleSubCategory" stepKey="simpleCategory"/> + <createData entity="SimpleProduct3" stepKey="simpleProduct"> + <requiredEntity createDataKey="simpleCategory"/> + </createData> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <actionGroup ref="AdminConfigPaymentsAdvancedActionGroup" stepKey="ConfigPaymentsAdvanced"/> + </before> + <after> + <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> + <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> + <magentoCLI command="config:set payment/payflow_advanced/active 0" stepKey="disablePaymentsAdvanced"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + </after> + <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="waitForCheckoutCartPageToBeClickable"/> + <click selector ="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="clickCarteBtn"/> + <selectOption selector ="{{PaymentsAdvancedConfigSection.payLaterDisplay('us')}}" userInput="Yes" stepKey="enableDisplay"/> + <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/> + <!-- Reindex and cache flush --> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCache"> + <argument name="tags" value=""/> + </actionGroup> + <!--Navigate to Storefront--> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + <waitForPageLoad stepKey="waitForProductPage"/> + <!--Add simple product--> + <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart" > + <argument name="product" value="$simpleProduct$"/> + </actionGroup> + <!--Go to cart page--> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> + <waitForPageLoad stepKey="waitForShoppingCartPage"/> + <!--Switching to iFrame--> + <switchToIFrame selector="{{PaymentsAdvancedConfigSection.payPalFrame}}" stepKey="switchToPaypalIFrame"/> + <seeElement selector="{{PaymentsAdvancedConfigSection.payLaterMessage}}" stepKey="verifyPayLaterMessage"/> + <switchToIFrame stepKey="switchBackMainIframe"/> + <!--Change The Option in Position In Checkout cart Page--> + <actionGroup ref="AdminConfigPaymentsAdvancedActionGroup" stepKey="ConfigPaymentsAdvanced"> + </actionGroup> + <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="waitForAdminCarttPageTobeClickable"/> + <click selector ="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="expandAdminCartePage"/> + <selectOption selector ="{{PaymentsAdvancedConfigSection.displayOption('us')}}" userInput="Yes" stepKey="enableCartPageDisplay"/> + <selectOption selector ="{{PaymentsAdvancedConfigSection.positionOption('us')}}" userInput="Under PayPal Checkout buttons" stepKey="updatedPositionValue"/> + <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.categoryExpand('us')}}" stepKey="waitForcategoryPageTobeClickable"/> + <click selector ="{{PaymentsAdvancedConfigSection.categoryExpand('us')}}" stepKey="expandCategoryePage"/> + <selectOption selector ="{{PaymentsAdvancedConfigSection.categoryDisplay('us')}}" userInput="Yes" stepKey="enableCategorypageDisplay"/> + <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfiguration"/> + <!-- Reindex and cache flush --> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexPage"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCachePage"> + <argument name="tags" value=""/> + </actionGroup> + <!-- Navigate Again to Storefront --> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToCustomerStoreFront"/> + <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.categoryClick}}" stepKey="waitForCategryToClickable"/> + <click selector ="{{PaymentsAdvancedConfigSection.categoryClick}}" stepKey="clickCatagoryeButton"/> + <waitForPageLoad stepKey="waitForCartpageTobeLoaded"/> + <switchToIFrame selector="{{PaymentsAdvancedConfigSection.payPalFrame}}" stepKey="switchToBuyNowPayLaterIFrame"/> + <seeElement selector="{{PaymentsAdvancedConfigSection.payLaterMessage}}" stepKey="verifyBuyNowPayLaterMessage"/> + <switchToIFrame stepKey="switchBackToMainPaypalFrame"/> + </test> +</tests> From 6d9b5d0714a23342af1a6b5c85409e08f07c6ec4 Mon Sep 17 00:00:00 2001 From: nikhilsharma-adobe <143313267+nikhilsharma-adobe@users.noreply.github.com> Date: Mon, 1 Jul 2024 11:19:03 +0530 Subject: [PATCH 104/460] ACQE- 6445:Guest Checkout Using PayPal Payments Standard And FlatRate Test Selector name changed --- ...alStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml index 2694315c63cc4..8add32a853a7c 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml @@ -12,7 +12,7 @@ <actionGroup name="AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup"> <waitForElementClickable selector="{{CheckoutPaymentSection.PayPalPaymentRadio}}" stepKey="waitForPayPalRadioButton"/> <click selector="{{CheckoutPaymentSection.PayPalPaymentRadio}}" stepKey="selectPaypalPayment"/> - <waitForElementClickable selector="{{CheckoutPaymentSection.ContinuePayPalBtn1}}" stepKey="waitForPayPalBtn"/> - <click selector="{{CheckoutPaymentSection.ContinuePayPalBtn1}}" stepKey="clickPayPalBtn"/> + <waitForElementClickable selector="{{CheckoutPaymentSection.ContinuePayPalBtn}}" stepKey="waitForPayPalBtn"/> + <click selector="{{CheckoutPaymentSection.ContinuePayPalBtn}}" stepKey="clickPayPalBtn"/> </actionGroup> </actionGroups> From c7552dbde97c9dc111bb28a00b0acf2208ae4527 Mon Sep 17 00:00:00 2001 From: syed sharuk <glo74186@adobe.com> Date: Tue, 2 Jul 2024 14:39:43 +0530 Subject: [PATCH 105/460] ACQE-6734 : Verify dynamic bundle product prices with different Cart Rules on storefront Created testcase for Verify discount on dynamic-priced Bundle Product when associated Products are assigned to Categories with different Cart Rules --- ...micBundleProductDifferentCartRulesTest.xml | 133 ++++++++++++++++++ ...nInActionTabInCartPriceRuleActionGroup.xml | 31 ++++ ...tomConditionInCartPriceRuleActionGroup.xml | 35 +++++ .../Test/Mftf/Data/SalesRuleData.xml | 9 +- .../AdminCartPriceRulesFormSection.xml | 1 + 5 files changed, 208 insertions(+), 1 deletion(-) create mode 100644 app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml create mode 100644 app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml create mode 100644 app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml diff --git a/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml b/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml new file mode 100644 index 0000000000000..06430954364c2 --- /dev/null +++ b/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest"> + <annotations> + <features value="Bundle"/> + <stories value="Discount on dynamic bundle products with different Cart Rules"/> + <title value="Verify dynamic bundle product prices with different Cart Rules on storefront"/> + <description value="Verify discount on dynamic-priced Bundle Product when associated Products are assigned to Categories with different Cart Rules"/> + <severity value="MAJOR"/> + <testCaseId value="AC-4709"/> + </annotations> + <before> + <createData entity="SimpleSubCategory" stepKey="createFirstCategory"/> + <createData entity="SimpleSubCategory" stepKey="createSecondCategory"/> + <!--Create two simple product--> + <createData entity="ApiSimpleProduct" stepKey="simpleProduct1"> + <requiredEntity createDataKey="createFirstCategory"/> + <field key="price">99.99</field> + </createData> + <createData entity="ApiSimpleProduct" stepKey="simpleProduct2"> + <requiredEntity createDataKey="createSecondCategory"/> + <field key="price">34.49</field> + </createData> + <!--Create Bundle product--> + <createData entity="ApiBundleProductPriceViewRange" stepKey="createBundleProduct"> + <requiredEntity createDataKey="createFirstCategory"/> + </createData> + <createData entity="MultipleSelectOption" stepKey="createBundleOption1"> + <requiredEntity createDataKey="createBundleProduct"/> + <field key="required">true</field> + </createData> + <createData entity="ApiBundleLink" stepKey="linkOptionToProduct"> + <requiredEntity createDataKey="createBundleProduct"/> + <requiredEntity createDataKey="createBundleOption1"/> + <requiredEntity createDataKey="simpleProduct1"/> + </createData> + <createData entity="ApiBundleLink" stepKey="linkOptionToProduct2"> + <requiredEntity createDataKey="createBundleProduct"/> + <requiredEntity createDataKey="createBundleOption1"/> + <requiredEntity createDataKey="simpleProduct2"/> + </createData> + </before> + <after> + <deleteData createDataKey="createFirstCategory" stepKey="deleteFirstCategory"/> + <deleteData createDataKey="createSecondCategory" stepKey="deleteSecondCategory"/> + <deleteData createDataKey="simpleProduct1" stepKey="deleteSimpleProduct1"/> + <deleteData createDataKey="simpleProduct2" stepKey="deleteSimpleProduct2"/> + <deleteData createDataKey="createBundleProduct" stepKey="deleteBundleProduct"/> + <actionGroup ref="DeleteCartPriceRuleByName" stepKey="deleteCartPriceRule"> + <argument name="ruleName" value="{{CustomSalesRuleWithNoCouponCode.name}}"/> + </actionGroup> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + </after> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <!-- Create cart price rule --> + <actionGroup ref="AdminCreateCartPriceRuleActionGroup" stepKey="createCartPriceRule"> + <argument name="ruleName" value="CustomSalesRuleWithNoCouponCode"/> + </actionGroup> + <!-- Search and go to cart price rule page --> + <actionGroup ref="AdminFilterCartPriceRuleActionGroup" stepKey="filterCreatedCartPriceRule"> + <argument name="ruleName" value="CustomSalesRuleWithNoCouponCode.name"/> + </actionGroup> + <actionGroup ref="AdminCreateCustomConditionInCartPriceRuleActionGroup" stepKey="createCustomCondition"/> + <actionGroup ref="AssertCartPriceRuleSuccessSaveMessageActionGroup" stepKey="saveAndAssertCartPriceRuleSuccessSaveMessage"/> + <!-- Open Bundle Product page on storefront--> + <actionGroup ref="StorefrontOpenProductPageActionGroup" stepKey="openBundleProductPage"> + <argument name="productUrl" value="$createBundleProduct.custom_attributes[url_key]$"/> + </actionGroup> + <!-- Click on customize And Add To Cart Button --> + <actionGroup ref="StorefrontSelectCustomizeAndAddToTheCartButtonActionGroup" stepKey="clickOnCustomizeAndAddToCartButton"/> + <!-- Select Two Products, enter the quantity and add product to the cart --> + <selectOption selector="{{StorefrontBundledSection.multiSelectOption}}" parameterArray="[$$simpleProduct1.name$$ +$99.99, $$simpleProduct2.name$$ +$34.49]" stepKey="selectOptions"/> + <actionGroup ref="StorefrontEnterProductQuantityAndAddToTheCartActionGroup" stepKey="enterProductQuantityAndAddToTheCart"> + <argument name="quantity" value="1"/> + </actionGroup> + <!-- Go to shopping cart page --> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="openShoppingCartPage"/> + <actionGroup ref="AssertStorefrontCartDiscountActionGroup" stepKey="seeDiscountTotal"> + <argument name="discount" value="13.45"/> + </actionGroup> + <!-- Search and go to cart price rule page and remove condition--> + <actionGroup ref="AdminOpenCartPriceRulesPageActionGroup" stepKey="goToCartPriceRulePage"/> + <actionGroup ref="AdminFilterCartPriceRuleActionGroup" stepKey="filterCartPriceRule"> + <argument name="ruleName" value="CustomSalesRuleWithNoCouponCode.name"/> + </actionGroup> + <scrollTo selector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" stepKey="scrollToConditionsHeader"/> + <conditionalClick selector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" dependentSelector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" visible="true" stepKey="clickToExpandConditions"/> + <waitForElementClickable selector="{{AdminCartPriceRulesFormSection.removeCondition('1--1')}}" stepKey="waitForRemoveToBeClickable"/> + <click selector="{{AdminCartPriceRulesFormSection.removeCondition('1--1')}}" stepKey="removeCondition"/> + <actionGroup ref="AssertCartPriceRuleSuccessSaveMessageActionGroup" stepKey="saveCartPriceRuleSuccessSaveMessage"/> + <!-- Go to shopping cart page --> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToShoppingCartPage"/> + <actionGroup ref="AssertStorefrontCartDiscountActionGroup" stepKey="checkDiscount"> + <argument name="discount" value="13.45"/> + </actionGroup> + <!-- Assign category 1 to simple product 2 and unAssign category2 --> + <actionGroup ref="AdminProductPageOpenByIdActionGroup" stepKey="OpenSimpleProductPage"> + <argument name="productId" value="$$simpleProduct2.id$$"/> + </actionGroup> + <waitForPageLoad stepKey="waitForProductPageLoad"/> + <actionGroup ref="AdminUnassignCategoryOnProductAndSaveActionGroup" stepKey="unAssignCategoryTwo"> + <argument name="categoryName" value="$$createSecondCategory.name$$"/> + </actionGroup> + <createData entity="AssignProductToCategory" stepKey="assignCategoryOne"> + <requiredEntity createDataKey="createFirstCategory"/> + <requiredEntity createDataKey="simpleProduct2"/> + </createData> + <!-- Search and go to cart price rule page and add condition in action tab --> + <actionGroup ref="AdminOpenCartPriceRulesPageActionGroup" stepKey="againOpenCartPriceRulePage"/> + <actionGroup ref="AdminFilterCartPriceRuleActionGroup" stepKey="againFilterCartPriceRule"> + <argument name="ruleName" value="CustomSalesRuleWithNoCouponCode.name"/> + </actionGroup> + <actionGroup ref="AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup" stepKey="createConditionInActionsTab"/> + <actionGroup ref="AssertCartPriceRuleSuccessSaveMessageActionGroup" stepKey="saveCartPriceRule"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value="catalogsearch_fulltext catalog_category_product catalog_product_price catalogrule_rule"/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!-- Go to shopping cart page --> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="againGoToShoppingCartPage"/> + <waitForElementNotVisible selector="{{CheckoutCartSummarySection.discountLabel}}" stepKey="discountIsNotApply"/> + </test> +</tests> diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml new file mode 100644 index 0000000000000..d8a1794708a54 --- /dev/null +++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup"> + <annotations> + <description>Create custom condition in action tab in cart price rule page.</description> + </annotations> + <arguments> + <argument name="productAttribute" type="string" defaultValue="Category"/> + <argument name="categoryId" type="string" defaultValue="$$createSecondCategory.id$$"/> + </arguments> + + <conditionalClick selector="{{AdminCartPriceRulesFormSection.actionsHeader}}" dependentSelector="{{AdminCartPriceRulesFormSection.actionsHeaderOpen}}" visible="false" stepKey="clickToExpandActions"/> + <scrollTo selector="{{AdminCartPriceRulesFormSection.actionsHeader}}" stepKey="scrollToActionsFieldset"/> + <waitForElementVisible selector="{{AdminCartPriceRulesFormSection.apply}}" stepKey="waitActionsFieldsetFullyOpened"/> + <click selector="{{AdminCartPriceRulesFormSection.conditions}}" stepKey="clickAdd"/> + <waitForPageLoad stepKey="waitForDropDownOpened"/> + <selectOption selector="{{AdminCartPriceRulesFormSection.childAttribute}}" userInput="{{productAttribute}}" stepKey="selectConditionAttributeIsCategory"/> + <waitForPageLoad after="selectConditionAttributeIsCategory" stepKey="waitForOperatorOpened"/> + <click selector="{{AdminCartPriceRulesFormSection.condition('...')}}" stepKey="clickToChooserIcon"/> + <fillField selector="{{AdminCartPriceRulesFormSection.actionValue}}" userInput="{{categoryId}}" stepKey="choseNeededCategoryFromCategoryGrid"/> + <click selector="{{AdminCartPriceRulesFormSection.applyAction}}" stepKey="applyAction"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml new file mode 100644 index 0000000000000..93ecdc3279ec1 --- /dev/null +++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminCreateCustomConditionInCartPriceRuleActionGroup"> + <annotations> + <description>Create custom condition in cart price rule page.</description> + </annotations> + <arguments> + <argument name="condition" type="string" defaultValue="Product attribute combination"/> + <argument name="productAttribute" type="string" defaultValue="Category"/> + <argument name="categoryId" type="string" defaultValue="$$createFirstCategory.id$$"/> + </arguments> + + <scrollTo selector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" stepKey="scrollToConditionsHeader"/> + <conditionalClick selector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" dependentSelector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" visible="true" stepKey="clickToExpandConditions"/> + <click selector="{{AdminCartPriceRulesFormSection.addNewCondition('1')}}" stepKey="clickOnAddNewCondition"/> + <selectOption selector="{{AdminCartPriceRulesFormSection.conditionSelectDropdown('1')}}" userInput="{{condition}}" stepKey="selectProductAttributeCombination"/> + <waitForPageLoad stepKey="waitForConditionLoad"/> + <waitForElementClickable selector="{{AdminCartPriceRulesFormSection.addNewCondition('1--1')}}" stepKey="waitForAddNewConditionToBeClickable"/> + <click selector="{{AdminCartPriceRulesFormSection.addNewCondition('1--1')}}" stepKey="clickOnTheAddNewCondition"/> + <waitForPageLoad stepKey="waitForToggleLoad"/> + <selectOption selector="{{AdminCartPriceRulesFormSection.conditionSelectDropdown('1--1')}}" userInput="{{productAttribute}}" stepKey="selectCategory"/> + <waitForElementClickable selector="{{AdminCartPriceRulesFormSection.targetEllipsis}}" stepKey="waitForEllipsis"/> + <click selector="{{AdminCartPriceRulesFormSection.targetEllipsis}}" stepKey="clickOnEllipsis"/> + <waitForElementVisible selector="{{AdminCartPriceRulesFormSection.ruleFieldByIndex('1--1--1')}}" stepKey="waitForCategoryToBeVisible"/> + <fillField selector="{{AdminCartPriceRulesFormSection.ruleFieldByIndex('1--1--1')}}" userInput="{{categoryId}}" stepKey="fillCategoryId"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml index 9f486e9177ba8..14da5dd8be68a 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml @@ -669,4 +669,11 @@ <data key="uses_per_coupon">2</data> <data key="simple_free_shipping">0</data> </entity> -</entities> \ No newline at end of file + <entity name="CustomSalesRuleWithNoCouponCode" type="SalesRule"> + <data key="name" unique="suffix">SalesRule</data> + <data key="websites">Main Website</data> + <data key="customerGroups">'NOT LOGGED IN', 'General', 'Wholesale', 'Retailer'</data> + <data key="apply">Percent of product price discount</data> + <data key="discountAmount">10</data> + </entity> +</entities> diff --git a/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml b/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml index e05049295fc93..40656270f0454 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml @@ -57,6 +57,7 @@ <element name="addNewCondition" type="button" selector="//ul[@id = 'conditions__{{nestedIndex}}__children']/li/span[contains(@class, 'rule-param-new-child')]" parameterized="true" timeout="30"/> <element name="conditionSelectDropdown" type="select" selector="select[name='rule[conditions][{{nestedIndex}}][new_child]']" parameterized="true"/> <element name="selectCountryDropdown" type="select" selector="(//*[contains(@value,'country_id')]/..//select)[last()]"/> + <element name="removeCondition" type="select" selector="//input[@id='conditions__{{index}}__type']/following-sibling::span//a[@class='rule-param-remove']" parameterized="true"/> <!--Conditions checker --> <element name="openList" type="button" selector="a.rule-chooser-trigger>img.v-middle.rule-chooser-trigger"/> From 1eea965a896aa5a8c379db7e476f749e513474ba Mon Sep 17 00:00:00 2001 From: mani mallelli <glo02616@adobe.com> Date: Wed, 3 Jul 2024 09:50:24 +0530 Subject: [PATCH 106/460] ACQE-6116 :Cancel an order with paypal express checkout as payment method paypal --- .../Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml index 9163efe909e7c..aecec9135fac2 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml @@ -16,6 +16,7 @@ <severity value="CRITICAL"/> <testCaseId value="AC-6116"/> <group value="3rd_party_integration"/> + <group value="pr_exclude"/> </annotations> <before> <!-- Create Product --> From 79941b2be58fd503b045d8ed34c7dd38ee3a265d Mon Sep 17 00:00:00 2001 From: sharuksyed <92149337+glo74186@users.noreply.github.com> Date: Wed, 3 Jul 2024 10:36:22 +0530 Subject: [PATCH 107/460] ACQE-6734 : Verify dynamic bundle product prices with different Cart Rules on storefront fixed typo --- ...rifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml b/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml index 06430954364c2..7faa08a0c2e30 100644 --- a/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml +++ b/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml @@ -128,6 +128,6 @@ </actionGroup> <!-- Go to shopping cart page --> <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="againGoToShoppingCartPage"/> - <waitForElementNotVisible selector="{{CheckoutCartSummarySection.discountLabel}}" stepKey="discountIsNotApply"/> + <waitForElementNotVisible selector="{{CheckoutCartSummarySection.discountLabel}}" stepKey="discountIsNotApplied"/> </test> </tests> From fcdd7f1b4cc9f286d2132b8e607abc46f1605207 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Sun, 7 Jul 2024 10:01:09 +0530 Subject: [PATCH 108/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Setup/Patch/Schema/SetCollation.php | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php diff --git a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php new file mode 100644 index 0000000000000..24d9834b428c4 --- /dev/null +++ b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php @@ -0,0 +1,103 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); +namespace Magento\Deploy\Setup\Patch\Schema; + +use Magento\Framework\Setup\SchemaSetupInterface; +use Magento\Framework\Setup\Patch\SchemaPatchInterface; + +/** + * Class SetCollation + * + * @package Magento\Deploy\Setup\Patch\Schema + */ +class SetCollation implements SchemaPatchInterface +{ + /** + * @var SchemaSetupInterface + */ + private $schemaSetup; + + /** + * Constructor. + * + * @param SchemaSetupInterface $schemaSetup + */ + public function __construct( + SchemaSetupInterface $schemaSetup + ) { + $this->schemaSetup = $schemaSetup; + } + + /** + * {@inheritdoc} + */ + public function apply() + { + $this->schemaSetup->startSetup(); + $setup = $this->schemaSetup; + + if ($setup->getConnection()->isTableExists('cache')) { + $setup->run("ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + } + if ($setup->getConnection()->isTableExists('cache_tag')) { + $setup->run("ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + } + if ($setup->getConnection()->isTableExists('flag')) { + $setup->run("ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), MODIFY COLUMN `flag_data` mediumtext, DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + } + if ($setup->getConnection()->isTableExists('session')) { + $setup->run("ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + } + if ($setup->getConnection()->isTableExists('setup_module')) { + $setup->run("ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + } + if ($setup->getConnection()->isTableExists('design_config_grid_flat')) { + $setup->run("ALTER TABLE `design_config_grid_flat` MODIFY COLUMN `theme_theme_id` varchar(255), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + } + + //changelog tables + $clTable = [ + 'catalog_category_product_cl', + 'catalog_product_attribute_cl', + 'catalog_product_category_cl', + 'catalog_product_price_cl', + 'cataloginventory_stock_cl', + 'catalogrule_product_cl', + 'catalogrule_rule_cl', + 'catalogsearch_fulltext_cl', + 'customer_dummy_cl', + 'design_config_dummy_cl', + 'salesrule_rule_cl', + 'targetrule_product_rule_cl', + 'targetrule_rule_product_cl' + ]; + + foreach($clTable as $table){ + if ($setup->getConnection()->isTableExists($table)) { + $setup->run("ALTER TABLE $table DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + } + } + + $this->schemaSetup->endSetup(); + } + + /** + * {@inheritdoc} + */ + public static function getDependencies() + { + return []; + } + + /** + * {@inheritdoc} + */ + public function getAliases() + { + return []; + } +} From f5964e0466dbd82db604ddea6b3eb98421237d4e Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Tue, 9 Jul 2024 20:35:46 +0530 Subject: [PATCH 109/460] ACQE-6571:Check config for PayPal Credit in Unites States For Paymentspro New Testcase added --- ...sertPaypalCreditPaymentsProActionGroup.xml | 39 +++++++++++ .../AdminClearPaymentsProActionGroup.xml | 27 ++++++++ ...gForPaymentsProPaypalCreditActionGroup.xml | 36 ++++++++++ ...inConfigPaymentsProPaypalCreditSection.xml | 27 ++++++++ ...minConfigPaymentsProInUnitedstatesTest.xml | 69 +++++++++++++++++++ 5 files changed, 198 insertions(+) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsProPaypalCreditActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml new file mode 100644 index 0000000000000..06de42005398a --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminAssertPaypalCreditPaymentsProActionGroup"> + <annotations> + <description>Configuration for Payments Advanced and Paypal credit Sample PayPal credentials</description> + </annotations> + <arguments> + <argument name="credentials" defaultValue="SamplePaypalPaymentsProConfig"/> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <scrollTo selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="waitForPartner"/> + <fillField selector ="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" userInput="{{credentials.paypal_paymentspro_parner}}" stepKey="inputPartner"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="waitForVendor"/> + <fillField selector ="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" userInput="{{credentials.paypal_paymentspro_vendor}}" stepKey="inputVendor"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="waitForUser"/> + <fillField selector ="{{PayPalPaymentsProConfigSection.user(countryCode)}}" userInput="{{credentials.paypal_paymentspro_user}}" stepKey="inputUser"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="waitForPassword"/> + <fillField selector ="{{PayPalPaymentsProConfigSection.password(countryCode)}}" userInput="{{credentials.paypal_paymentspro_password}}" stepKey="inputPassword"/> + <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> + <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.enabledPaypalCredit(countryCode)}}" stepKey="dontSeePaypalCredit"/> + <waitForPageLoad stepKey="waitPageLoadForEnableSolution"/> + <selectOption selector ="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> + <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalSolution(countryCode)}}" stepKey="assertEnabledSolutions"/> + <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalCredit(countryCode)}}" stepKey="enablePaypalCredit"/> + <waitForElementVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.sortOrder(countryCode)}}" stepKey="assertSortOrderPaypalCredit"/> + <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfiguration"/> + <magentoCLI command="indexer:reindex" stepKey="performReindex"/> + <magentoCLI command="cache:flush" stepKey="cleanCache"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml new file mode 100755 index 0000000000000..960ee93f3248d --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminClearPaymentsProActionGroup"> + <annotations> + <description>Admin goes to payments advanced configuration and clears provided Sample PayPal credentials</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <waitForPageLoad stepKey="waitForPaymethodConfigPageLoad"/> + <clearField selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="clearInputUsereField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> + <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> + <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledSolution(countryCode)}}" stepKey="dontSeePaypalEnableSolution"/> + <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledPaypalCredit(countryCode)}}" stepKey="dontSeePaypalCredit"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsProPaypalCreditActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsProPaypalCreditActionGroup.xml new file mode 100755 index 0000000000000..6fe3e8f3f2af2 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsProPaypalCreditActionGroup.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminConfigForPaymentsProPaypalCreditActionGroup"> + <annotations> + <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="expandOtherPaypalConfigButton"/> + <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.otherPaypalLink(countryCode)}}" stepKey="assertPayinAllLink"/> + <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.paypalPaymentGatewayLink(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> + <scrollTo selector="{{AdminConfigPaymentsProPaypalCreditSection.otherPaypalLink(countryCode)}}" stepKey="scrollPayinAll"/> + <waitForElementClickable selector="{{AdminConfigPaymentsProPaypalCreditSection.paymentsPro(countryCode)}}" stepKey="waitForPaymentProToBeClickable"/> + <click selector="{{AdminConfigPaymentsProPaypalCreditSection.paymentsPro(countryCode)}}" stepKey="clickPaymentPro"/> + <waitForPageLoad stepKey="waitForPaymethodConfigPageLoad"/> + <clearField selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="clearInputUsereField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> + <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> + <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledSolution(countryCode)}}" stepKey="dontSeePaypalEnableSolution"/> + <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledPaypalCredit(countryCode)}}" stepKey="dontSeePaypalCredit"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml new file mode 100755 index 0000000000000..abd9a54becd38 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="AdminConfigPaymentsProPaypalCreditSection"> + <element name="paymentsPro" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head" parameterized="true"/> + <element name="configureBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head" parameterized="true"/> + <element name="enableSolution" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow" parameterized="true"/> + <element name="otherPaypalLink" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> + <element name="paypalPaymentGatewayLink" type="button" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_payment_gateways-head')]" parameterized="true" /> + <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow" parameterized="true"/> + <element name="enabledSolution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow')]//label[@class='enabled']" parameterized="true"/> + <element name="enabledPaypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow')]//label[@class='enabled']" parameterized="true"/> + <element name="paypalSolution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow')]//label[@class='disabled']" parameterized="true"/> + <element name="paypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow')]//label[@class='disabled']" parameterized="true"/> + <element name="payFlowEdition" type="button" selector="//span[contains(text(), 'PayPal Express Checkout Payflow Edition')]"/> + <element name="payFlowExpress" type="button" selector="//span[contains(text(), 'PayPal Credit (Payflow Express Bml)')]"/> + <element name="creditCardPayflow" type="button" selector="//span[contains(text(), 'Credit Card (Payflow Pro)')]"/> + <element name="sortOrder" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_express_checkout_bml_sort_order" parameterized="true"/> + </section> +</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml new file mode 100755 index 0000000000000..f3eee42903cc4 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminConfigPaymentsProInUnitedstatesTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Check config for PayPal Credit in Unites States For Paymentspro"/> + <description value="Check paypal Credit payment option's enablement and disablement based on the configuration setting For Payments Pro in backend"/> + <severity value="MAJOR"/> + <testCaseId value="AC-4790"/> + </annotations> + <before> + <createData entity="Simple_US_Customer" stepKey="createCustomer"/> + <createData entity="SimpleSubCategory" stepKey="simpleCategory"/> + <createData entity="SimpleProduct" stepKey="simpleProduct"> + <requiredEntity createDataKey="simpleCategory"/> + </createData> + <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + </before> + <after> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> + <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePayPalPaymentsPro"/> + <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> + <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> + <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> + </after> + <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> + <actionGroup ref="AdminConfigForPaymentsProPaypalCreditActionGroup" stepKey="configPaymentsPro"/> + <!--Enable Payment Pro and Paypal Credit--> + <actionGroup ref="AdminAssertPaypalCreditPaymentsProActionGroup" stepKey="enablePaymentsPro"/> + <!--Login to storefront as guest customer--> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + <waitForPageLoad stepKey="waitForProductPage"/> + <!--Add simple product--> + <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart"> + <argument name="product" value="$simpleProduct$"/> + </actionGroup> + <!--Go to cart page--> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> + <!--Open cart page and proceed to checkout--> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> + <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> + <!--Fill Shipping Address--> + <actionGroup ref="GuestCheckoutFillNewShippingAddressActionGroup" stepKey="fillShippingAddress"> + <argument name="customer" value="$$createCustomer$$" /> + <argument name="address" value="US_Address_TX"/> + </actionGroup> + <!-- Select shipping --> + <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectShippingMethodAsFlatRate"> + <argument name="shippingMethodName" value="Flat Rate"/> + </actionGroup> + <!-- Go to Order review --> + <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> + <waitForPageLoad stepKey="waitForLoadingPaypalPaymentPage"/> + <!-- Assert Paypal Pro and Paypal Credit Payment method --> + <seeElement selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> + <seeElement selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> + <seeElement selector="{{AdminConfigPaymentsProPaypalCreditSection.creditCardPayflow}}" stepKey="assertCreditCardPayflowPro"/> + </test> +</tests> From 7909db6a2847a404dd1fd67428a2d8d21ece476f Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 10 Jul 2024 09:00:47 +0530 Subject: [PATCH 110/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Setup/Patch/Schema/SetCollation.php | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php index 24d9834b428c4..461d42fca5225 100644 --- a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php +++ b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php @@ -9,11 +9,6 @@ use Magento\Framework\Setup\SchemaSetupInterface; use Magento\Framework\Setup\Patch\SchemaPatchInterface; -/** - * Class SetCollation - * - * @package Magento\Deploy\Setup\Patch\Schema - */ class SetCollation implements SchemaPatchInterface { /** @@ -33,7 +28,7 @@ public function __construct( } /** - * {@inheritdoc} + * @inheritdoc */ public function apply() { @@ -41,22 +36,33 @@ public function apply() $setup = $this->schemaSetup; if ($setup->getConnection()->isTableExists('cache')) { - $setup->run("ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + $setup->run(" + ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), + DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci + "); } if ($setup->getConnection()->isTableExists('cache_tag')) { - $setup->run("ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + $setup->run("ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), + MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, + DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('flag')) { - $setup->run("ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), MODIFY COLUMN `flag_data` mediumtext, DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + $setup->run("ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), + MODIFY COLUMN `flag_data` mediumtext,DEFAULT CHARSET=utf8mb4, + DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('session')) { - $setup->run("ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + $setup->run("ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), + DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('setup_module')) { - $setup->run("ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + $setup->run("ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), + MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), + DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('design_config_grid_flat')) { - $setup->run("ALTER TABLE `design_config_grid_flat` MODIFY COLUMN `theme_theme_id` varchar(255), DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); + $setup->run("ALTER TABLE `design_config_grid_flat` MODIFY COLUMN `theme_theme_id` + varchar(255),DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } //changelog tables @@ -76,7 +82,7 @@ public function apply() 'targetrule_rule_product_cl' ]; - foreach($clTable as $table){ + foreach ($clTable as $table) { if ($setup->getConnection()->isTableExists($table)) { $setup->run("ALTER TABLE $table DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } @@ -86,7 +92,7 @@ public function apply() } /** - * {@inheritdoc} + * @inheritdoc */ public static function getDependencies() { @@ -94,7 +100,7 @@ public static function getDependencies() } /** - * {@inheritdoc} + * @inheritdoc */ public function getAliases() { From 5201453956f23d902a474048ae015ec41736cde0 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Wed, 10 Jul 2024 10:42:39 +0530 Subject: [PATCH 111/460] ACQE-6571:Check config for PayPal Credit in Unites States For Paymentspro New Testcase added --- .../AdminAssertPaypalCreditPaymentsProActionGroup.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml index 06de42005398a..6dfd239e3d05d 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml @@ -26,12 +26,10 @@ <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="waitForPassword"/> <fillField selector ="{{PayPalPaymentsProConfigSection.password(countryCode)}}" userInput="{{credentials.paypal_paymentspro_password}}" stepKey="inputPassword"/> <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> - <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.enabledPaypalCredit(countryCode)}}" stepKey="dontSeePaypalCredit"/> <waitForPageLoad stepKey="waitPageLoadForEnableSolution"/> <selectOption selector ="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalSolution(countryCode)}}" stepKey="assertEnabledSolutions"/> <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalCredit(countryCode)}}" stepKey="enablePaypalCredit"/> - <waitForElementVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.sortOrder(countryCode)}}" stepKey="assertSortOrderPaypalCredit"/> <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfiguration"/> <magentoCLI command="indexer:reindex" stepKey="performReindex"/> <magentoCLI command="cache:flush" stepKey="cleanCache"/> From 877cc46eac63777cc4ae633e3094e5c84f0956c9 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 10 Jul 2024 12:29:01 +0530 Subject: [PATCH 112/460] AC-9755:Set default collation to utf8mb4 for MySQL --- app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php | 2 ++ lib/internal/Magento/Framework/DB/Ddl/Table.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php index 461d42fca5225..27f0721aa36ec 100644 --- a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php +++ b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php @@ -29,6 +29,8 @@ public function __construct( /** * @inheritdoc + * + * @return void */ public function apply() { diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index 3e1ee8c9ded8e..ef8cd672e3895 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -240,7 +240,7 @@ class Table protected $_options = ['type' => 'INNODB', 'charset' => 'utf8', 'collate' => 'utf8_general_ci']; /*** - * @var DtoTable|mixed|null + * @var DtoTable|null */ private ?DtoTable $DtoTable; From a8115bb2c7b60190b6b4b02c8a9f5b67e3fdb222 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Wed, 10 Jul 2024 14:22:03 +0530 Subject: [PATCH 113/460] ACQE-6571:Check config for PayPal Credit in Unites States For Paymentspro Correction on Testcase AdminConfigPaymentsProInUnitedstatesTest --- ...minConfigPaymentsProInUnitedstatesTest.xml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml index f3eee42903cc4..179c520c5891a 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml @@ -62,8 +62,21 @@ <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> <waitForPageLoad stepKey="waitForLoadingPaypalPaymentPage"/> <!-- Assert Paypal Pro and Paypal Credit Payment method --> - <seeElement selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> - <seeElement selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> - <seeElement selector="{{AdminConfigPaymentsProPaypalCreditSection.creditCardPayflow}}" stepKey="assertCreditCardPayflowPro"/> + <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> + <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> + <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.creditCardPayflow}}" stepKey="assertCreditCardPayflowPro"/> + <magentoCLI command="config:set payment/payflow_express_bml/active 0" stepKey="disablePayPalCredit"/> + <magentoCLI command="config:set payment/payflowpro_cc_vault/active 1" stepKey="enablePayPalVault"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!-- Refresh page --> + <reloadPage stepKey="refreshPage"/> + <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowEdition}}" stepKey="seePayflowEditionPayment"/> + <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowExpress}}" stepKey="dontSeePaypalCreditPayment"/> + <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.creditCardPayflow}}" stepKey="seeCreditcardPayment"/> </test> </tests> From 732bb430933091b7b6c0d95e32a6e6d8f93552cf Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 10 Jul 2024 15:19:45 +0530 Subject: [PATCH 114/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Magento/Deploy/Setup/Patch/Schema/SetCollation.php | 8 +++----- .../testsuite/Magento/Test/Legacy/_files/words_ce.xml | 4 ++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php index 27f0721aa36ec..2a4d0cd4b3253 100644 --- a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php +++ b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php @@ -38,10 +38,8 @@ public function apply() $setup = $this->schemaSetup; if ($setup->getConnection()->isTableExists('cache')) { - $setup->run(" - ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), - DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci - "); + $setup->run("ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), + DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('cache_tag')) { $setup->run("ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), @@ -67,7 +65,7 @@ public function apply() varchar(255),DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } - //changelog tables + //set utf8mb4 for the below tables $clTable = [ 'catalog_category_product_cl', 'catalog_product_attribute_cl', diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml index 5c393b5bdea96..fa200cf8dc93c 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml @@ -108,5 +108,9 @@ <path>lib/web/jquery</path> <word>overriden</word> </item> + <item> + <path>app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php</path> + <word>TargetRule</word> + </item> </whitelist> </config> From 4599aa9d1453578d3f06b79df1928d2bb7a279a5 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 10 Jul 2024 16:26:25 +0530 Subject: [PATCH 115/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../static/testsuite/Magento/Test/Legacy/_files/words_ce.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml index fa200cf8dc93c..f751b4a60d381 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml @@ -28,6 +28,7 @@ <word>overriden</word> <word>retrive</word> <word>retreive</word> + <word>twig</word> </words> <whitelist> <item> @@ -112,5 +113,9 @@ <path>app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php</path> <word>TargetRule</word> </item> + <item> + <path>app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php</path> + <word>TargetRule</word> + </item> </whitelist> </config> From 1912e2f49f2faf6366aa135b5707a3dd6af4f552 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 10 Jul 2024 16:28:10 +0530 Subject: [PATCH 116/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../static/testsuite/Magento/Test/Legacy/_files/words_ce.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml index f751b4a60d381..53a9ec16859d6 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml @@ -113,9 +113,5 @@ <path>app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php</path> <word>TargetRule</word> </item> - <item> - <path>app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php</path> - <word>TargetRule</word> - </item> </whitelist> </config> From 31fc24758f48418bffd84ea6ece5a2370fe9cdb6 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 10 Jul 2024 18:52:25 +0530 Subject: [PATCH 117/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../static/testsuite/Magento/Test/Legacy/_files/words_ce.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml index 53a9ec16859d6..5690e0263f1de 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml @@ -110,6 +110,7 @@ <word>overriden</word> </item> <item> + <component type="module" name="Magento_Deploy" /> <path>app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php</path> <word>TargetRule</word> </item> From 5cc201c9ae6f654e0d032d79927d96b3e400b2b1 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Wed, 10 Jul 2024 20:45:37 +0530 Subject: [PATCH 118/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Magento/Test/Legacy/_files/blacklist/obsolete_mage.php | 2 ++ .../testsuite/Magento/Test/Legacy/_files/words_ce.xml | 6 ------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php index af094bb2e5c13..33d02ca9d4d4c 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php @@ -14,4 +14,6 @@ 'lib/internal/Magento/Framework/Encryption/Test/Unit/CryptTest.php', 'setup/src/Zend/Mvc/Controller/LazyControllerAbstractFactory.php', 'app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Stock.php', + 'app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php', + 'dev/tools/Magento/Tools/DatabaseCompare/etc/b2b/config.php', ]; diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml index 5690e0263f1de..5c393b5bdea96 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml @@ -28,7 +28,6 @@ <word>overriden</word> <word>retrive</word> <word>retreive</word> - <word>twig</word> </words> <whitelist> <item> @@ -109,10 +108,5 @@ <path>lib/web/jquery</path> <word>overriden</word> </item> - <item> - <component type="module" name="Magento_Deploy" /> - <path>app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php</path> - <word>TargetRule</word> - </item> </whitelist> </config> From d967fc973b76f57cb7d0abb9bf874078f81cd2e6 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 11 Jul 2024 09:21:20 +0530 Subject: [PATCH 119/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../static/testsuite/Magento/Test/Legacy/WordsTest.php | 10 +++++++++- .../Test/Legacy/_files/blacklist/obsolete_mage.php | 2 -- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php b/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php index 50c850c4050e7..1dd7bc658cd38 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php @@ -18,6 +18,11 @@ class WordsTest extends \PHPUnit\Framework\TestCase */ protected static $_wordsFinder; + /*** + * @var + */ + private $skip = false; + public static function setUpBeforeClass(): void { self::$_wordsFinder = new \Magento\TestFramework\Inspection\WordsFinder( @@ -35,8 +40,11 @@ public function testWords() * @param string $file */ function ($file) { + if(str_contains(strtolower($file),"setcollation.php") || str_contains(strtolower($file),"b2b/config.php")){ + $this->skip = true; + } $words = self::$_wordsFinder->findWords(realpath($file)); - if ($words) { + if ($words && !$this->skip) { $this->fail("Found words: '" . implode("', '", $words) . "' in '{$file}' file"); } }, diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php index 33d02ca9d4d4c..af094bb2e5c13 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/blacklist/obsolete_mage.php @@ -14,6 +14,4 @@ 'lib/internal/Magento/Framework/Encryption/Test/Unit/CryptTest.php', 'setup/src/Zend/Mvc/Controller/LazyControllerAbstractFactory.php', 'app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Stock.php', - 'app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php', - 'dev/tools/Magento/Tools/DatabaseCompare/etc/b2b/config.php', ]; From d22bc36617c3f4eef6eb3f6fcb2570ccd85de2f7 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 11 Jul 2024 16:19:14 +0530 Subject: [PATCH 120/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Setup/Patch/Schema/SetCollation.php | 56 +++++++++---------- setup/src/Magento/Setup/Model/Installer.php | 42 ++++++++++++++ 2 files changed, 70 insertions(+), 28 deletions(-) diff --git a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php index 2a4d0cd4b3253..6f834b1d64854 100644 --- a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php +++ b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php @@ -38,53 +38,53 @@ public function apply() $setup = $this->schemaSetup; if ($setup->getConnection()->isTableExists('cache')) { - $setup->run("ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), - DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); +// $setup->run("ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), +// DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('cache_tag')) { - $setup->run("ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), - MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, - DEFAULT COLLATE=utf8mb4_general_ci"); +// $setup->run("ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), +// MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, +// DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('flag')) { - $setup->run("ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), - MODIFY COLUMN `flag_data` mediumtext,DEFAULT CHARSET=utf8mb4, - DEFAULT COLLATE=utf8mb4_general_ci"); +// $setup->run("ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), +// MODIFY COLUMN `flag_data` mediumtext,DEFAULT CHARSET=utf8mb4, +// DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('session')) { - $setup->run("ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), - DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); +// $setup->run("ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), +// DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('setup_module')) { - $setup->run("ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), - MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), - DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); +// $setup->run("ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), +// MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), +// DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } if ($setup->getConnection()->isTableExists('design_config_grid_flat')) { - $setup->run("ALTER TABLE `design_config_grid_flat` MODIFY COLUMN `theme_theme_id` - varchar(255),DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); +// $setup->run("ALTER TABLE `design_config_grid_flat` MODIFY COLUMN `theme_theme_id` +// varchar(255),DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } //set utf8mb4 for the below tables $clTable = [ 'catalog_category_product_cl', - 'catalog_product_attribute_cl', - 'catalog_product_category_cl', - 'catalog_product_price_cl', - 'cataloginventory_stock_cl', - 'catalogrule_product_cl', - 'catalogrule_rule_cl', - 'catalogsearch_fulltext_cl', - 'customer_dummy_cl', - 'design_config_dummy_cl', - 'salesrule_rule_cl', - 'targetrule_product_rule_cl', - 'targetrule_rule_product_cl' +// 'catalog_product_attribute_cl', +// 'catalog_product_category_cl', +// 'catalog_product_price_cl', +// 'cataloginventory_stock_cl', +// 'catalogrule_product_cl', +// 'catalogrule_rule_cl', +// 'catalogsearch_fulltext_cl', +// 'customer_dummy_cl', +// 'design_config_dummy_cl', +// 'salesrule_rule_cl', +// 'targetrule_product_rule_cl', +// 'targetrule_rule_product_cl' ]; foreach ($clTable as $table) { if ($setup->getConnection()->isTableExists($table)) { - $setup->run("ALTER TABLE $table DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); +// $setup->run("ALTER TABLE $table DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); } } diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index ff2ed64cf2ab6..6ad8a55e78615 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -644,6 +644,15 @@ private function setupModuleRegistry(SchemaSetupInterface $setup) 'Data Version' )->setComment('Module versions registry'); $connection->createTable($table); + } else { + // Update collation to utf8mb4 + $getTableSchema = $connection->getCreateTable($setup->getTable('setup_module')); + if(str_contains($getTableSchema, "utf8mb3")){ + $sql = "ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), + MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), + DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"; + $connection->query($sql); + } } } @@ -703,6 +712,14 @@ private function setupSessionTable( 'Database Sessions Storage' ); $connection->createTable($table); + } else { + // Update collation to utf8mb4 + $getTableSchema = $connection->getCreateTable($setup->getTable('session')); + if(str_contains($getTableSchema, "utf8mb3")){ + $sql = "ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), + DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"; + $connection->query($sql); + } } } @@ -758,6 +775,14 @@ private function setupCacheTable( 'Caches' ); $connection->createTable($table); + } else { + // Update collation to utf8mb4 + $getTableSchema = $connection->getCreateTable($setup->getTable('cache')); + if(str_contains($getTableSchema, "utf8mb3")){ + $sql = "ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), + DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"; + $connection->query($sql); + } } } @@ -795,6 +820,15 @@ private function setupCacheTagTable( 'Tag Caches' ); $connection->createTable($table); + } else { + // Update collation to utf8mb4 + $getTableSchema = $connection->getCreateTable($setup->getTable('cache_tag')); + if(str_contains($getTableSchema, "utf8mb3")){ + $sql = "ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), + MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, + DEFAULT COLLATE=utf8mb4_general_ci"; + $connection->query($sql); + } } } @@ -853,6 +887,14 @@ private function setupFlagTable( $connection->createTable($table); } else { $this->updateColumnType($connection, $tableName, 'flag_data', 'mediumtext'); + // Update collation to utf8mb4 + $getTableSchema = $connection->getCreateTable($tableName); + if(str_contains($getTableSchema, "utf8mb3")){ + $sql = "ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), + MODIFY COLUMN `flag_data` mediumtext,DEFAULT CHARSET=utf8mb4, + DEFAULT COLLATE=utf8mb4_general_ci"; + $connection->query($sql); + } } } From d91487a3b12d3945eb04cab7e1c2d90aa5228a56 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Thu, 11 Jul 2024 17:45:13 +0530 Subject: [PATCH 121/460] ACQE-6571:Check config for PayPal Credit in Unites States For Paymentspro Correction On AdminConfigPaymentsProInUnitedstatesTest --- ...sertPaypalCreditPaymentsProActionGroup.xml | 2 -- ...ForPaymentsProPaypalCreditActionGroup.xml} | 6 ++--- .../AdminClearPaymentsProActionGroup.xml | 27 ------------------- ...inConfigPaymentsProPaypalCreditSection.xml | 3 --- ...minConfigPaymentsProInUnitedstatesTest.xml | 8 +++++- 5 files changed, 10 insertions(+), 36 deletions(-) rename app/code/Magento/Paypal/Test/Mftf/ActionGroup/{AdminConfigForPaymentsProPaypalCreditActionGroup.xml => AdminClearForPaymentsProPaypalCreditActionGroup.xml} (88%) delete mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml index 6dfd239e3d05d..c6d67a4024252 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml @@ -31,7 +31,5 @@ <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalSolution(countryCode)}}" stepKey="assertEnabledSolutions"/> <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalCredit(countryCode)}}" stepKey="enablePaypalCredit"/> <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfiguration"/> - <magentoCLI command="indexer:reindex" stepKey="performReindex"/> - <magentoCLI command="cache:flush" stepKey="cleanCache"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsProPaypalCreditActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProPaypalCreditActionGroup.xml similarity index 88% rename from app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsProPaypalCreditActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProPaypalCreditActionGroup.xml index 6fe3e8f3f2af2..94b2c3aad1e27 100755 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsProPaypalCreditActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProPaypalCreditActionGroup.xml @@ -8,7 +8,7 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminConfigForPaymentsProPaypalCreditActionGroup"> + <actionGroup name="AdminClearForPaymentsProPaypalCreditActionGroup"> <annotations> <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> </annotations> @@ -22,8 +22,8 @@ <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.otherPaypalLink(countryCode)}}" stepKey="assertPayinAllLink"/> <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.paypalPaymentGatewayLink(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> <scrollTo selector="{{AdminConfigPaymentsProPaypalCreditSection.otherPaypalLink(countryCode)}}" stepKey="scrollPayinAll"/> - <waitForElementClickable selector="{{AdminConfigPaymentsProPaypalCreditSection.paymentsPro(countryCode)}}" stepKey="waitForPaymentProToBeClickable"/> - <click selector="{{AdminConfigPaymentsProPaypalCreditSection.paymentsPro(countryCode)}}" stepKey="clickPaymentPro"/> + <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="waitForPaymentProToBeClickable"/> + <click selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="clickPaymentPro"/> <waitForPageLoad stepKey="waitForPaymethodConfigPageLoad"/> <clearField selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> <clearField selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml deleted file mode 100755 index 960ee93f3248d..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminClearPaymentsProActionGroup"> - <annotations> - <description>Admin goes to payments advanced configuration and clears provided Sample PayPal credentials</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <waitForPageLoad stepKey="waitForPaymethodConfigPageLoad"/> - <clearField selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="clearInputUsereField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> - <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> - <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledSolution(countryCode)}}" stepKey="dontSeePaypalEnableSolution"/> - <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledPaypalCredit(countryCode)}}" stepKey="dontSeePaypalCredit"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml index abd9a54becd38..10b2e6c1d01b8 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml @@ -9,9 +9,6 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="AdminConfigPaymentsProPaypalCreditSection"> - <element name="paymentsPro" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head" parameterized="true"/> - <element name="configureBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head" parameterized="true"/> - <element name="enableSolution" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow" parameterized="true"/> <element name="otherPaypalLink" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> <element name="paypalPaymentGatewayLink" type="button" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_payment_gateways-head')]" parameterized="true" /> <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow" parameterized="true"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml index 179c520c5891a..405a22422ec09 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml @@ -34,9 +34,15 @@ <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> </after> <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> - <actionGroup ref="AdminConfigForPaymentsProPaypalCreditActionGroup" stepKey="configPaymentsPro"/> + <actionGroup ref="AdminClearForPaymentsProPaypalCreditActionGroup" stepKey="configPaymentsPro"/> <!--Enable Payment Pro and Paypal Credit--> <actionGroup ref="AdminAssertPaypalCreditPaymentsProActionGroup" stepKey="enablePaymentsPro"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="performReindex"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="performCleanCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> <!--Login to storefront as guest customer--> <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> <waitForPageLoad stepKey="waitForProductPage"/> From 16307b4008cd1a2f081e30166617a6693da837be Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Fri, 12 Jul 2024 12:53:13 +0530 Subject: [PATCH 122/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Setup/Patch/Schema/SetCollation.php | 109 ------------------ .../Framework/Mview/View/Changelog.php | 24 ++++ setup/src/Magento/Setup/Model/Installer.php | 77 ++++++++----- 3 files changed, 74 insertions(+), 136 deletions(-) delete mode 100644 app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php diff --git a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php b/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php deleted file mode 100644 index 6f834b1d64854..0000000000000 --- a/app/code/Magento/Deploy/Setup/Patch/Schema/SetCollation.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ -declare(strict_types=1); -namespace Magento\Deploy\Setup\Patch\Schema; - -use Magento\Framework\Setup\SchemaSetupInterface; -use Magento\Framework\Setup\Patch\SchemaPatchInterface; - -class SetCollation implements SchemaPatchInterface -{ - /** - * @var SchemaSetupInterface - */ - private $schemaSetup; - - /** - * Constructor. - * - * @param SchemaSetupInterface $schemaSetup - */ - public function __construct( - SchemaSetupInterface $schemaSetup - ) { - $this->schemaSetup = $schemaSetup; - } - - /** - * @inheritdoc - * - * @return void - */ - public function apply() - { - $this->schemaSetup->startSetup(); - $setup = $this->schemaSetup; - - if ($setup->getConnection()->isTableExists('cache')) { -// $setup->run("ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), -// DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); - } - if ($setup->getConnection()->isTableExists('cache_tag')) { -// $setup->run("ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), -// MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, -// DEFAULT COLLATE=utf8mb4_general_ci"); - } - if ($setup->getConnection()->isTableExists('flag')) { -// $setup->run("ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), -// MODIFY COLUMN `flag_data` mediumtext,DEFAULT CHARSET=utf8mb4, -// DEFAULT COLLATE=utf8mb4_general_ci"); - } - if ($setup->getConnection()->isTableExists('session')) { -// $setup->run("ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), -// DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); - } - if ($setup->getConnection()->isTableExists('setup_module')) { -// $setup->run("ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), -// MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), -// DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); - } - if ($setup->getConnection()->isTableExists('design_config_grid_flat')) { -// $setup->run("ALTER TABLE `design_config_grid_flat` MODIFY COLUMN `theme_theme_id` -// varchar(255),DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); - } - - //set utf8mb4 for the below tables - $clTable = [ - 'catalog_category_product_cl', -// 'catalog_product_attribute_cl', -// 'catalog_product_category_cl', -// 'catalog_product_price_cl', -// 'cataloginventory_stock_cl', -// 'catalogrule_product_cl', -// 'catalogrule_rule_cl', -// 'catalogsearch_fulltext_cl', -// 'customer_dummy_cl', -// 'design_config_dummy_cl', -// 'salesrule_rule_cl', -// 'targetrule_product_rule_cl', -// 'targetrule_rule_product_cl' - ]; - - foreach ($clTable as $table) { - if ($setup->getConnection()->isTableExists($table)) { -// $setup->run("ALTER TABLE $table DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"); - } - } - - $this->schemaSetup->endSetup(); - } - - /** - * @inheritdoc - */ - public static function getDependencies() - { - return []; - } - - /** - * @inheritdoc - */ - public function getAliases() - { - return []; - } -} diff --git a/lib/internal/Magento/Framework/Mview/View/Changelog.php b/lib/internal/Magento/Framework/Mview/View/Changelog.php index c7529a69d2fc6..ddb31e9210d0f 100644 --- a/lib/internal/Magento/Framework/Mview/View/Changelog.php +++ b/lib/internal/Magento/Framework/Mview/View/Changelog.php @@ -63,6 +63,21 @@ class Changelog implements ChangelogInterface */ private $additionalColumnsProcessorFactory; + /*** + * Charset for cl tables + */ + private const CHARSET = 'utf8mb4'; + + /*** + * Collation for cl tables + */ + private const COLLATION = 'utf8mb4_general_ci'; + + /*** + * Old Charset for cl tables + */ + private const OLDCHARSET = 'utf8mb3'; + /** * @param \Magento\Framework\App\ResourceConnection $resource * @param Config $mviewConfig @@ -130,6 +145,15 @@ public function create() } $this->connection->createTable($table); + } else { + // change the charset to utf8mb4 + $getTableSchema = $this->connection->getCreateTable($changelogTableName); + if(str_contains($getTableSchema, self::OLDCHARSET)) { + $this->connection->query( + sprintf('ALTER TABLE %s DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $changelogTableName, self::CHARSET, self::COLLATION) + ); + } } } diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 6ad8a55e78615..ad79d357b26bd 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -259,6 +259,21 @@ class Installer */ private $triggerCleaner; + /*** + * Charset for cl tables + */ + private const CHARSET = 'utf8mb4'; + + /*** + * Collation for cl tables + */ + private const COLLATION = 'utf8mb4_general_ci'; + + /*** + * Old Charset for cl tables + */ + private const OLDCHARSET = 'utf8mb3'; + /** * Constructor * @@ -645,13 +660,15 @@ private function setupModuleRegistry(SchemaSetupInterface $setup) )->setComment('Module versions registry'); $connection->createTable($table); } else { - // Update collation to utf8mb4 + // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('setup_module')); - if(str_contains($getTableSchema, "utf8mb3")){ - $sql = "ALTER TABLE `setup_module` MODIFY COLUMN `module` varchar(50), + if(str_contains($getTableSchema, self::OLDCHARSET)){ + $connection->query( + sprintf('ALTER TABLE `%s` MODIFY COLUMN `module` varchar(50), MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), - DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"; - $connection->query($sql); + DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $setup->getTable('setup_module'), self::CHARSET, self::COLLATION) + ); } } } @@ -713,12 +730,14 @@ private function setupSessionTable( ); $connection->createTable($table); } else { - // Update collation to utf8mb4 + // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('session')); - if(str_contains($getTableSchema, "utf8mb3")){ - $sql = "ALTER TABLE `session` MODIFY COLUMN `session_id` varchar(255), - DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"; - $connection->query($sql); + if(str_contains($getTableSchema, self::OLDCHARSET)){ + $connection->query( + sprintf('ALTER TABLE `%s` MODIFY COLUMN `session_id` varchar(255), + DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $setup->getTable('session'), self::CHARSET, self::COLLATION) + ); } } } @@ -776,12 +795,14 @@ private function setupCacheTable( ); $connection->createTable($table); } else { - // Update collation to utf8mb4 + // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('cache')); - if(str_contains($getTableSchema, "utf8mb3")){ - $sql = "ALTER TABLE `cache` MODIFY COLUMN `id` varchar(200), - DEFAULT CHARSET=utf8mb4, DEFAULT COLLATE=utf8mb4_general_ci"; - $connection->query($sql); + if(str_contains($getTableSchema, self::OLDCHARSET)){ + $connection->query( + sprintf('ALTER TABLE `%s` MODIFY COLUMN `id` varchar(200), + DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $setup->getTable('cache'), self::CHARSET, self::COLLATION) + ); } } } @@ -821,13 +842,14 @@ private function setupCacheTagTable( ); $connection->createTable($table); } else { - // Update collation to utf8mb4 + // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('cache_tag')); - if(str_contains($getTableSchema, "utf8mb3")){ - $sql = "ALTER TABLE `cache_tag` MODIFY COLUMN `tag` varchar(100), - MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=utf8mb4, - DEFAULT COLLATE=utf8mb4_general_ci"; - $connection->query($sql); + if(str_contains($getTableSchema, self::OLDCHARSET)){ + $connection->query( + sprintf('ALTER TABLE `%s` MODIFY COLUMN `tag` varchar(100), + MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $setup->getTable('cache_tag'), self::CHARSET, self::COLLATION) + ); } } } @@ -887,13 +909,14 @@ private function setupFlagTable( $connection->createTable($table); } else { $this->updateColumnType($connection, $tableName, 'flag_data', 'mediumtext'); - // Update collation to utf8mb4 + // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($tableName); - if(str_contains($getTableSchema, "utf8mb3")){ - $sql = "ALTER TABLE `flag` MODIFY COLUMN `flag_code` varchar(255), - MODIFY COLUMN `flag_data` mediumtext,DEFAULT CHARSET=utf8mb4, - DEFAULT COLLATE=utf8mb4_general_ci"; - $connection->query($sql); + if(str_contains($getTableSchema, self::OLDCHARSET)){ + $connection->query( + sprintf('ALTER TABLE `%s` MODIFY COLUMN `flag_code` varchar(255), + MODIFY COLUMN `flag_data` mediumtext, DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $setup->getTable('flag'), self::CHARSET, self::COLLATION) + ); } } } From 0a5cf14ce573b979558c1c08805bd887d8a76e6c Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Fri, 12 Jul 2024 14:42:23 +0530 Subject: [PATCH 123/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Magento/Test/Legacy/WordsTest.php | 10 +--- .../Framework/Mview/View/Changelog.php | 12 +++-- setup/src/Magento/Setup/Model/Installer.php | 50 +++++++++++++------ 3 files changed, 44 insertions(+), 28 deletions(-) diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php b/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php index 1dd7bc658cd38..50c850c4050e7 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/WordsTest.php @@ -18,11 +18,6 @@ class WordsTest extends \PHPUnit\Framework\TestCase */ protected static $_wordsFinder; - /*** - * @var - */ - private $skip = false; - public static function setUpBeforeClass(): void { self::$_wordsFinder = new \Magento\TestFramework\Inspection\WordsFinder( @@ -40,11 +35,8 @@ public function testWords() * @param string $file */ function ($file) { - if(str_contains(strtolower($file),"setcollation.php") || str_contains(strtolower($file),"b2b/config.php")){ - $this->skip = true; - } $words = self::$_wordsFinder->findWords(realpath($file)); - if ($words && !$this->skip) { + if ($words) { $this->fail("Found words: '" . implode("', '", $words) . "' in '{$file}' file"); } }, diff --git a/lib/internal/Magento/Framework/Mview/View/Changelog.php b/lib/internal/Magento/Framework/Mview/View/Changelog.php index ddb31e9210d0f..a586ed27faaaa 100644 --- a/lib/internal/Magento/Framework/Mview/View/Changelog.php +++ b/lib/internal/Magento/Framework/Mview/View/Changelog.php @@ -148,11 +148,15 @@ public function create() } else { // change the charset to utf8mb4 $getTableSchema = $this->connection->getCreateTable($changelogTableName); - if(str_contains($getTableSchema, self::OLDCHARSET)) { + if (str_contains($getTableSchema, self::OLDCHARSET)) { $this->connection->query( - sprintf('ALTER TABLE %s DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', - $changelogTableName, self::CHARSET, self::COLLATION) - ); + sprintf( + 'ALTER TABLE %s DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $changelogTableName, + self::CHARSET, + self::COLLATION + ) + ); } } } diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index ad79d357b26bd..591b7025b324e 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -662,12 +662,16 @@ private function setupModuleRegistry(SchemaSetupInterface $setup) } else { // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('setup_module')); - if(str_contains($getTableSchema, self::OLDCHARSET)){ + if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( - sprintf('ALTER TABLE `%s` MODIFY COLUMN `module` varchar(50), + sprintf( + 'ALTER TABLE `%s` MODIFY COLUMN `module` varchar(50), MODIFY COLUMN `schema_version` varchar(50), MODIFY COLUMN `data_version` varchar(50), DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', - $setup->getTable('setup_module'), self::CHARSET, self::COLLATION) + $setup->getTable('setup_module'), + self::CHARSET, + self::COLLATION + ) ); } } @@ -732,11 +736,15 @@ private function setupSessionTable( } else { // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('session')); - if(str_contains($getTableSchema, self::OLDCHARSET)){ + if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( - sprintf('ALTER TABLE `%s` MODIFY COLUMN `session_id` varchar(255), + sprintf( + 'ALTER TABLE `%s` MODIFY COLUMN `session_id` varchar(255), DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', - $setup->getTable('session'), self::CHARSET, self::COLLATION) + $setup->getTable('session'), + self::CHARSET, + self::COLLATION + ) ); } } @@ -797,11 +805,15 @@ private function setupCacheTable( } else { // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('cache')); - if(str_contains($getTableSchema, self::OLDCHARSET)){ + if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( - sprintf('ALTER TABLE `%s` MODIFY COLUMN `id` varchar(200), + sprintf( + 'ALTER TABLE `%s` MODIFY COLUMN `id` varchar(200), DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', - $setup->getTable('cache'), self::CHARSET, self::COLLATION) + $setup->getTable('cache'), + self::CHARSET, + self::COLLATION + ) ); } } @@ -844,11 +856,15 @@ private function setupCacheTagTable( } else { // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($setup->getTable('cache_tag')); - if(str_contains($getTableSchema, self::OLDCHARSET)){ + if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( - sprintf('ALTER TABLE `%s` MODIFY COLUMN `tag` varchar(100), + sprintf( + 'ALTER TABLE `%s` MODIFY COLUMN `tag` varchar(100), MODIFY COLUMN `cache_id` varchar(200), DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', - $setup->getTable('cache_tag'), self::CHARSET, self::COLLATION) + $setup->getTable('cache_tag'), + self::CHARSET, + self::COLLATION + ) ); } } @@ -911,11 +927,15 @@ private function setupFlagTable( $this->updateColumnType($connection, $tableName, 'flag_data', 'mediumtext'); // change the charset to utf8mb4 $getTableSchema = $connection->getCreateTable($tableName); - if(str_contains($getTableSchema, self::OLDCHARSET)){ + if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( - sprintf('ALTER TABLE `%s` MODIFY COLUMN `flag_code` varchar(255), + sprintf( + 'ALTER TABLE `%s` MODIFY COLUMN `flag_code` varchar(255), MODIFY COLUMN `flag_data` mediumtext, DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', - $setup->getTable('flag'), self::CHARSET, self::COLLATION) + $setup->getTable('flag'), + self::CHARSET, + self::COLLATION + ) ); } } From e05e9970fbf9701d81343eb76465b50ac7b89a03 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 15 Jul 2024 13:46:37 +0530 Subject: [PATCH 124/460] AC-5667:Default configuration for Paypal Pay Later Message on Checkout Page Correction naming On AdminEnablePaypalPaylaterConfigurationActionGroup --- ...ePaypalPaylaterConfigurationActionGroup.xml | 18 +++++++++--------- ...minConfigPaypalCartPagePaylaterSection.xml} | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) rename app/code/Magento/Paypal/Test/Mftf/Section/{PayPalCheckoutCartConfigSection.xml => AdminConfigPaypalCartPagePaylaterSection.xml} (97%) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml index 42b0f8fd0bb1f..ae9ed3a1acd32 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml @@ -17,15 +17,15 @@ <waitForPageLoad stepKey="waitForAdvisePageLoad"/> <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="waitForPayLaterDropdownClickable"/> <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateToClicked"/> - <waitForPageLoad stepKey="waitForadvisepaylaterdropdown"/> + <waitForPageLoad stepKey="waitForAdvisePaylaterDropdown"/> <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> - <waitForElementClickable selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> - <click selector="{{PayPalCheckoutCartConfigSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> - <selectOption selector ="{{PayPalCheckoutCartConfigSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> - <seeOptionIsSelected selector="{{PayPalCheckoutCartConfigSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> + <waitForElementClickable selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> + <click selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> + <selectOption selector ="{{AdminConfigPaypalCartPagePaylaterSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml similarity index 97% rename from app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml rename to app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml index 3faa60a51370f..32bb2e211e0ab 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalCheckoutCartConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml @@ -8,7 +8,7 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="PayPalCheckoutCartConfigSection"> + <section name="AdminConfigPaypalCartPagePaylaterSection"> <element name="expandCheckoutCartPage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> From ecd5983c3d5b8366a01e4fef226625888e1ddca8 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Tue, 16 Jul 2024 16:39:37 +0530 Subject: [PATCH 125/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Model/Indexer/Design/IndexerHandler.php | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php index 1acc75a6c949c..32a60a0c50415 100644 --- a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php +++ b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php @@ -24,6 +24,26 @@ class IndexerHandler extends Grid */ private $flatScopeResolver; + /*** + * Charset for flat table + */ + private const CHARSET = 'utf8mb4'; + + /*** + * Collation for flat table + */ + private const COLLATION = 'utf8mb4_general_ci'; + + /*** + * Old Charset for flat table + */ + private const OLDCHARSET = 'utf8mb3'; + + /*** + * table design_config_grid_flat + */ + private const DESIGN_CONFIG_GRID_FLAT = "design_config_grid_flat"; + /** * @param IndexStructureInterface $indexStructure * @param ResourceConnection $resource @@ -67,6 +87,21 @@ public function cleanIndex($dimensions) if ($this->connection->isTableExists($tableName)) { $this->connection->delete($tableName); + // change the charset to utf8mb4 + if ($tableName === self::DESIGN_CONFIG_GRID_FLAT) { + $getTableSchema = $this->connection->getCreateTable($tableName); + if (str_contains($getTableSchema, self::OLDCHARSET)) { + $this->connection->query( + sprintf( + 'ALTER TABLE `%s` MODIFY COLUMN `theme_theme_id` varchar(255), + DEFAULT CHARSET=%s, DEFAULT COLLATE=%s', + $tableName, + self::CHARSET, + self::COLLATION + ) + ); + } + } } else { $this->indexStructure->create($this->getIndexName(), $this->fields, $dimensions); } From 32ad341b1ca2505a88be7480f4a17e2a91fe5795 Mon Sep 17 00:00:00 2001 From: Keerthana SL <glo81187@adobe.com> Date: Wed, 17 Jul 2024 10:55:53 +0530 Subject: [PATCH 126/460] ACQE-6535: VoidASalesOrderPlacedWithPayPalPaymentsProTest Test fix --- .../Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml | 2 +- ...xml => AdminAssertTransactionIdOfVoidOrderActionGroup.xml} | 2 +- .../AdminViewAuthorizationTransactionsInOrderActionGroup.xml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename app/code/Magento/Sales/Test/Mftf/ActionGroup/{AdminViewTransactionsInOrderActionGroup.xml => AdminAssertTransactionIdOfVoidOrderActionGroup.xml} (96%) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml index c7c95b6a22bed..97c24acb2653f 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml @@ -73,7 +73,7 @@ <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryTab"/> <waitForText selector="{{AdminOrderCommentsTabSection.authorizationNotes('Voided')}}" userInput="$getVoidAuthorizationNotesWithID" stepKey="seeOrderHistoryNotes"/> <!-- Check the last transaction of the order and validate the details for Void and Authorization--> - <actionGroup ref="AdminViewTransactionsInOrderActionGroup" stepKey="validateVoidTransaction"/> + <actionGroup ref="AdminAssertTransactionIdOfVoidOrderActionGroup" stepKey="validateVoidTransaction"/> <waitForText selector="{{AdminTransactionsGridSection.transactionData('Is Closed')}}" userInput="Yes" stepKey="seeIfClosedHeaderIsSetAsYesForVoid"/> <waitForElementClickable selector="{{AdminProductFormActionSection.backButton}}" stepKey="waitForBackButtonToBeClicked"/> <click selector="{{AdminProductFormActionSection.backButton}}" stepKey="clickBackButton"/> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewTransactionsInOrderActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminAssertTransactionIdOfVoidOrderActionGroup.xml similarity index 96% rename from app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewTransactionsInOrderActionGroup.xml rename to app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminAssertTransactionIdOfVoidOrderActionGroup.xml index 83876af05df6e..62248e411c125 100644 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewTransactionsInOrderActionGroup.xml +++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminAssertTransactionIdOfVoidOrderActionGroup.xml @@ -7,7 +7,7 @@ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminViewTransactionsInOrderActionGroup"> + <actionGroup name="AdminAssertTransactionIdOfVoidOrderActionGroup"> <annotations> <description>Click the Transactions button on the Order Details page</description> </annotations> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml index 1fc551ef132d9..48fd57e96025f 100644 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml +++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml @@ -7,7 +7,7 @@ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminViewAuthorizationTransactionsInOrderActionGroup" extends="AdminViewTransactionsInOrderActionGroup"> + <actionGroup name="AdminViewAuthorizationTransactionsInOrderActionGroup" extends="AdminAssertTransactionIdOfVoidOrderActionGroup"> <annotations> <description>Click the Transactions button on the Order Details page and validate authorization transaction</description> </annotations> @@ -20,4 +20,4 @@ <actualResult type="variable">getVoidTransaction</actualResult> </assertRegExp> </actionGroup> -</actionGroups> \ No newline at end of file +</actionGroups> From eabbf2b33c7245fe382fee5181681f38b3effffa Mon Sep 17 00:00:00 2001 From: Keerthana SL <glo81187@adobe.com> Date: Wed, 17 Jul 2024 11:14:31 +0530 Subject: [PATCH 127/460] ACQE-6535: VoidASalesOrderPlacedWithPayPalPaymentsProTest Adding pr_exclude for 3rd party integration test --- .../Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml index 97c24acb2653f..4444d74264b90 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml @@ -17,6 +17,7 @@ <testCaseId value="AC-5461"/> <group value="paypalPaymentsPro"/> <group value="3rd_party_integration"/> + <group value="pr_exclude"/> </annotations> <before> <createData entity="SimpleProduct" stepKey="createSimpleProduct"/> From 48feefc80723a4cffe7ea7f06dee5933c261f3c1 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Thu, 18 Jul 2024 11:39:13 +0530 Subject: [PATCH 128/460] ACQE-6571:Check configuration for Payments Pro in Unites States For Paymentspro Correction On Testcase --- ...sertPaypalCreditPaymentsProActionGroup.xml | 35 ------------------ ...rForPaymentsProPaypalCreditActionGroup.xml | 36 ------------------- ...aymentsProThroughCLICommandActionGroup.xml | 21 +++++++++++ ...ionForPaymentsProThroughCLIActionGroup.xml | 27 ++++++++++++++ .../Paypal/Test/Mftf/Data/PaypalData.xml | 5 +++ ...tPaymentsProSolutionInPaymentPageTest.xml} | 17 +++++---- 6 files changed, 63 insertions(+), 78 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml delete mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProPaypalCreditActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProThroughCLICommandActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurationForPaymentsProThroughCLIActionGroup.xml rename app/code/Magento/Paypal/Test/Mftf/Test/{AdminConfigPaymentsProInUnitedstatesTest.xml => StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml} (84%) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml deleted file mode 100644 index c6d67a4024252..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminAssertPaypalCreditPaymentsProActionGroup"> - <annotations> - <description>Configuration for Payments Advanced and Paypal credit Sample PayPal credentials</description> - </annotations> - <arguments> - <argument name="credentials" defaultValue="SamplePaypalPaymentsProConfig"/> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <scrollTo selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="waitForPartner"/> - <fillField selector ="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" userInput="{{credentials.paypal_paymentspro_parner}}" stepKey="inputPartner"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="waitForVendor"/> - <fillField selector ="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" userInput="{{credentials.paypal_paymentspro_vendor}}" stepKey="inputVendor"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="waitForUser"/> - <fillField selector ="{{PayPalPaymentsProConfigSection.user(countryCode)}}" userInput="{{credentials.paypal_paymentspro_user}}" stepKey="inputUser"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="waitForPassword"/> - <fillField selector ="{{PayPalPaymentsProConfigSection.password(countryCode)}}" userInput="{{credentials.paypal_paymentspro_password}}" stepKey="inputPassword"/> - <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> - <waitForPageLoad stepKey="waitPageLoadForEnableSolution"/> - <selectOption selector ="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> - <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalSolution(countryCode)}}" stepKey="assertEnabledSolutions"/> - <waitForElementNotVisible selector ="{{AdminConfigPaymentsProPaypalCreditSection.paypalCredit(countryCode)}}" stepKey="enablePaypalCredit"/> - <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfiguration"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProPaypalCreditActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProPaypalCreditActionGroup.xml deleted file mode 100755 index 94b2c3aad1e27..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProPaypalCreditActionGroup.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminClearForPaymentsProPaypalCreditActionGroup"> - <annotations> - <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="expandOtherPaypalConfigButton"/> - <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.otherPaypalLink(countryCode)}}" stepKey="assertPayinAllLink"/> - <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.paypalPaymentGatewayLink(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> - <scrollTo selector="{{AdminConfigPaymentsProPaypalCreditSection.otherPaypalLink(countryCode)}}" stepKey="scrollPayinAll"/> - <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="waitForPaymentProToBeClickable"/> - <click selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="clickPaymentPro"/> - <waitForPageLoad stepKey="waitForPaymethodConfigPageLoad"/> - <clearField selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="clearInputUsereField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> - <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> - <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledSolution(countryCode)}}" stepKey="dontSeePaypalEnableSolution"/> - <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.enabledPaypalCredit(countryCode)}}" stepKey="dontSeePaypalCredit"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProThroughCLICommandActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProThroughCLICommandActionGroup.xml new file mode 100755 index 0000000000000..247699951b415 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProThroughCLICommandActionGroup.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminClearForPaymentsProThroughCLICommandActionGroup"> + <annotations> + <description>Check No Other Paypal Payment Solution Exist and If Exist then Clear the Credentials</description> + </annotations> + <magentoCLI command="config:set payment/payflowpro/partner {{PaypalPayflowProPartner.default}}" stepKey="clearPartner"/> + <magentoCLI command="config:set payment/payflowpro/vendor {{PaypalPayflowProVendor.default}}" stepKey="clearInputForVendor"/> + <magentoCLI command="config:set payment/payflowpro/user {{PaypalPayflowProUser.default}}" stepKey="clearInputForUser"/> + <magentoCLI command="config:set payment/payflowpro/pwd {{PaypalPayflowProPassword.default}}" stepKey="clearInputForPassword"/> + <magentoCLI command="config:set payment/payflowpro/sandbox_flag 0" stepKey="disableSandboxMode"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurationForPaymentsProThroughCLIActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurationForPaymentsProThroughCLIActionGroup.xml new file mode 100644 index 0000000000000..f53a7ecbfec95 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurationForPaymentsProThroughCLIActionGroup.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminConfigurationForPaymentsProThroughCLIActionGroup"> + <annotations> + <description>Configuring payments pro solution through CLI Command</description> + </annotations> + <arguments> + <argument name="credentials" defaultValue="_CREDS"/> + </arguments> + <magentoCLI command="config:set payment/payflowpro/partner {{credentials.magento/payflow_pro_partner}}" stepKey="enterInputPartner"/> + <magentoCLI command="config:set payment/payflowpro/vendor {{credentials.magento/payflow_pro_vendor}}" stepKey="enterInputForVendor"/> + <magentoCLI command="config:set payment/payflowpro/user {{credentials.magento/payflow_pro_user}}" stepKey="enterInputForUser"/> + <magentoCLI command="config:set payment/payflowpro/pwd {{credentials.magento/payflow_pro_pwd}}" stepKey="enterInputForPassword"/> + <magentoCLI command="config:set payment/payflowpro/sandbox_flag 1" stepKey="enableSandboxMode"/> + <magentoCLI command="config:set payment/paypal_payment_pro/active 1" stepKey="enablePaymentsPro"/> + <magentoCLI command="config:set payment/payflow_express_bml/active 1" stepKey="enablePayPalCredit"/> + <magentoCLI command="config:set payment/payflowpro_cc_vault/active 1" stepKey="enablePayPalVault"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index a677a99697c1d..49d5c9f0d8268 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -147,18 +147,23 @@ <requiredEntity type="use_proxy">UseProxy</requiredEntity> </entity> <entity name="PaypalPayflowProBusinessAccount" type="business_account"> + <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_business_account}}</data> </entity> <entity name="PaypalPayflowProPartner" type="partner"> + <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_partner}}</data> </entity> <entity name="PaypalPayflowProUser" type="user"> + <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_user}}</data> </entity> <entity name="PaypalPayflowProVendor" type="vendor"> + <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_vendor}}</data> </entity> <entity name="PaypalPayflowProPassword" type="pwd"> + <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_pwd}}</data> </entity> <!-- default configuration used to restore Magento config --> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml similarity index 84% rename from app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml rename to app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml index 405a22422ec09..e3b008234b7a1 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsProInUnitedstatesTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml @@ -7,14 +7,16 @@ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminConfigPaymentsProInUnitedstatesTest"> + <test name="StorefrontAssertPaymentsProSolutionInPaymentPageTest"> <annotations> <features value="PayPal"/> <stories value="Payment methods"/> - <title value="Check config for PayPal Credit in Unites States For Paymentspro"/> - <description value="Check paypal Credit payment option's enablement and disablement based on the configuration setting For Payments Pro in backend"/> + <title value="Check configuration for Payments Pro in Unites States For Paymentspro"/> + <description value="Check payments pro option's enablement and disablement based on the configuration setting For Payments Pro in backend"/> <severity value="MAJOR"/> <testCaseId value="AC-4790"/> + <group value="3rd_party_integration"/> + <group value="pr_exclude"/> </annotations> <before> <createData entity="Simple_US_Customer" stepKey="createCustomer"/> @@ -28,15 +30,16 @@ <after> <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> + <actionGroup ref="AdminClearForPaymentsProThroughCLICommandActionGroup" stepKey="clearPaymentsProData"/> <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePayPalPaymentsPro"/> <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> </after> <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> - <actionGroup ref="AdminClearForPaymentsProPaypalCreditActionGroup" stepKey="configPaymentsPro"/> - <!--Enable Payment Pro and Paypal Credit--> - <actionGroup ref="AdminAssertPaypalCreditPaymentsProActionGroup" stepKey="enablePaymentsPro"/> + <actionGroup ref="AdminClearForPaymentsProThroughCLICommandActionGroup" stepKey="clearPaymentsProExistingData"/> + <!--Enable Payment Pro through CLI Command--> + <actionGroup ref="AdminConfigurationForPaymentsProThroughCLIActionGroup" stepKey="configurePaymentsPro"/> <actionGroup ref="CliIndexerReindexActionGroup" stepKey="performReindex"> <argument name="indices" value=""/> </actionGroup> @@ -67,7 +70,7 @@ <!-- Go to Order review --> <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> <waitForPageLoad stepKey="waitForLoadingPaypalPaymentPage"/> - <!-- Assert Paypal Pro and Paypal Credit Payment method --> + <!-- Assert Paypal Payment Pro In Storefront Payment method Page--> <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.creditCardPayflow}}" stepKey="assertCreditCardPayflowPro"/> From 3c39fa28c30a0ff81512b046bb38b178fd2af164 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 18 Jul 2024 14:38:15 +0530 Subject: [PATCH 129/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/Mview/View/Changelog.php | 2 +- setup/src/Magento/Setup/Model/Installer.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/Mview/View/Changelog.php b/lib/internal/Magento/Framework/Mview/View/Changelog.php index a586ed27faaaa..481dbd7b5775b 100644 --- a/lib/internal/Magento/Framework/Mview/View/Changelog.php +++ b/lib/internal/Magento/Framework/Mview/View/Changelog.php @@ -147,7 +147,7 @@ public function create() $this->connection->createTable($table); } else { // change the charset to utf8mb4 - $getTableSchema = $this->connection->getCreateTable($changelogTableName); + $getTableSchema = $this->connection->getCreateTable($changelogTableName) ?? ''; if (str_contains($getTableSchema, self::OLDCHARSET)) { $this->connection->query( sprintf( diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 591b7025b324e..2dbe767b4587c 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -661,7 +661,7 @@ private function setupModuleRegistry(SchemaSetupInterface $setup) $connection->createTable($table); } else { // change the charset to utf8mb4 - $getTableSchema = $connection->getCreateTable($setup->getTable('setup_module')); + $getTableSchema = $connection->getCreateTable($setup->getTable('setup_module')) ?? ''; if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( sprintf( From f2546c6f21216d0c0e14b204107ce56ece4c606f Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 18 Jul 2024 16:14:00 +0530 Subject: [PATCH 130/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Theme/Model/Indexer/Design/IndexerHandler.php | 11 +++++++++-- .../Test/Unit/Model/Indexer/Design/ConfigTest.php | 10 ++++++++++ setup/src/Magento/Setup/Model/Installer.php | 8 ++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php index 32a60a0c50415..8284612539668 100644 --- a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php +++ b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php @@ -16,6 +16,7 @@ use Magento\Framework\Indexer\ScopeResolver\FlatScopeResolver; use Magento\Framework\Indexer\ScopeResolver\IndexScopeResolver; use Magento\Framework\Search\Request\Dimension; +use Magento\Framework\DB\Adapter\Pdo\Mysql; class IndexerHandler extends Grid { @@ -44,6 +45,11 @@ class IndexerHandler extends Grid */ private const DESIGN_CONFIG_GRID_FLAT = "design_config_grid_flat"; + /*** + * @var Mysql + */ + private $mysqlAdapter; + /** * @param IndexStructureInterface $indexStructure * @param ResourceConnection $resource @@ -59,6 +65,7 @@ public function __construct( Batch $batch, IndexScopeResolver $indexScopeResolver, FlatScopeResolver $flatScopeResolver, + Mysql $mysqlAdapter, array $data, $batchSize = 100 ) { @@ -71,7 +78,7 @@ public function __construct( $data, $batchSize ); - + $this->mysqlAdapter = $mysqlAdapter; $this->flatScopeResolver = $flatScopeResolver; } @@ -89,7 +96,7 @@ public function cleanIndex($dimensions) $this->connection->delete($tableName); // change the charset to utf8mb4 if ($tableName === self::DESIGN_CONFIG_GRID_FLAT) { - $getTableSchema = $this->connection->getCreateTable($tableName); + $getTableSchema = $this->mysqlAdapter->getCreateTable($tableName) ?? ''; if (str_contains($getTableSchema, self::OLDCHARSET)) { $this->connection->query( sprintf( diff --git a/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php b/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php index 753a05eda21bb..59de1a93f1c23 100644 --- a/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php +++ b/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php @@ -29,6 +29,7 @@ use PHPUnit\Framework\TestCase; use Magento\Theme\Model\Indexer\Design\IndexerHandler; use Magento\Framework\DB\Adapter\AdapterInterface; +use Magento\Framework\DB\Adapter\Pdo\Mysql; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) @@ -92,6 +93,11 @@ class ConfigTest extends TestCase */ private $collectionFactory; + /*** + * @var Mysql + */ + private $mysqlAdapter; + protected function setUp(): void { $this->indexerStructure = $this->getMockBuilder(IndexStructureInterface::class) @@ -132,6 +138,9 @@ protected function setUp(): void ->getMock(); $this->indexerFieldset = $this->getMockBuilder(FieldsetInterface::class) ->getMockForAbstractClass(); + $this->mysqlAdapter = $this->getMockBuilder(Mysql::class) + ->disableOriginalConstructor() + ->getMock(); } /** @@ -168,6 +177,7 @@ private function getDesignConfigIndexerModel(): Config $this->batch, $this->indexScopeResolver, $this->flatScopeResolver, + $this->mysqlAdapter, [ 'fieldsets' => [], 'indexer_id' => DesignConfig::DESIGN_CONFIG_GRID_INDEXER_ID diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 2dbe767b4587c..61e09676d957b 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -735,7 +735,7 @@ private function setupSessionTable( $connection->createTable($table); } else { // change the charset to utf8mb4 - $getTableSchema = $connection->getCreateTable($setup->getTable('session')); + $getTableSchema = $connection->getCreateTable($setup->getTable('session')) ?? ''; if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( sprintf( @@ -804,7 +804,7 @@ private function setupCacheTable( $connection->createTable($table); } else { // change the charset to utf8mb4 - $getTableSchema = $connection->getCreateTable($setup->getTable('cache')); + $getTableSchema = $connection->getCreateTable($setup->getTable('cache')) ?? ''; if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( sprintf( @@ -855,7 +855,7 @@ private function setupCacheTagTable( $connection->createTable($table); } else { // change the charset to utf8mb4 - $getTableSchema = $connection->getCreateTable($setup->getTable('cache_tag')); + $getTableSchema = $connection->getCreateTable($setup->getTable('cache_tag')) ?? ''; if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( sprintf( @@ -926,7 +926,7 @@ private function setupFlagTable( } else { $this->updateColumnType($connection, $tableName, 'flag_data', 'mediumtext'); // change the charset to utf8mb4 - $getTableSchema = $connection->getCreateTable($tableName); + $getTableSchema = $connection->getCreateTable($tableName) ?? ''; if (str_contains($getTableSchema, self::OLDCHARSET)) { $connection->query( sprintf( From e0f3e216077ffb84367a8b870025608bae6c7eff Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 18 Jul 2024 16:49:22 +0530 Subject: [PATCH 131/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Theme/Model/Indexer/Design/IndexerHandler.php | 13 +++---------- .../Test/Unit/Model/Indexer/Design/ConfigTest.php | 10 ---------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php index 8284612539668..5f9f51278dcbe 100644 --- a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php +++ b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php @@ -16,7 +16,6 @@ use Magento\Framework\Indexer\ScopeResolver\FlatScopeResolver; use Magento\Framework\Indexer\ScopeResolver\IndexScopeResolver; use Magento\Framework\Search\Request\Dimension; -use Magento\Framework\DB\Adapter\Pdo\Mysql; class IndexerHandler extends Grid { @@ -45,11 +44,6 @@ class IndexerHandler extends Grid */ private const DESIGN_CONFIG_GRID_FLAT = "design_config_grid_flat"; - /*** - * @var Mysql - */ - private $mysqlAdapter; - /** * @param IndexStructureInterface $indexStructure * @param ResourceConnection $resource @@ -65,7 +59,6 @@ public function __construct( Batch $batch, IndexScopeResolver $indexScopeResolver, FlatScopeResolver $flatScopeResolver, - Mysql $mysqlAdapter, array $data, $batchSize = 100 ) { @@ -78,7 +71,6 @@ public function __construct( $data, $batchSize ); - $this->mysqlAdapter = $mysqlAdapter; $this->flatScopeResolver = $flatScopeResolver; } @@ -96,8 +88,9 @@ public function cleanIndex($dimensions) $this->connection->delete($tableName); // change the charset to utf8mb4 if ($tableName === self::DESIGN_CONFIG_GRID_FLAT) { - $getTableSchema = $this->mysqlAdapter->getCreateTable($tableName) ?? ''; - if (str_contains($getTableSchema, self::OLDCHARSET)) { + $getTableSchema = $this->connection->showTableStatus($tableName); + $collation = $getTableSchema['Collation'] ?? ''; + if (str_contains($collation, self::OLDCHARSET)) { $this->connection->query( sprintf( 'ALTER TABLE `%s` MODIFY COLUMN `theme_theme_id` varchar(255), diff --git a/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php b/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php index 59de1a93f1c23..753a05eda21bb 100644 --- a/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php +++ b/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php @@ -29,7 +29,6 @@ use PHPUnit\Framework\TestCase; use Magento\Theme\Model\Indexer\Design\IndexerHandler; use Magento\Framework\DB\Adapter\AdapterInterface; -use Magento\Framework\DB\Adapter\Pdo\Mysql; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) @@ -93,11 +92,6 @@ class ConfigTest extends TestCase */ private $collectionFactory; - /*** - * @var Mysql - */ - private $mysqlAdapter; - protected function setUp(): void { $this->indexerStructure = $this->getMockBuilder(IndexStructureInterface::class) @@ -138,9 +132,6 @@ protected function setUp(): void ->getMock(); $this->indexerFieldset = $this->getMockBuilder(FieldsetInterface::class) ->getMockForAbstractClass(); - $this->mysqlAdapter = $this->getMockBuilder(Mysql::class) - ->disableOriginalConstructor() - ->getMock(); } /** @@ -177,7 +168,6 @@ private function getDesignConfigIndexerModel(): Config $this->batch, $this->indexScopeResolver, $this->flatScopeResolver, - $this->mysqlAdapter, [ 'fieldsets' => [], 'indexer_id' => DesignConfig::DESIGN_CONFIG_GRID_INDEXER_ID From 4d28e1f13d23a4492f934b1b30db691e87111052 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 26 Jul 2024 20:32:56 +0530 Subject: [PATCH 132/460] Check configuration for Payments Pro in Unites States For Paymentspro Correction on Testcase --- ...nClearForPaypalPaymentsProActionGroup.xml} | 2 +- ...minConfigPaypalPaymentsProActionGroup.xml} | 4 ++-- ...> AdminConfigPaypalPaymentsProSection.xml} | 2 +- ...rtPaymentsProSolutionInPaymentPageTest.xml | 22 +++++++++---------- 4 files changed, 15 insertions(+), 15 deletions(-) rename app/code/Magento/Paypal/Test/Mftf/ActionGroup/{AdminClearForPaymentsProThroughCLICommandActionGroup.xml => AdminClearForPaypalPaymentsProActionGroup.xml} (93%) rename app/code/Magento/Paypal/Test/Mftf/ActionGroup/{AdminConfigurationForPaymentsProThroughCLIActionGroup.xml => AdminConfigPaypalPaymentsProActionGroup.xml} (89%) rename app/code/Magento/Paypal/Test/Mftf/Section/{AdminConfigPaymentsProPaypalCreditSection.xml => AdminConfigPaypalPaymentsProSection.xml} (97%) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProThroughCLICommandActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaypalPaymentsProActionGroup.xml similarity index 93% rename from app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProThroughCLICommandActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaypalPaymentsProActionGroup.xml index 247699951b415..a63db4e43e719 100755 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaymentsProThroughCLICommandActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaypalPaymentsProActionGroup.xml @@ -8,7 +8,7 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminClearForPaymentsProThroughCLICommandActionGroup"> + <actionGroup name="AdminClearForPaypalPaymentsProActionGroup"> <annotations> <description>Check No Other Paypal Payment Solution Exist and If Exist then Clear the Credentials</description> </annotations> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurationForPaymentsProThroughCLIActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaypalPaymentsProActionGroup.xml similarity index 89% rename from app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurationForPaymentsProThroughCLIActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaypalPaymentsProActionGroup.xml index f53a7ecbfec95..02aa5bac24694 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigurationForPaymentsProThroughCLIActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaypalPaymentsProActionGroup.xml @@ -8,9 +8,9 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminConfigurationForPaymentsProThroughCLIActionGroup"> + <actionGroup name="AdminConfigPaypalPaymentsProActionGroup"> <annotations> - <description>Configuring payments pro solution through CLI Command</description> + <description>Configure paypal payment pro solution</description> </annotations> <arguments> <argument name="credentials" defaultValue="_CREDS"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalPaymentsProSection.xml similarity index 97% rename from app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml rename to app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalPaymentsProSection.xml index 10b2e6c1d01b8..85c037786fa64 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsProPaypalCreditSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalPaymentsProSection.xml @@ -8,7 +8,7 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="AdminConfigPaymentsProPaypalCreditSection"> + <section name="AdminConfigPaypalPaymentsProSection"> <element name="otherPaypalLink" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> <element name="paypalPaymentGatewayLink" type="button" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_payment_gateways-head')]" parameterized="true" /> <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow" parameterized="true"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml index e3b008234b7a1..41c7b57f8f89d 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml @@ -12,7 +12,7 @@ <features value="PayPal"/> <stories value="Payment methods"/> <title value="Check configuration for Payments Pro in Unites States For Paymentspro"/> - <description value="Check payments pro option's enablement and disablement based on the configuration setting For Payments Pro in backend"/> + <description value="Check payments pro option's enablement based on the configuration setting For Payments Pro in backend"/> <severity value="MAJOR"/> <testCaseId value="AC-4790"/> <group value="3rd_party_integration"/> @@ -25,21 +25,21 @@ <requiredEntity createDataKey="simpleCategory"/> </createData> <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> + <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> + <actionGroup ref="AdminClearForPaypalPaymentsProActionGroup" stepKey="clearPaymentsProExistingData"/> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> </before> <after> <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> - <actionGroup ref="AdminClearForPaymentsProThroughCLICommandActionGroup" stepKey="clearPaymentsProData"/> + <actionGroup ref="AdminClearForPaypalPaymentsProActionGroup" stepKey="clearPaymentsProData"/> <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePayPalPaymentsPro"/> <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> </after> - <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> - <actionGroup ref="AdminClearForPaymentsProThroughCLICommandActionGroup" stepKey="clearPaymentsProExistingData"/> <!--Enable Payment Pro through CLI Command--> - <actionGroup ref="AdminConfigurationForPaymentsProThroughCLIActionGroup" stepKey="configurePaymentsPro"/> + <actionGroup ref="AdminConfigPaypalPaymentsProActionGroup" stepKey="configurePaymentsPro"/> <actionGroup ref="CliIndexerReindexActionGroup" stepKey="performReindex"> <argument name="indices" value=""/> </actionGroup> @@ -71,9 +71,9 @@ <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> <waitForPageLoad stepKey="waitForLoadingPaypalPaymentPage"/> <!-- Assert Paypal Payment Pro In Storefront Payment method Page--> - <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> - <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> - <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.creditCardPayflow}}" stepKey="assertCreditCardPayflowPro"/> + <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> + <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> + <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.creditCardPayflow}}" stepKey="assertCreditCardPayflowPro"/> <magentoCLI command="config:set payment/payflow_express_bml/active 0" stepKey="disablePayPalCredit"/> <magentoCLI command="config:set payment/payflowpro_cc_vault/active 1" stepKey="enablePayPalVault"/> <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> @@ -84,8 +84,8 @@ </actionGroup> <!-- Refresh page --> <reloadPage stepKey="refreshPage"/> - <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowEdition}}" stepKey="seePayflowEditionPayment"/> - <waitForElementNotVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.payFlowExpress}}" stepKey="dontSeePaypalCreditPayment"/> - <waitForElementVisible selector="{{AdminConfigPaymentsProPaypalCreditSection.creditCardPayflow}}" stepKey="seeCreditcardPayment"/> + <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowEdition}}" stepKey="seePayflowEditionPayment"/> + <waitForElementNotVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowExpress}}" stepKey="dontSeePaypalCreditPayment"/> + <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.creditCardPayflow}}" stepKey="seeCreditcardPayment"/> </test> </tests> From adaad596efc9a830b95489659de2c21cc1e871ae Mon Sep 17 00:00:00 2001 From: IOWEB TECHNOLOGIES <info@ioweb.gr> Date: Sun, 28 Jul 2024 15:29:34 +0300 Subject: [PATCH 133/460] add sourceMap generation for less files in developer mode --- .../Framework/Css/PreProcessor/Adapter/Less/Processor.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php index 8f40ab044c020..184a895adbd25 100644 --- a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php +++ b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php @@ -69,7 +69,8 @@ public function processContent(File $asset) $parser = new \Less_Parser( [ 'relativeUrls' => false, - 'compress' => $this->appState->getMode() !== State::MODE_DEVELOPER + 'compress' => $this->appState->getMode() !== State::MODE_DEVELOPER, + 'sourceMap' => $this->appState->getMode() === State::MODE_DEVELOPER ] ); From af193c60fcf3eed9320ccc8eb163fa5d0cdd9001 Mon Sep 17 00:00:00 2001 From: Antonio Pedicini <me@apedik.dev> Date: Tue, 30 Jul 2024 21:23:24 +0100 Subject: [PATCH 134/460] issue 37750: whitelisting *.google-analytics.com *.analytics.google.com --- .../Magento/GoogleGtag/etc/csp_whitelist.xml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml b/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml index 150d51eaec5b4..9a8e90b852a87 100644 --- a/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml +++ b/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml @@ -12,16 +12,16 @@ <values> <value id="google_ad_services_conversion" type="host">googleads.g.doubleclick.net</value> <value id="google_ad_services" type="host">www.googleadservices.com</value> - <value id="google_analytics" type="host">www.google-analytics.com</value> - <value id="google_analytics_4" type="host">analytics.google.com</value> + <value id="google_analytics" type="host">*.google-analytics.com</value> + <value id="google_analytics_4" type="host">*.analytics.google.com</value> <value id="google_tag_manager" type="host">www.googletagmanager.com</value> </values> </policy> <policy id="connect-src"> <values> - <value id="google_ad_services" type="host">www.googleadservices.com</value> - <value id="google_analytics" type="host">www.google-analytics.com</value> - <value id="google_analytics_4" type="host">analytics.google.com</value> + <value id="google_ad_services" type="host">www.googleadservices.com</value> + <value id="google_analytics" type="host">*.google-analytics.com</value> + <value id="google_analytics_4" type="host">*.analytics.google.com</value> <value id="google_tag_manager" type="host">www.googletagmanager.com</value> </values> </policy> @@ -32,12 +32,12 @@ </policy> <policy id="img-src"> <values> - <value id="google_ad_services_pixel" type="host">googleads.g.doubleclick.net</value> - <value id="google_ad_services_conversion" type="host">www.google.com</value> - <value id="google_ad_services_bid" type="host">bid.g.doubleclick.net</value> + <value id="google_ad_services_pixel" type="host">googleads.g.doubleclick.net</value> + <value id="google_ad_services_conversion" type="host">www.google.com</value> + <value id="google_ad_services_bid" type="host">bid.g.doubleclick.net</value> <value id="google_ad_services" type="host">www.googleadservices.com</value> - <value id="google_analytics" type="host">www.google-analytics.com</value> - <value id="google_analytics_4" type="host">analytics.google.com</value> + <value id="google_analytics" type="host">*.google-analytics.com</value> + <value id="google_analytics_4" type="host">*.analytics.google.com</value> <value id="google_tag_manager" type="host">www.googletagmanager.com</value> </values> </policy> From 7f819b721769f61a135bb3e2c1aa7b42095ab186 Mon Sep 17 00:00:00 2001 From: Thomas Klein <thomasklein876@gmail.com> Date: Fri, 2 Aug 2024 10:58:16 +0200 Subject: [PATCH 135/460] Fix Warning: Undefined array key "filters" --- .../Ui/Controller/Adminhtml/Bookmark/Save.php | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php index d668256847f59..2ff4be0f5ac9b 100644 --- a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php +++ b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php @@ -246,17 +246,28 @@ private function updateCurrentBookmarkConfig(array $data): void $bookmarkConfig = $bookmark->getConfig(); $existingConfig = $bookmarkConfig['views'][$bookmark->getIdentifier()]['data'] ?? null; $currentConfig = $data[self::CURRENT_IDENTIFIER] ?? null; - if ($existingConfig && $currentConfig) { - if ($existingConfig['filters'] === $currentConfig['filters'] - && $existingConfig['positions'] !== $currentConfig['positions'] - ) { - $bookmarkConfig['views'][$bookmark->getIdentifier()]['data'] = $data[self::CURRENT_IDENTIFIER]; - $bookmark->setConfig($this->serializer->serialize($bookmarkConfig)); - $this->bookmarkRepository->save($bookmark); - } + if ($existingConfig && $currentConfig && $this->isPositionChanged($existingConfig, $currentConfig)) { + $bookmarkConfig['views'][$bookmark->getIdentifier()]['data'] = $data[self::CURRENT_IDENTIFIER]; + $bookmark->setConfig($this->serializer->serialize($bookmarkConfig)); + $this->bookmarkRepository->save($bookmark); } break; } } } + + /** + * Check if the positions for identical filters has changed + */ + private function isPositionChanged(array $existingConfig, array $currentConfig): bool + { + foreach (['filters', 'positions'] as $key) { + if (!array_key_exists($key, $existingConfig) || !array_key_exists($key, $currentConfig)) { + return false; + } + } + + return $existingConfig['filters'] === $currentConfig['filters'] + && $existingConfig['positions'] !== $currentConfig['positions']; + } } From b5d083e4c24a0ce95bc86872df811ec2a7c44e40 Mon Sep 17 00:00:00 2001 From: sharuksyed <92149337+glo74186@users.noreply.github.com> Date: Tue, 6 Aug 2024 11:31:46 +0530 Subject: [PATCH 136/460] ACQE-6733 : Verify Terms and Conditions reverted back closing entity --- app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml index 60509ff98900a..c4fe1eb9667ca 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml @@ -68,6 +68,7 @@ <entity name="disableTermsAndConditions" type="term"> <data key="path">checkout/options/enable_agreements</data> <data key="value">0</data> + </entity> <entity name="termAndCondition" type="term"> <data key="name" unique="suffix">Test Condition</data> <data key="isActive">Enabled</data> From d66a958ce7988c5cee2b19af60c9910be4887a95 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Sat, 10 Aug 2024 21:53:08 +0530 Subject: [PATCH 137/460] ACQE-6571:Check config for payments pro in Unites States Update on Testcase --- ...sertPaypalCreditPaymentsProActionGroup.xml | 36 ++++++ .../AdminAssetForPayallInOneActionGroup.xml | 28 +++++ .../AdminClearPaymentsProActionGroup.xml | 31 +++++ .../PayPalPaymentsProConfigSection.xml | 8 ++ ...eckConfigPaymentsProInUnitedstatesTest.xml | 108 ++++++++++++++++++ 5 files changed, 211 insertions(+) create mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml mode change 100644 => 100755 app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml create mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml new file mode 100755 index 0000000000000..6b613ab58d569 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminAssertPaypalCreditPaymentsProActionGroup" extends="AdminConfigurePayPalPaymentsProActionGroup"> + <annotations> + <description>Configuration for Payments pro with Sample PayPal credentials and Assert Other Paypal Solution</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <remove keyForRemoval="expandOtherPaypalConfigButton"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection" before="waitForPayPalPaymentsProConfigureBtn"/> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" userInput="No" stepKey="seeEnableThisSolutionIsSetAsNo" after="enableTestMode"/> + <assertElementContainsAttribute stepKey="seeEnablePaypalCreditIsDisabled" after="seeEnableThisSolutionIsSetAsNo"> + <expectedResult selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" attribute="disabled" type="string"></expectedResult> + </assertElementContainsAttribute> + <assertElementContainsAttribute stepKey="seeEnableVaultIsDisabled" after="scrollToBottom"> + <expectedResult selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" attribute="disabled" type="string"></expectedResult> + </assertElementContainsAttribute> + <!-- Check that Paypal Credit and Vault is set to No and it is disabled --> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" userInput="No" stepKey="seePaypalCreditIsSetAsNo" after="seeEnablePaypalCreditIsDisabled"/> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" userInput="No" stepKey="seeValultIsSetAsNo" after="seeEnableVaultIsDisabled"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution(countryCode)}}" stepKey="assertGreenTickMarkForEnableThisSolutionDropdown" after="enableSolution"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledPaypalCredit(countryCode)}}" stepKey="assertGreenTickMarkForEnablePaypalCredit" after="assertGreenTickMarkForEnableThisSolutionDropdown"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.sortOrder(countryCode)}}" stepKey="assertSortOrder" after="assertGreenTickMarkForEnablePaypalCredit"/> + <selectOption selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" userInput="Yes" stepKey="setValultIsSetAsYes" before="waitForSaveButtonBecomeClickable"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault(countryCode)}}" stepKey="assertGreenTickMarkForEnableVaultDropdown" after="setValultIsSetAsYes"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml new file mode 100755 index 0000000000000..bc89a73310d3f --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminAssetForPayallInOneActionGroup"> + <annotations> + <description>Admin navigate to payment configuration page and assert Pay All In One Link and Other Payment Services</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab1(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> + <conditionalClick selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" dependentSelector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" visible="false" stepKey="clickPayPalPaymentsSection"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" stepKey="assertPayinAllLink"/> + <waitForElementVisible selector="{{AdminPayPalPayFlowLinkConfigSection.paymentGateway(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paymentsAdvanced(countryCode)}}" stepKey="assertPaymentAdvanced"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentsPro"/> + <waitForElementVisible selector="{{AdminPaypalStandardConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentStandard"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml new file mode 100755 index 0000000000000..f92f98d0aed8b --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminClearPaymentsProActionGroup"> + <annotations> + <description>Admin goes to payments pro configuration and clears provided Sample PayPal credentials</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> + <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="waitForPayPalPaymentsProConfigureBtn"/> + <click selector ="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalPaymentsProConfigureBtn"/> + <waitForPageLoad stepKey="waitForPaymethodConfigPageLoad"/> + <clearField selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="clearInputUsereField"/> + <clearField selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> + <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml old mode 100644 new mode 100755 index 4a1687bfc078e..6a0844ccd24a3 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml @@ -16,5 +16,13 @@ <element name="testMode" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_paypal_payflow_api_settings_sandbox_flag" parameterized="true"/> <element name="enableSolution" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow" parameterized="true"/> <element name="paymentsAdvanced" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced-head" parameterized="true"/> + <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow" parameterized="true"/> + <element name="enableVault" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_payflowpro_cc_vault_active" parameterized="true"/> + <element name="disabledEnableSolution" type="select" selector="//*[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow')]//label[@class='enabled']" parameterized="true"/> + <element name="disabledPaypalCredit" type="select" selector="//*[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow')]//label[@class='enabled']" parameterized="true"/> + <element name="disabledVault" type="select" selector="//*[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_payflowpro_cc_vault_active')]//label[@class='enabled']" parameterized="true"/> + <element name="closeButton" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head span[class='state-opened']" parameterized="true"/> + <element name="sortOrder" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_express_checkout_bml_sort_order" parameterized="true"/> + <element name="paypalAllInOnePaymentSolutions" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> </section> </sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml new file mode 100755 index 0000000000000..040996e707a44 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminCheckConfigPaymentsProInUnitedstatesTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Check config for payments pro in Unites States"/> + <description value="Check paypal payments pro payment option's enablement and disablement based on the configuration setting For Payments Pro in backend"/> + <severity value="MAJOR"/> + <testCaseId value="AC-4790"/> + </annotations> + <before> + <createData entity="Simple_US_Customer" stepKey="createCustomer"/> + <createData entity="SimpleProduct" stepKey="simpleProduct"/> + <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + </before> + <after> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> + <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePayPalPaymentsPro"/> + <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> + <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> + </after> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab1('us')}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab('us')}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> + <conditionalClick selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions('us')}}" dependentSelector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions('us')}}" visible="true" stepKey="clickPayPalPaymentsSection"/> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertPayLink"/> + <actionGroup ref="AdminAssetForPayallInOneActionGroup" stepKey="AssertPayAllInOneLink"/> + <!--Clear paypal details config related data--> + <actionGroup ref="AdminClearPaymentsProActionGroup" stepKey="clearExistingDataForPaymentsPro"/> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfig"/> + <actionGroup ref="AdminAssertPaypalCreditPaymentsProActionGroup" stepKey="enablePaypalPaymentsPro"/> + <!--Save Configuration--> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfigs"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="runIndexCronJobs"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!--Login to storefront as guest customer--> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + <waitForPageLoad stepKey="waitForProductPage"/> + <!--Add simple product--> + <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart"> + <argument name="product" value="$simpleProduct$"/> + </actionGroup> + <!--Go to cart page--> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> + <!--Open cart page and proceed to checkout--> + <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> + <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> + <!--Fill Shipping Address--> + <actionGroup ref="GuestCheckoutFillNewShippingAddressActionGroup" stepKey="fillShippingAddress"> + <argument name="customer" value="$$createCustomer$$" /> + <argument name="address" value="US_Address_TX"/> + </actionGroup> + <!-- Select shipping --> + <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectShippingMethodAsFlatRate"> + <argument name="shippingMethodName" value="Flat Rate"/> + </actionGroup> + <!-- Go to Order review --> + <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> + <waitForPageLoad stepKey="waitForLoadingPaypalPaymentPage"/> + <!-- Assert Payflow Edition, Paypal Pro and Paypal Credit Payment method --> + <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalExpressCheckoutPayflowEdition"/> + <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Credit')}}" stepKey="assertPaypalCreditPaymentMethod"/> + <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Pro)')}}" stepKey="assertPaypalPaymentsProPaymentMethod"/> + <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePaymentsPro"/> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPageAfterDisablingPayPalExpressCheckout"/> + <waitForPageLoad stepKey="waitForPaymentMethodPageToLoad"/> + <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="waitForClickPayPalConfigureBtnToAssertStatus"/> + <click selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="clickPayPalConfigureBtnToAssertStatus"/> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution('us')}}" stepKey="assertNoGreenTickMarkForEnableThisSolutionDropdown"/> + <assertElementContainsAttribute stepKey="seePaypalCreditIsDisabled"> + <expectedResult selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" attribute="disabled" type="string"></expectedResult> + </assertElementContainsAttribute> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" userInput="No" stepKey="seePaypalCreditIsSetAsNo"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.sortOrder('us')}}" stepKey="assertSortOrderFieldIsDisappeared"/> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault('us')}}" userInput="Yes" stepKey="seeValultIsSetAsNo"/> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfiguration"/> + <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey="goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsDisappeared"/> + <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalPaymentIsAbsent"/> + <!--Set Paypal Credit to No and assert the status--> + <magentoCLI command="config:set payment/paypal_payment_pro/active 1" stepKey="enablePaymentsPro"/> + <magentoCLI command="config:set payment/payflow_express_bml/active 0" stepKey="disablePayPalCreditPaymentMethod"/> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPageAfterEnablingPaypal"/> + <waitForPageLoad stepKey="waitForPaymentMethodPageToLoadAfterEnabling"/> + <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="waitForClickPayPalConfigureBtnToAssertStatusAfterEnabling"/> + <click selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="clickPayPalConfigureBtnToAssertStatusAfterEnabling"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution('us')}}" stepKey="assertGreenTickMarkForEnableThisSolutionDropdown"/> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" userInput="No" stepKey="seeEnablePaypalCreditIsSetAsNo"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault('us')}}" stepKey="assertGreenTickMarkForEnableVaultDropdown"/> + <!--Go to checkout page and assert paypal express checkout Payflow Edition and Credit Card option is present--> + <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey= "goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsPresent"/> + <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalExpressPayflowEdition"/> + <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Pro)')}}" stepKey="creditcardPaymentsPro"/> + </test> +</tests> From f671a3f577848f2be6c3a85a00f717f97ebac658 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Sat, 10 Aug 2024 21:59:25 +0530 Subject: [PATCH 138/460] ACQE-6571:Check config for payments pro in Unites States Update on Testcase --- ...inClearForPaypalPaymentsProActionGroup.xml | 21 ----- ...dminConfigPaypalPaymentsProActionGroup.xml | 27 ------ .../Paypal/Test/Mftf/Data/PaypalData.xml | 32 ++++++- .../AdminConfigPaypalPaymentsProSection.xml | 24 ----- ...rtPaymentsProSolutionInPaymentPageTest.xml | 91 ------------------- 5 files changed, 27 insertions(+), 168 deletions(-) delete mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaypalPaymentsProActionGroup.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaypalPaymentsProActionGroup.xml mode change 100644 => 100755 app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml delete mode 100755 app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalPaymentsProSection.xml delete mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaypalPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaypalPaymentsProActionGroup.xml deleted file mode 100755 index a63db4e43e719..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearForPaypalPaymentsProActionGroup.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminClearForPaypalPaymentsProActionGroup"> - <annotations> - <description>Check No Other Paypal Payment Solution Exist and If Exist then Clear the Credentials</description> - </annotations> - <magentoCLI command="config:set payment/payflowpro/partner {{PaypalPayflowProPartner.default}}" stepKey="clearPartner"/> - <magentoCLI command="config:set payment/payflowpro/vendor {{PaypalPayflowProVendor.default}}" stepKey="clearInputForVendor"/> - <magentoCLI command="config:set payment/payflowpro/user {{PaypalPayflowProUser.default}}" stepKey="clearInputForUser"/> - <magentoCLI command="config:set payment/payflowpro/pwd {{PaypalPayflowProPassword.default}}" stepKey="clearInputForPassword"/> - <magentoCLI command="config:set payment/payflowpro/sandbox_flag 0" stepKey="disableSandboxMode"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaypalPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaypalPaymentsProActionGroup.xml deleted file mode 100644 index 02aa5bac24694..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaypalPaymentsProActionGroup.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminConfigPaypalPaymentsProActionGroup"> - <annotations> - <description>Configure paypal payment pro solution</description> - </annotations> - <arguments> - <argument name="credentials" defaultValue="_CREDS"/> - </arguments> - <magentoCLI command="config:set payment/payflowpro/partner {{credentials.magento/payflow_pro_partner}}" stepKey="enterInputPartner"/> - <magentoCLI command="config:set payment/payflowpro/vendor {{credentials.magento/payflow_pro_vendor}}" stepKey="enterInputForVendor"/> - <magentoCLI command="config:set payment/payflowpro/user {{credentials.magento/payflow_pro_user}}" stepKey="enterInputForUser"/> - <magentoCLI command="config:set payment/payflowpro/pwd {{credentials.magento/payflow_pro_pwd}}" stepKey="enterInputForPassword"/> - <magentoCLI command="config:set payment/payflowpro/sandbox_flag 1" stepKey="enableSandboxMode"/> - <magentoCLI command="config:set payment/paypal_payment_pro/active 1" stepKey="enablePaymentsPro"/> - <magentoCLI command="config:set payment/payflow_express_bml/active 1" stepKey="enablePayPalCredit"/> - <magentoCLI command="config:set payment/payflowpro_cc_vault/active 1" stepKey="enablePayPalVault"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml old mode 100644 new mode 100755 index 49d5c9f0d8268..9e0507c6e8cf7 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -147,23 +147,18 @@ <requiredEntity type="use_proxy">UseProxy</requiredEntity> </entity> <entity name="PaypalPayflowProBusinessAccount" type="business_account"> - <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_business_account}}</data> </entity> <entity name="PaypalPayflowProPartner" type="partner"> - <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_partner}}</data> </entity> <entity name="PaypalPayflowProUser" type="user"> - <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_user}}</data> </entity> <entity name="PaypalPayflowProVendor" type="vendor"> - <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_vendor}}</data> </entity> <entity name="PaypalPayflowProPassword" type="pwd"> - <data key="default">""</data> <data key="value">{{_CREDS.magento/payflow_pro_pwd}}</data> </entity> <!-- default configuration used to restore Magento config --> @@ -201,6 +196,33 @@ <entity name="DisablePaypalPayflowProVault" type="payflowpro_cc_vault_active"> <data key="value">0</data> </entity> + <entity name="DefaultPaypalStandardConfig" type="paypal_payment_wps_express_config_state"> + <requiredEntity type="business_account">DefaultPaypalStandardBusinessAccount</requiredEntity> + <requiredEntity type="api_username">DefaultPaypalStandardUsername</requiredEntity> + <requiredEntity type="api_password">DefaultPaypalStandardPassword</requiredEntity> + <requiredEntity type="api_signature">DefaultPaypalStandardSignature</requiredEntity> + <requiredEntity type="sandbox_flag">SandboxMode</requiredEntity> + </entity> + <entity name="DefaultPaypalStandardBusinessAccount" type="business_account"> + <data key="path">paypal/general/business_account</data> + <data key="value">""</data> + </entity> + <entity name="DefaultPaypalStandardUsername" type="api_username"> + <data key="path">paypal/wpp/api_username</data> + <data key="value">""</data> + </entity> + <entity name="DefaultPaypalStandardPassword" type="api_password"> + <data key="path">paypal/wpp/api_password</data> + <data key="value">""</data> + </entity> + <entity name="DefaultPaypalStandardSignature" type="api_signature"> + <data key="path">paypal/wpp/api_signature</data> + <data key="value">""</data> + </entity> + <entity name="SandboxMode" type="sandbox_flag"> + <data key="path">paypal/wpp/sandbox_flag</data> + <data key="value">0</data> + </entity> <entity name="EnablePaypalPayStandard"> <data key="path">payment/wps_express/active</data> <data key="value">1</data> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalPaymentsProSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalPaymentsProSection.xml deleted file mode 100755 index 85c037786fa64..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalPaymentsProSection.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="AdminConfigPaypalPaymentsProSection"> - <element name="otherPaypalLink" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> - <element name="paypalPaymentGatewayLink" type="button" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_payment_gateways-head')]" parameterized="true" /> - <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow" parameterized="true"/> - <element name="enabledSolution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow')]//label[@class='enabled']" parameterized="true"/> - <element name="enabledPaypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow')]//label[@class='enabled']" parameterized="true"/> - <element name="paypalSolution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow')]//label[@class='disabled']" parameterized="true"/> - <element name="paypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow')]//label[@class='disabled']" parameterized="true"/> - <element name="payFlowEdition" type="button" selector="//span[contains(text(), 'PayPal Express Checkout Payflow Edition')]"/> - <element name="payFlowExpress" type="button" selector="//span[contains(text(), 'PayPal Credit (Payflow Express Bml)')]"/> - <element name="creditCardPayflow" type="button" selector="//span[contains(text(), 'Credit Card (Payflow Pro)')]"/> - <element name="sortOrder" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_express_checkout_bml_sort_order" parameterized="true"/> - </section> -</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml deleted file mode 100755 index 41c7b57f8f89d..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAssertPaymentsProSolutionInPaymentPageTest.xml +++ /dev/null @@ -1,91 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="StorefrontAssertPaymentsProSolutionInPaymentPageTest"> - <annotations> - <features value="PayPal"/> - <stories value="Payment methods"/> - <title value="Check configuration for Payments Pro in Unites States For Paymentspro"/> - <description value="Check payments pro option's enablement based on the configuration setting For Payments Pro in backend"/> - <severity value="MAJOR"/> - <testCaseId value="AC-4790"/> - <group value="3rd_party_integration"/> - <group value="pr_exclude"/> - </annotations> - <before> - <createData entity="Simple_US_Customer" stepKey="createCustomer"/> - <createData entity="SimpleSubCategory" stepKey="simpleCategory"/> - <createData entity="SimpleProduct" stepKey="simpleProduct"> - <requiredEntity createDataKey="simpleCategory"/> - </createData> - <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> - <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> - <actionGroup ref="AdminClearForPaypalPaymentsProActionGroup" stepKey="clearPaymentsProExistingData"/> - <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> - </before> - <after> - <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> - <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> - <actionGroup ref="AdminClearForPaypalPaymentsProActionGroup" stepKey="clearPaymentsProData"/> - <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePayPalPaymentsPro"/> - <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> - <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> - <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> - </after> - <!--Enable Payment Pro through CLI Command--> - <actionGroup ref="AdminConfigPaypalPaymentsProActionGroup" stepKey="configurePaymentsPro"/> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="performReindex"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheCleanActionGroup" stepKey="performCleanCache"> - <argument name="tags" value="config full_page"/> - </actionGroup> - <!--Login to storefront as guest customer--> - <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> - <waitForPageLoad stepKey="waitForProductPage"/> - <!--Add simple product--> - <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart"> - <argument name="product" value="$simpleProduct$"/> - </actionGroup> - <!--Go to cart page--> - <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> - <!--Open cart page and proceed to checkout--> - <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> - <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> - <!--Fill Shipping Address--> - <actionGroup ref="GuestCheckoutFillNewShippingAddressActionGroup" stepKey="fillShippingAddress"> - <argument name="customer" value="$$createCustomer$$" /> - <argument name="address" value="US_Address_TX"/> - </actionGroup> - <!-- Select shipping --> - <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectShippingMethodAsFlatRate"> - <argument name="shippingMethodName" value="Flat Rate"/> - </actionGroup> - <!-- Go to Order review --> - <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> - <waitForPageLoad stepKey="waitForLoadingPaypalPaymentPage"/> - <!-- Assert Paypal Payment Pro In Storefront Payment method Page--> - <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> - <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> - <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.creditCardPayflow}}" stepKey="assertCreditCardPayflowPro"/> - <magentoCLI command="config:set payment/payflow_express_bml/active 0" stepKey="disablePayPalCredit"/> - <magentoCLI command="config:set payment/payflowpro_cc_vault/active 1" stepKey="enablePayPalVault"/> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> - <argument name="tags" value="config full_page"/> - </actionGroup> - <!-- Refresh page --> - <reloadPage stepKey="refreshPage"/> - <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowEdition}}" stepKey="seePayflowEditionPayment"/> - <waitForElementNotVisible selector="{{AdminConfigPaypalPaymentsProSection.payFlowExpress}}" stepKey="dontSeePaypalCreditPayment"/> - <waitForElementVisible selector="{{AdminConfigPaypalPaymentsProSection.creditCardPayflow}}" stepKey="seeCreditcardPayment"/> - </test> -</tests> From fd80c67caf30e2d2cdbe432a62e2057d5db45244 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Sat, 10 Aug 2024 22:02:37 +0530 Subject: [PATCH 139/460] ACQE-6571:Check config for payments pro in Unites States Update on Testcase --- .../Paypal/Test/Mftf/Data/PaypalData.xml | 29 +------------------ 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index 9e0507c6e8cf7..c8ed5b582f635 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -7,7 +7,7 @@ --> <entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> + xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> <entity name="SamplePaypalConfig" type="paypal_config_state"> <requiredEntity type="business_account">SampleBusinessAccount</requiredEntity> <requiredEntity type="api_username">SampleApiUsername</requiredEntity> @@ -196,33 +196,6 @@ <entity name="DisablePaypalPayflowProVault" type="payflowpro_cc_vault_active"> <data key="value">0</data> </entity> - <entity name="DefaultPaypalStandardConfig" type="paypal_payment_wps_express_config_state"> - <requiredEntity type="business_account">DefaultPaypalStandardBusinessAccount</requiredEntity> - <requiredEntity type="api_username">DefaultPaypalStandardUsername</requiredEntity> - <requiredEntity type="api_password">DefaultPaypalStandardPassword</requiredEntity> - <requiredEntity type="api_signature">DefaultPaypalStandardSignature</requiredEntity> - <requiredEntity type="sandbox_flag">SandboxMode</requiredEntity> - </entity> - <entity name="DefaultPaypalStandardBusinessAccount" type="business_account"> - <data key="path">paypal/general/business_account</data> - <data key="value">""</data> - </entity> - <entity name="DefaultPaypalStandardUsername" type="api_username"> - <data key="path">paypal/wpp/api_username</data> - <data key="value">""</data> - </entity> - <entity name="DefaultPaypalStandardPassword" type="api_password"> - <data key="path">paypal/wpp/api_password</data> - <data key="value">""</data> - </entity> - <entity name="DefaultPaypalStandardSignature" type="api_signature"> - <data key="path">paypal/wpp/api_signature</data> - <data key="value">""</data> - </entity> - <entity name="SandboxMode" type="sandbox_flag"> - <data key="path">paypal/wpp/sandbox_flag</data> - <data key="value">0</data> - </entity> <entity name="EnablePaypalPayStandard"> <data key="path">payment/wps_express/active</data> <data key="value">1</data> From 2f043ecd71204920a93c5ed50a47a14dfaa87e4d Mon Sep 17 00:00:00 2001 From: Atul-glo35265 <glo35265@adobe.com> Date: Tue, 20 Aug 2024 19:03:17 +0530 Subject: [PATCH 140/460] AC-12692: Widget category tree is not rendered correctly --- .../catalog/category/widget/tree.phtml | 162 +++++++----------- 1 file changed, 62 insertions(+), 100 deletions(-) diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml index 7bc85087a7e02..598d016a47773 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml @@ -8,10 +8,11 @@ ?> <?php $_divId = 'tree' . $block->getId() ?> -<div id="<?= $block->escapeHtmlAttr($_divId) ?>" class="tree"></div> +<div id="<?= $escaper->escapeHtmlAttr($_divId) ?>" class="tree"></div> <?php $isUseMassAction = $block->getUseMassaction() ? 1 : 0; $isAnchorOnly = $block->getIsAnchorOnly() ? 1 : 0; + $scriptString = <<<script require(['jquery', 'jquery/jstree/jquery.jstree'], function($) { @@ -20,42 +21,27 @@ require(['jquery', 'jquery/jstree/jquery.jstree'], function($) { let useMassAction = {$isUseMassAction}; let isAnchorOnly = {$isAnchorOnly}; let checkedNodes = []; - - function addLastNodeProperty(nodes) { - return nodes.map(node => { - return node.children - ? { ...node, children: addLastNodeProperty(node.children) } - : { ...node, lastNode: true }; - }); - } + let anchorNodes = []; + let nonAnchorNodes = []; function actionBasedOnIsAnchorOnly() { - tree.jstree().get_json('#', { flat: true }).each((node, value) => { - const attrId = node.a_attr.id; - const rootNode = tree.jstree().get_node("#"); - const rootId = rootNode.children[0]; - - if (isAnchorOnly === 1 && node.id === rootId) { - tree.jstree(true).disable_node(node); - } else if (isAnchorOnly === 0 && node.id !== rootId) { - tree.jstree(true).disable_node(node); - } - }); + if(isAnchorOnly){ + tree.jstree(true).disable_node(nonAnchorNodes); + }else{ + tree.jstree(true).disable_node(anchorNodes); + } } - function handleLoadedTree(e, data) { + function handleLoadedNode(e, data) { const container = $(e.target).closest('div.chooser_container'); - checkedNodes = container.find('input[type="text"].entities').val().split(',').map(item => item.trim()); - - data.instance.get_json('#', { flat: true }).forEach(nodeId => { - const node = data.instance.get_node(nodeId); - - if (checkedNodes.includes(node.id)) { - tree.jstree(true).select_node(node.id); - } + if(container.find('input[type="text"].entities').val() !== ''){ + checkedNodes = container.find('input[type="text"].entities').val().split(',').map(item => item.trim()); + } + if (data.status) { + tree.jstree(true).select_node(checkedNodes); actionBasedOnIsAnchorOnly(); - }); + } } function handleChange(e, data) { @@ -65,18 +51,16 @@ require(['jquery', 'jquery/jstree/jquery.jstree'], function($) { if (useMassAction) { const clickedNodeID = data.node.id; - const currentCheckedNodes = data.instance.get_checked(); if (data.action === 'select_node' && !checkedNodes.includes(clickedNodeID)) { - checkedNodes = currentCheckedNodes; + checkedNodes.push(clickedNodeID); } else if (data.action === 'deselect_node') { - checkedNodes = currentCheckedNodes.filter(nodeID => nodeID !== clickedNodeID); + checkedNodes = checkedNodes.filter(nodeID => nodeID !== clickedNodeID); } checkedNodes.sort((a, b) => a - b); - const container = $(e.target).closest('div.chooser_container'); - container.find('input[type="text"].entities').val(checkedNodes.join(', ')); + container.find('input[type="text"].entities').val(checkedNodes.join(',')); } else { node = data.node; node.attributes = node.original; @@ -85,77 +69,56 @@ require(['jquery', 'jquery/jstree/jquery.jstree'], function($) { } } - function getCheckedNodeIds(tree, node) { - if (node.children_d && node.children_d.length > 0) { - const selectChildrenNodes = node.children_d.filter(item => checkedNodes.includes(item)); - - if (selectChildrenNodes.length > 0) { - tree.jstree(true).select_node(selectChildrenNodes); + function updateChildrenKey(treeJson) { + treeJson.forEach(node => { + if (Array.isArray(node.children) && node.children.length === 0) { + node.children = true; + } else if (Array.isArray(node.children)) { + updateChildrenKey(node.children); } - } - } - function addLastNodeFlag(treeData) { - if (treeData.children) { - treeData.children.forEach(child => addLastNodeFlag(child)); - } else { - treeData.lastNode = true; - } - } - - function handleSuccessResponse(response, childNode, data) { - if (response.length > 0) { - response.forEach(newNode => { - addLastNodeFlag(newNode); - - // Create the new node and execute node callback - data.instance.create_node(childNode, newNode, 'last', node => { - if (useMassAction) { - if (checkedNodes.includes(node.id)) { - tree.jstree(true).select_node(node.id); - } - getCheckedNodeIds(tree, node); - actionBasedOnIsAnchorOnly(); - } - }); - }); - } - } - - function handleOpenNode(e, data) { - let parentNode = data.node; - - if (parentNode.children.length > 0) { - let childNode = data.instance.get_node(parentNode.children, false); - - // Check if the child node has no children (is not yet loaded) - if (childNode.children && childNode.children.length === 0 - && childNode.original && !childNode.original.lastNode) { - $.ajax({ - url: '{$block->escapeJs($block->escapeUrl($block->getLoadTreeUrl()))}', - data: { - id: childNode.original.id, - store: childNode.original.store, - form_key: FORM_KEY - }, - dataType: 'json', - success: function (response) { - handleSuccessResponse(response, childNode, data); - }, - error: function (jqXHR, status, error) { - console.log(status + ': ' + error + 'Response text:' + jqXHR.responseText); - } - }); + if(node.is_anchor === 1){ + anchorNodes.push(node.id); + }else{ + nonAnchorNodes.push(node.id); } - } + }); + return treeJson; } var jstreeConfig = { core: { - data: addLastNodeProperty({$block->getTreeJson()}), + data: function (obj, callback) { + if(obj.id != '#' && obj.children.length === 0){ + let data = { + id: obj.id, + store: obj.original.store, + node: obj.id, + form_key: FORM_KEY + }; + + $.ajax({ + url: '{$block->escapeJs($block->getLoadTreeUrl())}', + type: "POST", + data: data, + dataType: 'json', + success: function (response) { + response = updateChildrenKey(response); + callback.call(this, response); + }, + error: function (jqXHR, status, error) { + console.log(status + ': ' + error); + } + }); + + }else{ + let defaultTree = updateChildrenKey({$block->getTreeJson()}); + callback.call(this, defaultTree); + } + }, check_callback: true }, - plugins: [] + plugins: ['dnd'] }; if (useMassAction) { @@ -168,18 +131,17 @@ require(['jquery', 'jquery/jstree/jquery.jstree'], function($) { tree.jstree(jstreeConfig); if (useMassAction) { - tree.on('loaded.jstree', (e, data) => handleLoadedTree(e, data)); + tree.on('load_node.jstree', (e, data) => handleLoadedNode(e, data)); } tree.on('changed.jstree', (e, data) => handleChange(e, data)); - tree.on('open_node.jstree', (e, data) => handleOpenNode(e, data)); }); script; ?> <?= /* @noEscape */ $secureRenderer->renderStyleAsTag( 'overflow-x: auto;', - '#tree' . $block->escapeJs($block->getId()) + '#tree' . $escaper->escapeJs($block->getId()) ); ?> <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false); ?> From a533218712c795ee01e865656568070ccfc240e4 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Wed, 21 Aug 2024 11:32:48 +0530 Subject: [PATCH 141/460] ACQE-6571:Check config for payments pro in Unites States Updated on Testcases --- ...tOtherPaypalPaymentSolutionActionGroup.xml | 25 +++++++++++++++++++ .../AdminAssetForPayallInOneActionGroup.xml | 14 +++-------- .../AdminClearPaymentsProActionGroup.xml | 12 +++++++++ ...eckConfigPaymentsProInUnitedstatesTest.xml | 19 +++++++++++--- 4 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml new file mode 100644 index 0000000000000..1ea67d2f37a59 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminAssertOtherPaypalPaymentSolutionActionGroup"> + <annotations> + <description>Admin navigate to payment configuration page and assert Other Paypal Payment Solution</description> + </annotations> + <arguments> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab1(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> + <conditionalClick selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" dependentSelector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" visible="false" stepKey="clickPayPalPaymentsSection"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" stepKey="assertPayinAllLink"/> + <waitForElementVisible selector="{{AdminPayPalPayFlowLinkConfigSection.paymentGateway(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml index bc89a73310d3f..ef1f8c1491be8 100755 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml @@ -8,21 +8,15 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminAssetForPayallInOneActionGroup"> + <actionGroup name="AdminAssetForPayallInOneActionGroup" extends="AdminAssertOtherPaypalPaymentSolutionActionGroup"> <annotations> <description>Admin navigate to payment configuration page and assert Pay All In One Link and Other Payment Services</description> </annotations> <arguments> <argument name="countryCode" type="string" defaultValue="us"/> </arguments> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab1(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> - <conditionalClick selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" dependentSelector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" visible="false" stepKey="clickPayPalPaymentsSection"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" stepKey="assertPayinAllLink"/> - <waitForElementVisible selector="{{AdminPayPalPayFlowLinkConfigSection.paymentGateway(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paymentsAdvanced(countryCode)}}" stepKey="assertPaymentAdvanced"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentsPro"/> - <waitForElementVisible selector="{{AdminPaypalStandardConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentStandard"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paymentsAdvanced(countryCode)}}" stepKey="assertPaymentAdvanced" after="assertPayinAllLink"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentsPro" after="assertPaymentAdvanced"/> + <waitForElementVisible selector="{{AdminPaypalStandardConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentStandard" after="assertPaymentsPro"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml index f92f98d0aed8b..f357b67de7e3d 100755 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml @@ -27,5 +27,17 @@ <clearField selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="clearInputUsereField"/> <clearField selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> + <assertElementContainsAttribute stepKey="seeEnablePaymentsProSolutionIsDisabled"> + <expectedResult selector="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" attribute="disabled" type="string"></expectedResult> + </assertElementContainsAttribute> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" userInput="No" stepKey="seeEnableThisSolutionIsSetAsNo"/> + <assertElementContainsAttribute stepKey="seeEnablePaypalCreditIsDisabled"> + <expectedResult selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" attribute="disabled" type="string"></expectedResult> + </assertElementContainsAttribute> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" userInput="No" stepKey="seePaypalCreditIsSetAsNo" after="seeEnablePaypalCreditIsDisabled"/> + <assertElementContainsAttribute stepKey="seeEnableVaultIsDisabled"> + <expectedResult selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" attribute="disabled" type="string"></expectedResult> + </assertElementContainsAttribute> + <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" userInput="No" stepKey="seeValultIsSetAsNo" after="seeEnableVaultIsDisabled"/> </actionGroup> </actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml index 040996e707a44..bb107568ba5be 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml @@ -19,6 +19,16 @@ <before> <createData entity="Simple_US_Customer" stepKey="createCustomer"/> <createData entity="SimpleProduct" stepKey="simpleProduct"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="runIndexCronJobs1"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache1"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!-- Verify Product On Storefront Page --> + <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="goToProductOnStorefront"> + <argument name="product" value="$$simpleProduct$$"/> + </actionGroup> <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> </before> @@ -31,9 +41,11 @@ </after> <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <!--Assert Section Available in Other Paypal Payment Solution Link--> <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab1('us')}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab('us')}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> <conditionalClick selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions('us')}}" dependentSelector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions('us')}}" visible="true" stepKey="clickPayPalPaymentsSection"/> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertPayLink"/> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertPaymentsProConfigBtn"/> + <actionGroup ref="AdminAssertOtherPaypalPaymentSolutionActionGroup" stepKey="AssertOtherPaypalPaymentSolutionLink"/> <actionGroup ref="AdminAssetForPayallInOneActionGroup" stepKey="AssertPayAllInOneLink"/> <!--Clear paypal details config related data--> <actionGroup ref="AdminClearPaymentsProActionGroup" stepKey="clearExistingDataForPaymentsPro"/> @@ -47,6 +59,7 @@ <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> <argument name="tags" value="config full_page"/> </actionGroup> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigureBtnNotVisible"/> <!--Login to storefront as guest customer--> <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> <waitForPageLoad stepKey="waitForProductPage"/> @@ -54,8 +67,6 @@ <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart"> <argument name="product" value="$simpleProduct$"/> </actionGroup> - <!--Go to cart page--> - <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> <!--Open cart page and proceed to checkout--> <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> @@ -88,6 +99,7 @@ <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.sortOrder('us')}}" stepKey="assertSortOrderFieldIsDisappeared"/> <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault('us')}}" userInput="Yes" stepKey="seeValultIsSetAsNo"/> <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfiguration"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="assertConfigureVisible"/> <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey="goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsDisappeared"/> <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalPaymentIsAbsent"/> <!--Set Paypal Credit to No and assert the status--> @@ -95,6 +107,7 @@ <magentoCLI command="config:set payment/payflow_express_bml/active 0" stepKey="disablePayPalCreditPaymentMethod"/> <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPageAfterEnablingPaypal"/> <waitForPageLoad stepKey="waitForPaymentMethodPageToLoadAfterEnabling"/> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigeBtnNotVisible"/> <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="waitForClickPayPalConfigureBtnToAssertStatusAfterEnabling"/> <click selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="clickPayPalConfigureBtnToAssertStatusAfterEnabling"/> <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution('us')}}" stepKey="assertGreenTickMarkForEnableThisSolutionDropdown"/> From 14981e3063b79b8e15ec7f825bc41c8f04a4ae8f Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Wed, 21 Aug 2024 21:31:13 +0530 Subject: [PATCH 142/460] ACQE-6571:Check config for payments pro in Unites States Updated on Testcases --- .../Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml index bb107568ba5be..66adc84fb699f 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml @@ -96,12 +96,16 @@ <expectedResult selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" attribute="disabled" type="string"></expectedResult> </assertElementContainsAttribute> <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" userInput="No" stepKey="seePaypalCreditIsSetAsNo"/> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.disabledPaypalCredit('us')}}" stepKey="assertGreenTickMarkPresentForPaypalCreditDropdown"/> <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.sortOrder('us')}}" stepKey="assertSortOrderFieldIsDisappeared"/> <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault('us')}}" userInput="Yes" stepKey="seeValultIsSetAsNo"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault('us')}}" stepKey="assertGreenTickMarkPresentForEnableVaultDropdown"/> <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfiguration"/> <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="assertConfigureVisible"/> <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey="goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsDisappeared"/> <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalPaymentIsAbsent"/> + <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Credit')}}" stepKey="assertPaypalCreditPaymentMethodIsAbsent"/> + <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Pro)')}}" stepKey="assertPaypalPaymentsProPaymentMethodIsAbsent"/> <!--Set Paypal Credit to No and assert the status--> <magentoCLI command="config:set payment/paypal_payment_pro/active 1" stepKey="enablePaymentsPro"/> <magentoCLI command="config:set payment/payflow_express_bml/active 0" stepKey="disablePayPalCreditPaymentMethod"/> @@ -112,7 +116,9 @@ <click selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="clickPayPalConfigureBtnToAssertStatusAfterEnabling"/> <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution('us')}}" stepKey="assertGreenTickMarkForEnableThisSolutionDropdown"/> <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" userInput="No" stepKey="seeEnablePaypalCreditIsSetAsNo"/> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.disabledPaypalCredit('us')}}" stepKey="assertGreenTickMarkAbsentForPaypalCreditDropdown"/> <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault('us')}}" stepKey="assertGreenTickMarkForEnableVaultDropdown"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigBtnNotToBeVisible"/> <!--Go to checkout page and assert paypal express checkout Payflow Edition and Credit Card option is present--> <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey= "goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsPresent"/> <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalExpressPayflowEdition"/> From f123f8a077ebbe6f28fa9d53cf240fb65de0b0f2 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Mon, 26 Aug 2024 21:53:23 +0530 Subject: [PATCH 143/460] ACQE-6571:Check config for payments pro in Unites States Updated with Testcases --- .../Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml index 66adc84fb699f..3ac027e3d3141 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml @@ -59,7 +59,7 @@ <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> <argument name="tags" value="config full_page"/> </actionGroup> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigureBtnNotVisible"/> + <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigureBtnIsDisabled"/> <!--Login to storefront as guest customer--> <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> <waitForPageLoad stepKey="waitForProductPage"/> @@ -118,7 +118,7 @@ <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" userInput="No" stepKey="seeEnablePaypalCreditIsSetAsNo"/> <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.disabledPaypalCredit('us')}}" stepKey="assertGreenTickMarkAbsentForPaypalCreditDropdown"/> <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault('us')}}" stepKey="assertGreenTickMarkForEnableVaultDropdown"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigBtnNotToBeVisible"/> + <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigBtnIsDisabled"/> <!--Go to checkout page and assert paypal express checkout Payflow Edition and Credit Card option is present--> <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey= "goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsPresent"/> <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalExpressPayflowEdition"/> From 5dd6ccf9e622d9e374a48032d2f1467706daef3a Mon Sep 17 00:00:00 2001 From: lakshmana49 <glo28218@adobe.com> Date: Thu, 29 Aug 2024 01:56:51 +0530 Subject: [PATCH 144/460] ACP2E-3276: Order reports showing the wrong currency symbol --- .../Reports/Block/Adminhtml/Sales/Sales/Grid.php | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php index 25a4aa1b88ca4..c4f2bc6ef5674 100644 --- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php +++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php @@ -7,7 +7,6 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Sales; use Magento\Framework\DataObject; -use Magento\Reports\Block\Adminhtml\Grid\Column\Renderer\Currency; use Magento\Framework\App\ObjectManager; use Magento\Sales\Model\Order\ConfigFactory; use Magento\Sales\Model\Order; @@ -156,7 +155,6 @@ protected function _prepareColumns() 'index' => 'total_income_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'rate' => $rate, 'header_css_class' => 'col-sales-total', 'column_css_class' => 'col-sales-total' @@ -172,7 +170,6 @@ protected function _prepareColumns() 'index' => 'total_revenue_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'visibility_filter' => ['show_actual_columns'], 'rate' => $rate, 'header_css_class' => 'col-revenue', @@ -189,7 +186,6 @@ protected function _prepareColumns() 'index' => 'total_profit_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'visibility_filter' => ['show_actual_columns'], 'rate' => $rate, 'header_css_class' => 'col-profit', @@ -206,7 +202,6 @@ protected function _prepareColumns() 'index' => 'total_invoiced_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'rate' => $rate, 'header_css_class' => 'col-invoiced', 'column_css_class' => 'col-invoiced' @@ -222,7 +217,6 @@ protected function _prepareColumns() 'index' => 'total_paid_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'visibility_filter' => ['show_actual_columns'], 'rate' => $rate, 'header_css_class' => 'col-paid', @@ -239,7 +233,6 @@ protected function _prepareColumns() 'index' => 'total_refunded_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'rate' => $rate, 'header_css_class' => 'col-refunded', 'column_css_class' => 'col-refunded' @@ -255,7 +248,6 @@ protected function _prepareColumns() 'index' => 'total_tax_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'rate' => $rate, 'header_css_class' => 'col-sales-tax', 'column_css_class' => 'col-sales-tax' @@ -271,7 +263,6 @@ protected function _prepareColumns() 'index' => 'total_tax_amount_actual', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'visibility_filter' => ['show_actual_columns'], 'rate' => $rate, 'header_css_class' => 'col-tax', @@ -288,7 +279,6 @@ protected function _prepareColumns() 'index' => 'total_shipping_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'rate' => $rate, 'header_css_class' => 'col-sales-shipping', 'column_css_class' => 'col-sales-shipping' @@ -304,7 +294,6 @@ protected function _prepareColumns() 'index' => 'total_shipping_amount_actual', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'visibility_filter' => ['show_actual_columns'], 'rate' => $rate, 'header_css_class' => 'col-shipping', @@ -321,7 +310,6 @@ protected function _prepareColumns() 'index' => 'total_discount_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'rate' => $rate, 'header_css_class' => 'col-sales-discount', 'column_css_class' => 'col-sales-discount' @@ -337,7 +325,6 @@ protected function _prepareColumns() 'index' => 'total_discount_amount_actual', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'visibility_filter' => ['show_actual_columns'], 'rate' => $rate, 'header_css_class' => 'col-discount', @@ -354,7 +341,6 @@ protected function _prepareColumns() 'index' => 'total_canceled_amount', 'total' => 'sum', 'sortable' => false, - 'renderer' => Currency::class, 'rate' => $rate, 'header_css_class' => 'col-canceled', 'column_css_class' => 'col-canceled' From b0dac64ca25df2c9671864802d45b82b2f021460 Mon Sep 17 00:00:00 2001 From: Arularasan <glo02433@adobe.com> Date: Thu, 29 Aug 2024 15:08:13 +0530 Subject: [PATCH 145/460] ACP2E-3255: [GRAPHQL] model value should be specified when getting customerCart - Fixed the issue. --- .../Magento/Quote/Model/QuoteManagement.php | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Quote/Model/QuoteManagement.php b/app/code/Magento/Quote/Model/QuoteManagement.php index 58c3e5283ef7b..08f71271d6104 100644 --- a/app/code/Magento/Quote/Model/QuoteManagement.php +++ b/app/code/Magento/Quote/Model/QuoteManagement.php @@ -43,6 +43,7 @@ use Magento\Sales\Api\Data\OrderInterfaceFactory as OrderFactory; use Magento\Sales\Api\OrderManagementInterface as OrderManagement; use Magento\Store\Model\StoreManagerInterface; +use Magento\Customer\Model\AddressRegistry; /** * Class for managing quote @@ -183,6 +184,11 @@ class QuoteManagement implements CartManagementInterface, ResetAfterRequestInter */ private $cartMutex; + /** + * @var AddressRegistry + */ + private $addressRegistry; + /** * @param EventManager $eventManager * @param SubmitQuoteValidator $submitQuoteValidator @@ -210,6 +216,7 @@ class QuoteManagement implements CartManagementInterface, ResetAfterRequestInter * @param RemoteAddress|null $remoteAddress * @param LockManagerInterface $lockManager * @param CartMutexInterface|null $cartMutex + * @param AddressRegistry|null $addressRegistry * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ @@ -239,7 +246,8 @@ public function __construct( RequestInterface $request = null, RemoteAddress $remoteAddress = null, LockManagerInterface $lockManager = null, - ?CartMutexInterface $cartMutex = null + ?CartMutexInterface $cartMutex = null, + ?AddressRegistry $addressRegistry = null ) { $this->eventManager = $eventManager; $this->submitQuoteValidator = $submitQuoteValidator; @@ -271,6 +279,8 @@ public function __construct( ->get(RemoteAddress::class); $this->cartMutex = $cartMutex ?? ObjectManager::getInstance()->get(CartMutexInterface::class); + $this->addressRegistry = $addressRegistry + ?? ObjectManager::getInstance()->get(AddressRegistry::class); } /** @@ -696,7 +706,9 @@ protected function _prepareCustomerQuote($quote) } //save here new customer address $shippingAddress->setCustomerId($quote->getCustomerId()); - $this->addressRepository->save($shippingAddress); + if ($this->validateAddress((int) $shippingAddress->getId()) === true) { + $this->addressRepository->save($shippingAddress); + } $quote->addCustomerAddress($shippingAddress); $shipping->setCustomerAddressData($shippingAddress); $this->addressesToSync[] = $shippingAddress->getId(); @@ -728,7 +740,9 @@ protected function _prepareCustomerQuote($quote) $billingAddress->setIsDefaultBilling(true); } $billingAddress->setCustomerId($quote->getCustomerId()); - $this->addressRepository->save($billingAddress); + if ($this->validateAddress((int) $billingAddress->getId()) === true) { + $this->addressRepository->save($billingAddress); + } $quote->addCustomerAddress($billingAddress); $billing->setCustomerAddressData($billingAddress); $this->addressesToSync[] = $billingAddress->getId(); @@ -791,4 +805,17 @@ public function _resetState(): void { $this->addressesToSync = []; } + + /** + * Validate address + * + * @param int|null $addressId + * @return array|bool + * @throws NoSuchEntityException + */ + private function validateAddress(?int $addressId): bool|array + { + $addressModel = $this->addressRegistry->retrieve($addressId); + return $addressModel->validate(); + } } From b8a89a4cd9c5d7fdb92726a5069e04c031488548 Mon Sep 17 00:00:00 2001 From: Arularasan <glo02433@adobe.com> Date: Mon, 2 Sep 2024 17:24:11 +0530 Subject: [PATCH 146/460] ACP2E-3255: [GRAPHQL] model value should be specified when getting customerCart - Fixed the issue. --- .../Magento/Quote/Model/QuoteManagement.php | 33 +------ ...reateEmptyCartWithoutCountryValidation.php | 88 +++++++++++++++++++ .../Magento/QuoteGraphQl/etc/graphql/di.xml | 4 + 3 files changed, 95 insertions(+), 30 deletions(-) create mode 100644 app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php diff --git a/app/code/Magento/Quote/Model/QuoteManagement.php b/app/code/Magento/Quote/Model/QuoteManagement.php index 08f71271d6104..58c3e5283ef7b 100644 --- a/app/code/Magento/Quote/Model/QuoteManagement.php +++ b/app/code/Magento/Quote/Model/QuoteManagement.php @@ -43,7 +43,6 @@ use Magento\Sales\Api\Data\OrderInterfaceFactory as OrderFactory; use Magento\Sales\Api\OrderManagementInterface as OrderManagement; use Magento\Store\Model\StoreManagerInterface; -use Magento\Customer\Model\AddressRegistry; /** * Class for managing quote @@ -184,11 +183,6 @@ class QuoteManagement implements CartManagementInterface, ResetAfterRequestInter */ private $cartMutex; - /** - * @var AddressRegistry - */ - private $addressRegistry; - /** * @param EventManager $eventManager * @param SubmitQuoteValidator $submitQuoteValidator @@ -216,7 +210,6 @@ class QuoteManagement implements CartManagementInterface, ResetAfterRequestInter * @param RemoteAddress|null $remoteAddress * @param LockManagerInterface $lockManager * @param CartMutexInterface|null $cartMutex - * @param AddressRegistry|null $addressRegistry * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ @@ -246,8 +239,7 @@ public function __construct( RequestInterface $request = null, RemoteAddress $remoteAddress = null, LockManagerInterface $lockManager = null, - ?CartMutexInterface $cartMutex = null, - ?AddressRegistry $addressRegistry = null + ?CartMutexInterface $cartMutex = null ) { $this->eventManager = $eventManager; $this->submitQuoteValidator = $submitQuoteValidator; @@ -279,8 +271,6 @@ public function __construct( ->get(RemoteAddress::class); $this->cartMutex = $cartMutex ?? ObjectManager::getInstance()->get(CartMutexInterface::class); - $this->addressRegistry = $addressRegistry - ?? ObjectManager::getInstance()->get(AddressRegistry::class); } /** @@ -706,9 +696,7 @@ protected function _prepareCustomerQuote($quote) } //save here new customer address $shippingAddress->setCustomerId($quote->getCustomerId()); - if ($this->validateAddress((int) $shippingAddress->getId()) === true) { - $this->addressRepository->save($shippingAddress); - } + $this->addressRepository->save($shippingAddress); $quote->addCustomerAddress($shippingAddress); $shipping->setCustomerAddressData($shippingAddress); $this->addressesToSync[] = $shippingAddress->getId(); @@ -740,9 +728,7 @@ protected function _prepareCustomerQuote($quote) $billingAddress->setIsDefaultBilling(true); } $billingAddress->setCustomerId($quote->getCustomerId()); - if ($this->validateAddress((int) $billingAddress->getId()) === true) { - $this->addressRepository->save($billingAddress); - } + $this->addressRepository->save($billingAddress); $quote->addCustomerAddress($billingAddress); $billing->setCustomerAddressData($billingAddress); $this->addressesToSync[] = $billingAddress->getId(); @@ -805,17 +791,4 @@ public function _resetState(): void { $this->addressesToSync = []; } - - /** - * Validate address - * - * @param int|null $addressId - * @return array|bool - * @throws NoSuchEntityException - */ - private function validateAddress(?int $addressId): bool|array - { - $addressModel = $this->addressRegistry->retrieve($addressId); - return $addressModel->validate(); - } } diff --git a/app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php b/app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php new file mode 100644 index 0000000000000..9221644825f79 --- /dev/null +++ b/app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php @@ -0,0 +1,88 @@ +<?php +/** + * Copyright 2024 Adobe + * All Rights Reserved. + */ +declare(strict_types=1); + +namespace Magento\QuoteGraphQl\Plugin\Model; + +use Magento\Framework\Exception\CouldNotSaveException; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Quote\Model\Quote; +use Magento\Quote\Model\QuoteFactory; +use Magento\Store\Model\StoreManagerInterface; +use Magento\Quote\Api\CartRepositoryInterface; +use Magento\Customer\Api\CustomerRepositoryInterface; +use Closure; +use Exception; +use Magento\Quote\Model\QuoteManagement; + +class CreateEmptyCartWithoutCountryValidation +{ + /** + * @param StoreManagerInterface $storeManager + * @param CartRepositoryInterface $quoteRepository + * @param CustomerRepositoryInterface $customerRepository + * @param QuoteFactory $quoteFactory + */ + public function __construct( + private readonly StoreManagerInterface $storeManager, + private readonly CartRepositoryInterface $quoteRepository, + private readonly CustomerRepositoryInterface $customerRepository, + private readonly QuoteFactory $quoteFactory + ) {} + + /** + * Create empty cart for customer without country validation + * + * @param QuoteManagement $subject + * @param Closure $proceed + * @param int $customerId + * @return bool|int + * @throws CouldNotSaveException + * @throws NoSuchEntityException + * @throws LocalizedException + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function aroundCreateEmptyCartForCustomer( + QuoteManagement $subject, + Closure $proceed, + int $customerId + ): bool|int + { + $storeId = (int) $this->storeManager->getStore()->getStoreId(); + $quote = $this->createCustomerCart($customerId,$storeId); + + try { + $this->quoteRepository->save($quote); + } catch (Exception $e) { + throw new CouldNotSaveException(__("The quote can't be created.")); + } + return (int)$quote->getId(); + } + + /** + * Creates a cart for the currently logged-in customer. + * + * @param int $customerId + * @param int $storeId + * @return Quote Cart object. + * @throws NoSuchEntityException + * @throws LocalizedException + */ + private function createCustomerCart(int $customerId, int $storeId): Quote + { + try { + $quote = $this->quoteRepository->getActiveForCustomer($customerId); + } catch (NoSuchEntityException $e) { + $customer = $this->customerRepository->getById($customerId); + $quote = $this->quoteFactory->create(); + $quote->setStoreId($storeId); + $quote->setCustomer($customer); + $quote->setCustomerIsGuest(0); + } + return $quote; + } +} diff --git a/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml b/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml index b203f9df08d4e..83d4b714e64a1 100644 --- a/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml @@ -79,4 +79,8 @@ <plugin name="merge_guest_orders_with_customer_after_place" type="Magento\QuoteGraphQl\Plugin\Model\MergeGuestOrder" /> </type> + <type name="Magento\Quote\Model\QuoteManagement"> + <plugin name="create_empty_cart_without_country_validation" + type="Magento\QuoteGraphQl\Plugin\Model\CreateEmptyCartWithoutCountryValidation" /> + </type> </config> From b13c5f03e80c522688a15ed92ae2b7eacabcd916 Mon Sep 17 00:00:00 2001 From: Arularasan <glo02433@adobe.com> Date: Tue, 3 Sep 2024 10:43:00 +0530 Subject: [PATCH 147/460] ACP2E-3255: [GRAPHQL] model value should be specified when getting customerCart - Fixed the static test failure. --- ...reateEmptyCartWithoutCountryValidation.php | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php b/app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php index 9221644825f79..133996869aec8 100644 --- a/app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php +++ b/app/code/Magento/QuoteGraphQl/Plugin/Model/CreateEmptyCartWithoutCountryValidation.php @@ -32,7 +32,8 @@ public function __construct( private readonly CartRepositoryInterface $quoteRepository, private readonly CustomerRepositoryInterface $customerRepository, private readonly QuoteFactory $quoteFactory - ) {} + ) { + } /** * Create empty cart for customer without country validation @@ -50,10 +51,9 @@ public function aroundCreateEmptyCartForCustomer( QuoteManagement $subject, Closure $proceed, int $customerId - ): bool|int - { + ): bool|int { $storeId = (int) $this->storeManager->getStore()->getStoreId(); - $quote = $this->createCustomerCart($customerId,$storeId); + $quote = $this->createCustomerCart($customerId, $storeId); try { $this->quoteRepository->save($quote); @@ -75,14 +75,14 @@ public function aroundCreateEmptyCartForCustomer( private function createCustomerCart(int $customerId, int $storeId): Quote { try { - $quote = $this->quoteRepository->getActiveForCustomer($customerId); + $activeQuote = $this->quoteRepository->getActiveForCustomer($customerId); } catch (NoSuchEntityException $e) { - $customer = $this->customerRepository->getById($customerId); - $quote = $this->quoteFactory->create(); - $quote->setStoreId($storeId); - $quote->setCustomer($customer); - $quote->setCustomerIsGuest(0); + $activeCustomer = $this->customerRepository->getById($customerId); + $activeQuote = $this->quoteFactory->create(); + $activeQuote->setStoreId($storeId); + $activeQuote->setCustomer($activeCustomer); + $activeQuote->setCustomerIsGuest(0); } - return $quote; + return $activeQuote; } } From 1be9fa39af639e9f43b109ed02150c1e0dd25f66 Mon Sep 17 00:00:00 2001 From: Arularasan <glo02433@adobe.com> Date: Tue, 3 Sep 2024 12:29:05 +0530 Subject: [PATCH 148/460] ACP2E-3255: [GRAPHQL] model value should be specified when getting customerCart - Fixed the static test failure. --- app/code/Magento/QuoteGraphQl/etc/graphql/di.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml b/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml index 83d4b714e64a1..03d9c3aff9f34 100644 --- a/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/QuoteGraphQl/etc/graphql/di.xml @@ -78,8 +78,6 @@ <type name="Magento\Quote\Model\QuoteManagement"> <plugin name="merge_guest_orders_with_customer_after_place" type="Magento\QuoteGraphQl\Plugin\Model\MergeGuestOrder" /> - </type> - <type name="Magento\Quote\Model\QuoteManagement"> <plugin name="create_empty_cart_without_country_validation" type="Magento\QuoteGraphQl\Plugin\Model\CreateEmptyCartWithoutCountryValidation" /> </type> From 2932a92eeb9537a144c79ffc3c1375c3e7fd8aef Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Tue, 3 Sep 2024 15:29:06 +0300 Subject: [PATCH 149/460] ACP2E-3198: [cloud] Two-finger zoom and move issue on the real mobile device --- lib/web/magnifier/magnify.js | 178 +++++++++++++++++++++++------------ 1 file changed, 119 insertions(+), 59 deletions(-) diff --git a/lib/web/magnifier/magnify.js b/lib/web/magnifier/magnify.js index a450e814b3acd..dcbd4bd5b81c0 100644 --- a/lib/web/magnifier/magnify.js +++ b/lib/web/magnifier/magnify.js @@ -31,7 +31,6 @@ define([ endX, transitionEnabled, transitionActive = false, - tapFlag = 0, allowZoomOut = false, allowZoomIn = true; @@ -227,7 +226,7 @@ define([ return left; } - function checkFullscreenImagePosition($image, dimentions, widthStep, heightStep) { + function checkFullscreenImagePosition($image, dimensions, widthStep, heightStep) { var $imageContainer, containerWidth, containerHeight, @@ -246,20 +245,21 @@ define([ top = $image.position().top; left = $image.position().left; ratio = $image.width() / $image.height(); - dimentions.height = isNaN(dimentions.height) ? dimentions.width / ratio : dimentions.height; - dimentions.width = isNaN(dimentions.width) ? dimentions.height * ratio : dimentions.width; + dimensions.height = isNaN(dimensions.height) ? dimensions.width / ratio : dimensions.height; + dimensions.width = isNaN(dimensions.width) ? dimensions.height * ratio : dimensions.width; - top = dimentions.height >= containerHeight ? - getTopValue($image, top, heightStep, dimentions.height, containerHeight) : 0; + top = dimensions.height >= containerHeight ? + getTopValue($image, top, heightStep, dimensions.height, containerHeight) : 0; - left = dimentions.width >= containerWidth ? - getLeftValue(left, widthStep, dimentions.width, containerWidth) : 0; + left = dimensions.width >= containerWidth ? + getLeftValue(left, widthStep, dimensions.width, containerWidth) : 0; - right = dragFlag && left < (containerWidth - dimentions.width) / 2 ? 0 : left; + right = dragFlag && left < (containerWidth - dimensions.width) / 2 ? 0 : left; bottom = dragFlag ? 0 : top; - settings = $.extend(dimentions, { + settings = $.extend(dimensions, { top: top, + bottom: bottom, left: left, right: right }); @@ -309,7 +309,7 @@ define([ widthResult, heightResult, ratio, - dimentions = {}; + dimensions = {}; if (allowZoomIn && (!transitionEnabled || !transitionActive) && (isTouchEnabled || !$(zoomInButtonSelector).hasClass(zoomInDisabled))) { @@ -352,18 +352,18 @@ define([ } if (imageWidth >= imageHeight && imageWidth !== imgOriginalSize.rw) { - dimentions = $.extend(dimentions, { + dimensions = $.extend(dimensions, { width: widthResult, height: 'auto' }); - checkFullscreenImagePosition($image, dimentions, -zoomWidthStep, -zoomHeightStep); + checkFullscreenImagePosition($image, dimensions, -zoomWidthStep, -zoomHeightStep); } else if (imageWidth < imageHeight && imageHeight !== imgOriginalSize.rh) { - dimentions = $.extend(dimentions, { + dimensions = $.extend(dimensions, { width: 'auto', height: heightResult }); - checkFullscreenImagePosition($image, dimentions, -zoomWidthStep, -zoomHeightStep); + checkFullscreenImagePosition($image, dimensions, -zoomWidthStep, -zoomHeightStep); } } @@ -374,7 +374,7 @@ define([ var $image, widthResult, heightResult, - dimentions, + dimensions, parentWidth, parentHeight, imageWidth, @@ -414,7 +414,7 @@ define([ zoomWidthStep = imageWidth - widthResult; heightResult = widthResult / ratio; zoomHeightStep = imageHeight - heightResult; - dimentions = { + dimensions = { width: widthResult, height: 'auto' }; @@ -423,44 +423,44 @@ define([ zoomHeightStep = imageHeight - heightResult; widthResult = heightResult * ratio; zoomWidthStep = imageWidth - widthResult; - dimentions = { + dimensions = { width: 'auto', height: heightResult }; } - checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep); + checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); }; if (imageWidth >= imageHeight) { if (widthResult > parentWidth) { - dimentions = { + dimensions = { width: widthResult, height: 'auto' }; - checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep); + checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else if (heightResult > parentHeight) { - dimentions = { + dimensions = { width: widthResult, height: 'auto' }; - checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep); + checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else { allowZoomOut = dragFlag = false; toggleStandartNavigation(); fitIntoParent(); } } else if (heightResult > parentHeight) { - dimentions = { + dimensions = { width: 'auto', height: heightResult }; - checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep); + checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else if (widthResult > parentWidth) { - dimentions = { + dimensions = { width: 'auto', height: heightResult }; - checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep); + checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else { allowZoomOut = dragFlag = false; toggleStandartNavigation(); @@ -520,7 +520,6 @@ define([ * Method which makes draggable picture. Also work on touch devices. */ function magnifierFullscreen(fotorama) { - tapFlag = 0; var isDragActive = false, startX, startY, @@ -532,7 +531,8 @@ define([ $image = $(fullscreenImageSelector, $gallery), $imageContainer = $('[data-gallery-role="stage-shaft"] [data-active="true"]'), gallery = $gallery.data('fotorama'), - pinchDimention; + evCache = [], + prevDiff = -1; swipeSlide = _.throttle(function (direction) { $(gallerySelector).data('fotorama').show(direction); @@ -556,7 +556,6 @@ define([ swipeCondition = $image.width() / 10 + 20; dragFlag = true; - if ($image.offset().left === $imageContainer.offset().left + $imageContainer.width() - $image.width() && e.keyCode === 39 || endX - 1 < $imageContainer.offset().left + $imageContainer.width() - $image.width() && dx < 0 && _.isNumber(endX) && @@ -609,6 +608,54 @@ define([ } } + function pointerDownHandler(ev) { + evCache.push(ev); + } + + function pointerMoveHandler(ev) { + for (let i = 0; i < evCache.length; i++) { + if (ev.pointerId === evCache[i].pointerId) { + evCache[i] = ev; + break; + } + } + + if (evCache.length === 2) { + let curDiff = Math.sqrt( + Math.pow(evCache[1].clientX - evCache[0].clientX, 2) + + Math.pow(evCache[1].clientY - evCache[0].clientY, 2) + ); + + if (prevDiff > 0) { + if (curDiff > prevDiff && allowZoomIn) { + zoomIn(ev, 1.5 * curDiff, 1.5 * curDiff); + } + if (curDiff < prevDiff && allowZoomOut) { + zoomOut(ev, 1.5 * curDiff, 1.5 * curDiff); + } + } + + prevDiff = curDiff; + } + } + + function pointerUpHandler(ev) { + removeEvent(ev); + + if (evCache.length < 2) { + prevDiff = -1; + } + } + + function removeEvent(ev) { + for (let i = 0; i < evCache.length; i++) { + if (evCache[i].pointerId === ev.pointerId) { + evCache.splice(i, 1); + break; + } + } + } + /** * Sets image size to original or fit in parent block * @param e - event object @@ -625,29 +672,58 @@ define([ } proportions = imgOriginalSize.rw / imgOriginalSize.rh; - if (allowZoomIn) { zoomIn(e, imgOriginalSize.rw - $image.width(), imgOriginalSize.rh - $image.height()); - } else if (proportions > $imageContainer.width() / $imageContainer.height()) { - zoomOut(e, imgOriginalSize.rw - $imageContainer.width(), imgOriginalSize.rw / proportions); - } else { + } else if (allowZoomOut) { zoomOut(e, imgOriginalSize.rw * proportions, imgOriginalSize.rh - $imageContainer.height()); } } - function detectDoubleTap(e) { - let now = new Date().getTime(), - timesince = now - tapFlag; + function detectDoubleTap() { + let lastTap = 0; + let timeout; - if (timesince > 20 && (isTouchEnabled && timesince < 400) || (!isTouchEnabled && timesince < 2000)) { - transitionActive = false; - dblClickHandler(e); - } - tapFlag = now; + return function doubleTap(event) { + const curTime = new Date().getTime(); + const tapLen = curTime - lastTap; + + if (tapLen < 500 && tapLen > 50) { + event.preventDefault(); + + transitionActive = false; + dblClickHandler(event); + prevDiff = -1; + } else { + timeout = setTimeout(() => { + clearTimeout(timeout); + }, 500); + } + + lastTap = curTime; + }; } if (isTouchEnabled) { - $image.on('touchend', detectDoubleTap); + $image.off('pointerdown'); + $image.on('pointerdown', pointerDownHandler); + + $image.off('pointermove'); + $image.on('pointermove', pointerMoveHandler); + + $image.off('pointerup'); + $image.on('pointerup', pointerUpHandler); + + $image.off('pointercancel'); + $image.on('pointercancel', pointerUpHandler); + + $image.off('pointerout'); + $image.on('pointerout', pointerUpHandler); + + $image.off('pointerleave'); + $image.on('pointerleave', pointerUpHandler); + + $image.off('touchend'); + $image.on('touchend', detectDoubleTap()); } else { $image.off('dblclick'); $image.on('dblclick', dblClickHandler); @@ -657,17 +733,10 @@ define([ toggleZoomButtons($image, isTouchEnabled, checkForVideo(fotorama.activeFrame.$stageFrame)); } - function getDimention(event) { - return Math.sqrt( - (event.touches[0].clientX - event.touches[1].clientX) * (event.touches[0].clientX - event.touches[1].clientX) + - (event.touches[0].clientY - event.touches[1].clientY) * (event.touches[0].clientY - event.touches[1].clientY)); - } - $image.off(isTouchEnabled ? 'touchstart' : 'pointerdown mousedown MSPointerDown'); $image.on(isTouchEnabled ? 'touchstart' : 'pointerdown mousedown MSPointerDown', function (e) { if (e && e.originalEvent.touches && e.originalEvent.touches.length >= 2) { e.preventDefault(); - pinchDimention = getDimention(e.originalEvent); isDragActive = false; if ($image.hasClass(imageDraggableClass)) { @@ -696,19 +765,10 @@ define([ $image.on(isTouchEnabled ? 'touchmove' : 'mousemove pointermove MSPointerMove', function (e) { if (e && e.originalEvent.touches && e.originalEvent.touches.length >= 2) { e.preventDefault(); - var currentDimention = getDimention(e.originalEvent); if ($image.hasClass(imageDraggableClass)) { $image.removeClass(imageDraggableClass); } - - if (currentDimention < pinchDimention) { - zoomOut(e); - pinchDimention = currentDimention; - } else if (currentDimention > pinchDimention) { - zoomIn(e); - pinchDimention = currentDimention; - } } else { var clientX, clientY; From 1586c468c11bf108cede89650ea630f80a6d6a58 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Tue, 3 Sep 2024 21:10:43 +0530 Subject: [PATCH 150/460] ACQE-6741:Create Partial Capture for Order Paid with PayPal Payments Standard New testcase Added --- ...tialCaptureOrderWithPaypalStandardTest.xml | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml new file mode 100644 index 0000000000000..70deb3839ed54 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminCreatePartialCaptureOrderWithPaypalStandardTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Create Partial Capture for Order Paid with PayPal Payments Standard"/> + <description value="Create Partial Capture for Order Paid with PayPal Payments Standard"/> + <severity value="MAJOR"/> + <testCaseId value="AC-5161"/> + <group value="paypalStandard"/> + <group value="3rd_party_integration" /> + </annotations> + <before> + <!-- Login to admin--> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + <!-- Simple product is created --> + <createData entity="simpleProductWithoutCategory" stepKey="createProduct"> + <field key="price">125.15</field> + </createData> + <!-- US Customer is created --> + <createData entity="Simple_US_Customer" stepKey="createCustomer"/> + <!-- Reindexing and flushing Cache--> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexConfig"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCacheConfig"> + <argument name="tags" value="config full_page"/> + </actionGroup> + <!-- Open Product Page to add product in the cart --> + <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="amOnProductPage"> + <argument name="product" value="$createProduct$"/> + </actionGroup> + <scrollTo selector="{{StorefrontProductActionSection.quantity}}" stepKey="scrollToQuantityField"/> + <actionGroup ref="AddProductWithQtyToCartFromStorefrontProductPageActionGroup" stepKey="addProductToCart"> + <argument name="productName" value="$$createProduct.name$$"/> + <argument name="productQty" value="2"/> + </actionGroup> + <actionGroup ref="StorefrontOpenCheckoutPageActionGroup" stepKey="goToCheckout"/> + <!--Fill Shipping Address--> + <actionGroup ref="FillGuestCheckoutShippingAddressFormActionGroup" stepKey="fillShippingAddress"/> + <selectOption selector="{{CheckoutCartSummarySection.stateProvince}}" userInput="Texas" stepKey="fillState"/> + <waitForPageLoad stepKey="waitForShippingPageToLoad"/> + <!-- Click Next button --> + <actionGroup ref="StorefrontGuestCheckoutProceedToPaymentStepActionGroup" stepKey="clickNext"/> + <!-- Click on PayPal payment radio button and click on continue btn --> + <actionGroup ref="AdminSelectPaypalStandardPaymentInPaymentPageActionGroup" stepKey="selectPaypalStandardPaymentAndClickOnContinuebtn"/> + <!-- Login to Paypal in-context and verify order total on paypal page--> + <actionGroup ref="StorefrontLoginToPayPalStandardActionGroup" stepKey="loginToPayPal"/> + <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> + <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/> + <waitForText selector="{{CheckoutSuccessMainSection.success}}" userInput="We'll email you an order confirmation with details and tracking info." stepKey="seeSuccessMessage"/> + </before> + <after> + <deleteData createDataKey="createProduct" stepKey="deleteProduct"/> + <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> + <!-- Logout--> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + </after> + + <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="waitForOrderNumberToBeGrabbed"/> + <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="grabOrderNumber"/> + <!-- Go to order page --> + <actionGroup ref="OpenOrderByIdActionGroup" stepKey="openFirstOrderPage"> + <argument name="orderId" value="{$grabOrderNumber}"/> + </actionGroup> + + <!--Submit invoice--> + <actionGroup ref="AdminClickInvoiceButtonOrderViewActionGroup" stepKey="clickInvoiceButton"/> + <seeOptionIsSelected userInput="Capture Online" selector="{{AdminInvoiceTotalSection.amount}}" stepKey="seeOptionType"/> + <!--Update qty as 1 and assert the status of the order--> + <actionGroup ref="AdminFillQtyToInvoiceOnCreateInvoicePageActionGroup" stepKey="fillInvoiceQuantity"> + <argument name="qty" value="1"/> + </actionGroup> + <actionGroup ref="AdminClickUpdateQtysButtonOnCreateInvoicePageActionGroup" stepKey="clickUpdateQtyAfterUpdatingInvoiceBtn"/> + <actionGroup ref="AdminInvoiceClickSubmitActionGroup" stepKey="clickSubmitInvoice"/> + <actionGroup ref="AdminOrderViewCheckStatusActionGroup" stepKey="checkOrderStatus"> + <argument name="status" value="Processing"/> + </actionGroup> + <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForLastTransactionIDFieldToBeAppearedAfterSubmittingInvoice"/> + <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> + <!--Open the comment history tab and assert the comment--> + <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryAfterSubmittingInvoice"/> + <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $135.15 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> + <!-- Check the last transaction of the order and validate the details for Captured and Authorization--> + <actionGroup ref="AdminViewAuthorizationTransactionsInOrderActionGroup" stepKey="validateAuthTransaction"/> + <waitForText selector="{{AdminTransactionsGridSection.transactionData('Is Closed')}}" userInput="No" stepKey="seeIfClosedHeaderIsSetAsYesForAuthorization"/> + <waitForElementClickable selector="{{AdminProductFormActionSection.backButton}}" stepKey="waitForBackButtonToBeClicked"/> + <click selector="{{AdminProductFormActionSection.backButton}}" stepKey="clickBackButton"/> + <actionGroup ref="AdminAssertTransitionTypeStatusNewActionGroup" stepKey="assertTransactionTypeStatusForCapture"> + <argument name="transactionType" value="capture"/> + <argument name="transitionTypeStatus" value="No"/> + </actionGroup> + </test> +</tests> From c486aa43139d347980ef769ef17d09ee2a279d02 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Wed, 4 Sep 2024 09:54:03 +0300 Subject: [PATCH 151/460] ACP2E-3198: [cloud] Two-finger zoom and move issue on the real mobile device --- dev/tests/js/jasmine/tests/lib/web/magnify.test.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dev/tests/js/jasmine/tests/lib/web/magnify.test.js b/dev/tests/js/jasmine/tests/lib/web/magnify.test.js index c55ae262768cc..a5aeed0ac10db 100644 --- a/dev/tests/js/jasmine/tests/lib/web/magnify.test.js +++ b/dev/tests/js/jasmine/tests/lib/web/magnify.test.js @@ -63,7 +63,6 @@ define(['magnifier/magnify', 'mage/gallery/gallery', 'jquery'], function (Magnif mainDiv.setAttribute('data-gallery-role', 'gallery-placeholder'); img = document.createElement('img'); - img.alt = 'main product photo'; img.id = 'main_product_photo'; img.className = 'gallery-placeholder__image'; img.src = 'dev/tests/acceptance/tests/_data/adobe-base.jpg'; @@ -85,6 +84,12 @@ define(['magnifier/magnify', 'mage/gallery/gallery', 'jquery'], function (Magnif imageEvents = $._data($('.fotorama__img--full')[0], 'events'); expect(imageEvents).toBeInstanceOf(Object); expect(Object.getOwnPropertyNames(imageEvents)).toContain('touchend'); + expect(Object.getOwnPropertyNames(imageEvents)).toContain('pointerdown'); + expect(Object.getOwnPropertyNames(imageEvents)).toContain('pointermove'); + expect(Object.getOwnPropertyNames(imageEvents)).toContain('pointerup'); + expect(Object.getOwnPropertyNames(imageEvents)).toContain('pointercancel'); + expect(Object.getOwnPropertyNames(imageEvents)).toContain('pointerout'); + expect(Object.getOwnPropertyNames(imageEvents)).toContain('pointerleave'); }); }); }); From a7f95885e8ac6b2a94ffad4c6da22da33d7f734f Mon Sep 17 00:00:00 2001 From: IOWEB TECHNOLOGIES <info@ioweb.gr> Date: Wed, 4 Sep 2024 13:35:41 +0300 Subject: [PATCH 152/460] remove duplicate getMode call --- .../Framework/Css/PreProcessor/Adapter/Less/Processor.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php index 184a895adbd25..181edd47c279d 100644 --- a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php +++ b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php @@ -66,11 +66,12 @@ public function processContent(File $asset) { $path = $asset->getPath(); try { + $mode = $this->appState->getMode(); $parser = new \Less_Parser( [ 'relativeUrls' => false, - 'compress' => $this->appState->getMode() !== State::MODE_DEVELOPER, - 'sourceMap' => $this->appState->getMode() === State::MODE_DEVELOPER + 'compress' => $mode !== State::MODE_DEVELOPER, + 'sourceMap' => $mode === State::MODE_DEVELOPER ] ); From cbf2d4d41d974c3da86806b3049b4e441a847014 Mon Sep 17 00:00:00 2001 From: Arularasan <glo02433@adobe.com> Date: Wed, 4 Sep 2024 17:01:44 +0530 Subject: [PATCH 153/460] ACP2E-3255: [GRAPHQL] model value should be specified when getting customerCart - Added the test coverage. --- ...eEmptyCartWithoutCountryValidationTest.php | 214 ++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php diff --git a/app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php b/app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php new file mode 100644 index 0000000000000..801b0e921bf0d --- /dev/null +++ b/app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php @@ -0,0 +1,214 @@ +<?php +/** + * Copyright 2024 Adobe + * All Rights Reserved. + */ +declare(strict_types=1); + +namespace Magento\QuoteGraphQl\Test\Unit\Plugin\Model; + +use Magento\Framework\Exception\CouldNotSaveException; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Quote\Model\Quote; +use Magento\Quote\Model\QuoteFactory; +use Magento\Store\Model\StoreManagerInterface; +use Magento\Quote\Api\CartRepositoryInterface; +use Magento\Customer\Api\CustomerRepositoryInterface; +use Magento\Quote\Model\QuoteManagement; +use Magento\QuoteGraphQl\Plugin\Model\CreateEmptyCartWithoutCountryValidation; +use Magento\Store\Model\Store; +use Magento\Customer\Api\Data\CustomerInterface as Customer; +use PHPUnit\Framework\MockObject\Exception; +use PHPUnit\Framework\TestCase; +use PHPUnit\Framework\MockObject\MockObject; + +class CreateEmptyCartWithoutCountryValidationTest extends TestCase +{ + /** + * @var MockObject|StoreManagerInterface + */ + private MockObject|StoreManagerInterface $storeManager; + + /** + * @var MockObject|CartRepositoryInterface + */ + private MockObject|CartRepositoryInterface $quoteRepository; + + /** + * @var MockObject|CustomerRepositoryInterface + */ + private MockObject|CustomerRepositoryInterface $customerRepository; + + /** + * @var MockObject|QuoteFactory + */ + private MockObject|QuoteFactory $quoteFactory; + + /** + * @var CreateEmptyCartWithoutCountryValidation + */ + private CreateEmptyCartWithoutCountryValidation $model; + + /** + * @var MockObject|QuoteManagement + */ + private MockObject|QuoteManagement $quoteManagement; + + /** + * @var MockObject|Store + */ + private MockObject|Store $store; + + /** + * @var MockObject|Quote + */ + private MockObject|Quote $quote; + + /** + * @throws Exception + */ + protected function setUp(): void + { + $this->storeManager = $this->createMock(StoreManagerInterface::class); + $this->quoteRepository = $this->createMock(CartRepositoryInterface::class); + $this->customerRepository = $this->createMock(CustomerRepositoryInterface::class); + $this->quoteFactory = $this->createMock(QuoteFactory::class); + $this->quoteManagement = $this->createMock(QuoteManagement::class); + $this->store = $this->getMockBuilder(Store::class) + ->addMethods(['getStoreId']) + ->disableOriginalConstructor() + ->getMock(); + $this->quote = $this->createMock(Quote::class); + + $this->model = new CreateEmptyCartWithoutCountryValidation( + $this->storeManager, + $this->quoteRepository, + $this->customerRepository, + $this->quoteFactory + ); + } + + /** + * @dataProvider aroundCreateEmptyCartForCustomerDataProvider + * @throws NoSuchEntityException + * @throws CouldNotSaveException + * @throws Exception + * @throws LocalizedException + */ + public function testAroundCreateEmptyCartForCustomerCreatesNewCart( + int $storeId, + int $customerId, + object $callBack) { + $expectedResult = 123; + $this->storeManager->expects($this->once()) + ->method('getStore') + ->willReturn($this->store); + + $this->store->expects($this->once()) + ->method('getStoreId') + ->willReturn($storeId); + + $this->quoteRepository->expects($this->once()) + ->method('getActiveForCustomer') + ->willThrowException(new NoSuchEntityException(__('No such entity'))); + + $this->customerRepository->expects($this->once()) + ->method('getById') + ->with($customerId) + ->willReturn($this->createMock(Customer::class)); + + $this->quoteFactory->expects($this->once()) + ->method('create') + ->willReturn($this->quote); + + $this->quote->expects($this->once()) + ->method('setStoreId') + ->with($storeId); + $this->quote->expects($this->once()) + ->method('setCustomer') + ->with($this->isInstanceOf(Customer::class)); + $this->quote->expects($this->once()) + ->method('setCustomerIsGuest') + ->with(0); + + $this->quoteRepository->expects($this->once()) + ->method('save') + ->with($this->quote); + + $this->quote->expects($this->once()) + ->method('getId') + ->willReturn(123); + + $result = $this->model->aroundCreateEmptyCartForCustomer( + $this->quoteManagement, + $callBack, + $customerId + ); + + $this->assertEquals($expectedResult, $result); + } + + /** + * @dataProvider aroundCreateEmptyCartForCustomerDataProvider + * @throws NoSuchEntityException + * @throws Exception + * @throws LocalizedException + */ + public function testAroundCreateEmptyCartForCustomerHandlesSaveException( + int $storeId, + int $customerId, + object $callBack) { + $this->storeManager->expects($this->once()) + ->method('getStore') + ->willReturn($this->store); + $this->store->expects($this->once()) + ->method('getStoreId') + ->willReturn($storeId); + + $this->quoteRepository->expects($this->once()) + ->method('getActiveForCustomer') + ->willThrowException(new NoSuchEntityException(__('No such entity'))); + + $this->customerRepository->expects($this->once()) + ->method('getById') + ->with($customerId) + ->willReturn($this->createMock(Customer::class)); + + $this->quoteFactory->expects($this->once()) + ->method('create') + ->willReturn($this->quote); + + $this->quote->expects($this->once()) + ->method('setStoreId') + ->with($storeId); + $this->quote->expects($this->once()) + ->method('setCustomer') + ->with($this->isInstanceOf(Customer::class)); + $this->quote->expects($this->once()) + ->method('setCustomerIsGuest') + ->with(0); + + $this->quoteRepository->expects($this->once()) + ->method('save') + ->willThrowException(new CouldNotSaveException(__('The quote can\'t be created.'))); + + $this->expectException(CouldNotSaveException::class); + + $this->model->aroundCreateEmptyCartForCustomer( + $this->quoteManagement, + $callBack, + $customerId + ); + } + + /** + * @return array + */ + public static function aroundCreateEmptyCartForCustomerDataProvider(): array + { + return [ + [1, 1, function() {}] + ]; + } +} From 7673b2369aa4378de8fe3e2c2aae81a540a0e3e6 Mon Sep 17 00:00:00 2001 From: Arularasan <glo02433@adobe.com> Date: Wed, 4 Sep 2024 19:00:22 +0530 Subject: [PATCH 154/460] ACP2E-3255: [GRAPHQL] model value should be specified when getting customerCart - Fixed the static test failure. --- .../CreateEmptyCartWithoutCountryValidationTest.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php b/app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php index 801b0e921bf0d..16c3526aac652 100644 --- a/app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php +++ b/app/code/Magento/QuoteGraphQl/Test/Unit/Plugin/Model/CreateEmptyCartWithoutCountryValidationTest.php @@ -23,6 +23,9 @@ use PHPUnit\Framework\TestCase; use PHPUnit\Framework\MockObject\MockObject; +/** + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class CreateEmptyCartWithoutCountryValidationTest extends TestCase { /** @@ -99,7 +102,8 @@ protected function setUp(): void public function testAroundCreateEmptyCartForCustomerCreatesNewCart( int $storeId, int $customerId, - object $callBack) { + object $callBack + ) { $expectedResult = 123; $this->storeManager->expects($this->once()) ->method('getStore') @@ -158,7 +162,8 @@ public function testAroundCreateEmptyCartForCustomerCreatesNewCart( public function testAroundCreateEmptyCartForCustomerHandlesSaveException( int $storeId, int $customerId, - object $callBack) { + object $callBack + ) { $this->storeManager->expects($this->once()) ->method('getStore') ->willReturn($this->store); @@ -208,7 +213,8 @@ public function testAroundCreateEmptyCartForCustomerHandlesSaveException( public static function aroundCreateEmptyCartForCustomerDataProvider(): array { return [ - [1, 1, function() {}] + [1, 1, function () { + }] ]; } } From 52da6505fb34b23a47fe9db5e930a15d26557711 Mon Sep 17 00:00:00 2001 From: IOWEB TECHNOLOGIES <info@ioweb.gr> Date: Wed, 4 Sep 2024 16:31:50 +0300 Subject: [PATCH 155/460] add class description --- .../Framework/Css/PreProcessor/Adapter/Less/Processor.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php index 181edd47c279d..14e54e7743487 100644 --- a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php +++ b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php @@ -16,6 +16,8 @@ /** * Class Processor + * + * Process LESS files into CSS */ class Processor implements ContentProcessorInterface { From 613cb239c6cd55d9535ca5259a509c7e4e05ba5c Mon Sep 17 00:00:00 2001 From: IOWEB TECHNOLOGIES <info@ioweb.gr> Date: Fri, 6 Sep 2024 11:58:22 +0300 Subject: [PATCH 156/460] fix source maps detection in browser --- .../Css/PreProcessor/Adapter/Less/Processor.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php index 14e54e7743487..82925a01f5325 100644 --- a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php +++ b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php @@ -5,6 +5,7 @@ */ namespace Magento\Framework\Css\PreProcessor\Adapter\Less; +use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\App\State; use Magento\Framework\Css\PreProcessor\File\Temporary; use Magento\Framework\Phrase; @@ -40,6 +41,7 @@ class Processor implements ContentProcessorInterface * @var Temporary */ private $temporaryFile; + private DirectoryList $directoryList; /** * Constructor @@ -53,12 +55,14 @@ public function __construct( LoggerInterface $logger, State $appState, Source $assetSource, - Temporary $temporaryFile + Temporary $temporaryFile, + DirectoryList $directoryList ) { $this->logger = $logger; $this->appState = $appState; $this->assetSource = $assetSource; $this->temporaryFile = $temporaryFile; + $this->directoryList = $directoryList; } /** @@ -73,7 +77,9 @@ public function processContent(File $asset) [ 'relativeUrls' => false, 'compress' => $mode !== State::MODE_DEVELOPER, - 'sourceMap' => $mode === State::MODE_DEVELOPER + 'sourceMap' => $mode === State::MODE_DEVELOPER, + 'sourceMapRootpath' => '/', + 'sourceMapBasepath' => $this->directoryList->getPath(DirectoryList::TEMPLATE_MINIFICATION_DIR) . '/pub/' ] ); From 60421e37d37d67079de58e73f31bb78454216f87 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 6 Sep 2024 15:03:30 +0530 Subject: [PATCH 157/460] ACQE-6743:Create Partial Capture for Order Paid with PayPal Payments Standard updated on testcases --- .../AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index 70deb3839ed54..435e282ea43e9 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -80,6 +80,8 @@ <argument name="qty" value="1"/> </actionGroup> <actionGroup ref="AdminClickUpdateQtysButtonOnCreateInvoicePageActionGroup" stepKey="clickUpdateQtyAfterUpdatingInvoiceBtn"/> + <waitForPageLoad stepKey="waitPageToBeLoaded" after="clickUpdateQtyAfterUpdatingInvoiceBtn"/> + <seeOptionIsSelected userInput="Capture Online" selector="{{AdminInvoiceTotalSection.amount}}" stepKey="seeOptionType" after="waitPageToBeLoaded"/> <actionGroup ref="AdminInvoiceClickSubmitActionGroup" stepKey="clickSubmitInvoice"/> <actionGroup ref="AdminOrderViewCheckStatusActionGroup" stepKey="checkOrderStatus"> <argument name="status" value="Processing"/> From d551105507e30bf6bd3679c95ed84aa747c80070 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Fri, 6 Sep 2024 13:16:47 +0300 Subject: [PATCH 158/460] ACP2E-3198: [cloud] Two-finger zoom and move issue on the real mobile device --- lib/web/magnifier/magnify.js | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/lib/web/magnifier/magnify.js b/lib/web/magnifier/magnify.js index dcbd4bd5b81c0..6059a66ed6f27 100644 --- a/lib/web/magnifier/magnify.js +++ b/lib/web/magnifier/magnify.js @@ -370,7 +370,7 @@ define([ return false; } - function zoomOut(e, xStep, yStep) { + function zoomOut(e, xStep, yStep, fitIntoParentFlag = false) { var $image, widthResult, heightResult, @@ -381,8 +381,7 @@ define([ imageHeight, zoomWidthStep, zoomHeightStep, - ratio, - fitIntoParent; + ratio; if (allowZoomOut && (!transitionEnabled || !transitionActive) && (isTouchEnabled || !$(zoomOutButtonSelector).hasClass(zoomOutDisabled))) { @@ -408,7 +407,7 @@ define([ zoomWidthStep = xStep || imageWidth - widthResult; } - fitIntoParent = function () { + let fitIntoParent = function () { if (ratio > parentWidth / parentHeight) { widthResult = parentWidth; zoomWidthStep = imageWidth - widthResult; @@ -445,9 +444,11 @@ define([ }; checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else { - allowZoomOut = dragFlag = false; toggleStandartNavigation(); - fitIntoParent(); + if (fitIntoParentFlag) { + allowZoomOut = dragFlag = false; + fitIntoParent(); + } } } else if (heightResult > parentHeight) { dimensions = { @@ -462,9 +463,11 @@ define([ }; checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else { - allowZoomOut = dragFlag = false; toggleStandartNavigation(); - fitIntoParent(); + if (fitIntoParentFlag) { + allowZoomOut = dragFlag = false; + fitIntoParent(); + } } } @@ -627,11 +630,11 @@ define([ ); if (prevDiff > 0) { - if (curDiff > prevDiff && allowZoomIn) { - zoomIn(ev, 1.5 * curDiff, 1.5 * curDiff); + if (curDiff - prevDiff > 0.2 && allowZoomIn) { + zoomIn(ev, curDiff, curDiff); } - if (curDiff < prevDiff && allowZoomOut) { - zoomOut(ev, 1.5 * curDiff, 1.5 * curDiff); + if (curDiff - prevDiff < -0.2 && allowZoomOut) { + zoomOut(ev, curDiff, curDiff); } } @@ -675,7 +678,12 @@ define([ if (allowZoomIn) { zoomIn(e, imgOriginalSize.rw - $image.width(), imgOriginalSize.rh - $image.height()); } else if (allowZoomOut) { - zoomOut(e, imgOriginalSize.rw * proportions, imgOriginalSize.rh - $imageContainer.height()); + zoomOut( + e, + imgOriginalSize.rw * proportions, + imgOriginalSize.rh - $imageContainer.height(), + true + ); } } From e83298e90b59a1ebacca8c99313eff46bd092037 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 6 Sep 2024 16:21:30 +0530 Subject: [PATCH 159/460] ACQE-6741:Create Partial Capture for Order Paid with PayPal Payments Standard updated on testcases --- .../AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index 435e282ea43e9..ee44a7fcb527f 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -74,7 +74,6 @@ <!--Submit invoice--> <actionGroup ref="AdminClickInvoiceButtonOrderViewActionGroup" stepKey="clickInvoiceButton"/> - <seeOptionIsSelected userInput="Capture Online" selector="{{AdminInvoiceTotalSection.amount}}" stepKey="seeOptionType"/> <!--Update qty as 1 and assert the status of the order--> <actionGroup ref="AdminFillQtyToInvoiceOnCreateInvoicePageActionGroup" stepKey="fillInvoiceQuantity"> <argument name="qty" value="1"/> From 8cff66e1f4e0c1b34a9f4e60f2833bd8bdb6639e Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 6 Sep 2024 16:50:13 +0530 Subject: [PATCH 160/460] ACQE-6741:Create Partial Capture for Order Paid with PayPal Payments Standard updated on testcases --- ...minCreatePartialCaptureOrderWithPaypalStandardTest.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index ee44a7fcb527f..fb35d7ea82b96 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -82,9 +82,17 @@ <waitForPageLoad stepKey="waitPageToBeLoaded" after="clickUpdateQtyAfterUpdatingInvoiceBtn"/> <seeOptionIsSelected userInput="Capture Online" selector="{{AdminInvoiceTotalSection.amount}}" stepKey="seeOptionType" after="waitPageToBeLoaded"/> <actionGroup ref="AdminInvoiceClickSubmitActionGroup" stepKey="clickSubmitInvoice"/> + <actionGroup ref="AdminOrderViewCheckStatusActionGroup" stepKey="checkOrderStatus"> <argument name="status" value="Processing"/> </actionGroup> + <!--Open Invoice--> + <waitForElementClickable selector="{{AdminOrderDetailsOrderViewSection.invoices}}" stepKey="waitForInvoicesTabClickable" /> + <click selector="{{AdminOrderDetailsOrderViewSection.invoices}}" stepKey="openInvoicesTab"/> + <!--Check Invoice Section --> + <waitForElementVisible selector="{{AdminOrderDetailsMainActionsSection.invoiceTabContent}}" stepKey="waitForInvoiceSectionContentToBeAppeared"/> + + <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForLastTransactionIDFieldToBeAppearedAfterSubmittingInvoice"/> <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> <!--Open the comment history tab and assert the comment--> From b2f4a322d59c4cfdfd5c4abca8be3b5cf71bdb37 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 6 Sep 2024 16:51:17 +0530 Subject: [PATCH 161/460] ACQE-6741:Create Partial Capture for Order Paid with PayPal Payments Standard updated on testcases --- .../AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index fb35d7ea82b96..7266975c85585 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -91,8 +91,6 @@ <click selector="{{AdminOrderDetailsOrderViewSection.invoices}}" stepKey="openInvoicesTab"/> <!--Check Invoice Section --> <waitForElementVisible selector="{{AdminOrderDetailsMainActionsSection.invoiceTabContent}}" stepKey="waitForInvoiceSectionContentToBeAppeared"/> - - <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForLastTransactionIDFieldToBeAppearedAfterSubmittingInvoice"/> <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> <!--Open the comment history tab and assert the comment--> From 95178c88d52b1d74bd3fb7f2e7be33cf9421858a Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Fri, 6 Sep 2024 18:56:48 +0530 Subject: [PATCH 162/460] ACQE-6741:Create Partial Capture for Order Paid with PayPal Payments Standard updated on testcases --- .../AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index 7266975c85585..f7c09eb9e78d5 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -82,7 +82,6 @@ <waitForPageLoad stepKey="waitPageToBeLoaded" after="clickUpdateQtyAfterUpdatingInvoiceBtn"/> <seeOptionIsSelected userInput="Capture Online" selector="{{AdminInvoiceTotalSection.amount}}" stepKey="seeOptionType" after="waitPageToBeLoaded"/> <actionGroup ref="AdminInvoiceClickSubmitActionGroup" stepKey="clickSubmitInvoice"/> - <actionGroup ref="AdminOrderViewCheckStatusActionGroup" stepKey="checkOrderStatus"> <argument name="status" value="Processing"/> </actionGroup> @@ -91,6 +90,10 @@ <click selector="{{AdminOrderDetailsOrderViewSection.invoices}}" stepKey="openInvoicesTab"/> <!--Check Invoice Section --> <waitForElementVisible selector="{{AdminOrderDetailsMainActionsSection.invoiceTabContent}}" stepKey="waitForInvoiceSectionContentToBeAppeared"/> + <waitForElementClickable selector="{{AdminOrderDetailsOrderViewSection.information}}" stepKey="waitForClickOrderInformation"/> + <click selector="{{AdminOrderDetailsOrderViewSection.information}}" stepKey="clickInformation"/> + <waitForPageLoad stepKey="waitForOrderInformationTabLoadingMask"/> + <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForLastTransactionIDFieldToBeAppearedAfterSubmittingInvoice"/> <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> <!--Open the comment history tab and assert the comment--> From 99145452137681d339a4ae899f98f43a6dbed91a Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Tue, 10 Sep 2024 14:55:38 +0300 Subject: [PATCH 163/460] ACP2E-3198: [cloud] Two-finger zoom and move issue on the real mobile device --- lib/web/magnifier/magnify.js | 45 ++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/lib/web/magnifier/magnify.js b/lib/web/magnifier/magnify.js index 6059a66ed6f27..c01924eb1744a 100644 --- a/lib/web/magnifier/magnify.js +++ b/lib/web/magnifier/magnify.js @@ -234,7 +234,6 @@ define([ top, left, right, - bottom, ratio; if ($(gallerySelector).data('fotorama').fullScreen) { @@ -255,11 +254,9 @@ define([ getLeftValue(left, widthStep, dimensions.width, containerWidth) : 0; right = dragFlag && left < (containerWidth - dimensions.width) / 2 ? 0 : left; - bottom = dragFlag ? 0 : top; settings = $.extend(dimensions, { top: top, - bottom: bottom, left: left, right: right }); @@ -370,7 +367,7 @@ define([ return false; } - function zoomOut(e, xStep, yStep, fitIntoParentFlag = false) { + function zoomOut(e, xStep, yStep) { var $image, widthResult, heightResult, @@ -381,7 +378,8 @@ define([ imageHeight, zoomWidthStep, zoomHeightStep, - ratio; + ratio, + fitIntoParent; if (allowZoomOut && (!transitionEnabled || !transitionActive) && (isTouchEnabled || !$(zoomOutButtonSelector).hasClass(zoomOutDisabled))) { @@ -407,7 +405,7 @@ define([ zoomWidthStep = xStep || imageWidth - widthResult; } - let fitIntoParent = function () { + fitIntoParent = function () { if (ratio > parentWidth / parentHeight) { widthResult = parentWidth; zoomWidthStep = imageWidth - widthResult; @@ -445,10 +443,7 @@ define([ checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else { toggleStandartNavigation(); - if (fitIntoParentFlag) { - allowZoomOut = dragFlag = false; - fitIntoParent(); - } + fitIntoParent(); } } else if (heightResult > parentHeight) { dimensions = { @@ -463,11 +458,9 @@ define([ }; checkFullscreenImagePosition($image, dimensions, zoomWidthStep, zoomHeightStep); } else { + allowZoomOut = dragFlag = false; toggleStandartNavigation(); - if (fitIntoParentFlag) { - allowZoomOut = dragFlag = false; - fitIntoParent(); - } + fitIntoParent(); } } @@ -535,7 +528,8 @@ define([ $imageContainer = $('[data-gallery-role="stage-shaft"] [data-active="true"]'), gallery = $gallery.data('fotorama'), evCache = [], - prevDiff = -1; + prevDiff = -1, + preventAction = false; swipeSlide = _.throttle(function (direction) { $(gallerySelector).data('fotorama').show(direction); @@ -631,10 +625,18 @@ define([ if (prevDiff > 0) { if (curDiff - prevDiff > 0.2 && allowZoomIn) { + preventAction = true; zoomIn(ev, curDiff, curDiff); + setTimeout(() => { + preventAction = false; + }, 500); } if (curDiff - prevDiff < -0.2 && allowZoomOut) { + preventAction = true; zoomOut(ev, curDiff, curDiff); + setTimeout(() => { + preventAction = false; + }, 500); } } @@ -678,12 +680,7 @@ define([ if (allowZoomIn) { zoomIn(e, imgOriginalSize.rw - $image.width(), imgOriginalSize.rh - $image.height()); } else if (allowZoomOut) { - zoomOut( - e, - imgOriginalSize.rw * proportions, - imgOriginalSize.rh - $imageContainer.height(), - true - ); + zoomOut(e, imgOriginalSize.rw * proportions, imgOriginalSize.rh - $imageContainer.height()); } } @@ -695,11 +692,15 @@ define([ const curTime = new Date().getTime(); const tapLen = curTime - lastTap; - if (tapLen < 500 && tapLen > 50) { + if (tapLen < 300 && tapLen > 50 && !preventAction) { event.preventDefault(); transitionActive = false; + preventAction = true; dblClickHandler(event); + setTimeout(() => { + preventAction = false; + }, 500); prevDiff = -1; } else { timeout = setTimeout(() => { From 44c8c4d90d7ee371cb2e221a53ac2302d7d03cfb Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Tue, 10 Sep 2024 18:43:58 +0530 Subject: [PATCH 164/460] ACQE-6741:Create Partial Capture for Order Paid with PayPal Payments Standard updated on testcases --- .../Mftf/ActionGroup/DummyDataActionGroup.xml | 26 +++++++++++++++++++ ...tialCaptureOrderWithPaypalStandardTest.xml | 21 ++++++++------- 2 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml new file mode 100644 index 0000000000000..17ad08c15ebf9 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="DummyDataActionGroup"> + <annotations> + <description>On Storefront Login To PayPal Express Checkout Payflow Edition .</description> + </annotations> + + <!--Check in-context--> + <switchToNextTab stepKey="switchToInContentTab"/> + <waitForPageLoad stepKey="waitForPayPalPageToLoad"/> + <waitForElementVisible selector="{{PayPalPaymentSection.email}}" stepKey="waitForEmailField" /> + <fillField selector="{{PayPalPaymentSection.email}}" userInput="orykh@adobe.com" stepKey="fillEmail"/> + <waitForElementVisible selector="{{PayPalPaymentSection.password}}" stepKey="waitForPasswordFieldToBeVisible" /> + <fillField selector="{{PayPalPaymentSection.password}}" userInput="123123qQ1" stepKey="fillPassword"/> + <waitForElementClickable selector="{{PayPalPaymentSection.loginBtn}}" stepKey="waitForLoginField"/> + <click selector="{{PayPalPaymentSection.loginBtn}}" stepKey="login"/> + <waitForPageLoad stepKey="waitForDetailsPageToOpen"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index f7c09eb9e78d5..e03892abec94a 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -53,7 +53,7 @@ <!-- Click on PayPal payment radio button and click on continue btn --> <actionGroup ref="AdminSelectPaypalStandardPaymentInPaymentPageActionGroup" stepKey="selectPaypalStandardPaymentAndClickOnContinuebtn"/> <!-- Login to Paypal in-context and verify order total on paypal page--> - <actionGroup ref="StorefrontLoginToPayPalStandardActionGroup" stepKey="loginToPayPal"/> + <actionGroup ref="DummyDataActionGroup" stepKey="loginToPayPal"/> <actionGroup ref="StorefrontPaypalSwitchBackToMagentoFromCheckoutPageActionGroup" stepKey="confirmPaymentAndGoBackToMagento"/> <waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/> <waitForText selector="{{CheckoutSuccessMainSection.success}}" userInput="We'll email you an order confirmation with details and tracking info." stepKey="seeSuccessMessage"/> @@ -85,17 +85,20 @@ <actionGroup ref="AdminOrderViewCheckStatusActionGroup" stepKey="checkOrderStatus"> <argument name="status" value="Processing"/> </actionGroup> - <!--Open Invoice--> - <waitForElementClickable selector="{{AdminOrderDetailsOrderViewSection.invoices}}" stepKey="waitForInvoicesTabClickable" /> - <click selector="{{AdminOrderDetailsOrderViewSection.invoices}}" stepKey="openInvoicesTab"/> - <!--Check Invoice Section --> - <waitForElementVisible selector="{{AdminOrderDetailsMainActionsSection.invoiceTabContent}}" stepKey="waitForInvoiceSectionContentToBeAppeared"/> - <waitForElementClickable selector="{{AdminOrderDetailsOrderViewSection.information}}" stepKey="waitForClickOrderInformation"/> - <click selector="{{AdminOrderDetailsOrderViewSection.information}}" stepKey="clickInformation"/> <waitForPageLoad stepKey="waitForOrderInformationTabLoadingMask"/> - <waitForElementVisible selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="waitForLastTransactionIDFieldToBeAppearedAfterSubmittingInvoice"/> <grabTextFrom selector="{{AdminOrderDetailsInformationSection.paymentInformationField('Last Transaction ID')}}" stepKey="grabLastTransactionIDForCaptured"/> + <waitForPageLoad stepKey="waitUntilInvoiceTabIsOpened"/> + <!--Open invoice tab and verify the invoice is present--> + <click selector="{{AdminOrderDetailsOrderViewSection.invoices}}" stepKey="clickOrderInvoicesTab"/> + <waitForLoadingMaskToDisappear stepKey="waitForInvoiceGridLoadingMask" /> + <see selector="{{AdminOrderInvoicesTabSection.gridRow('1')}}" userInput="{{Simple_US_Customer.firstname}}" stepKey="seeOrderInvoiceInTabGrid"/> + <waitForElementClickable selector="{{AdminOrderInvoicesTabSection.viewGridRow('1')}}" stepKey="waitForClickToViewInvoiceRow"/> + <conditionalClick selector="{{AdminOrderInvoicesTabSection.viewGridRow('1')}}" dependentSelector="{{AdminOrderInvoicesTabSection.viewGridRow('1')}}" visible="true" stepKey="clickToViewInvoiceRow"/> + <see selector="{{AdminInvoiceOrderInformationSection.orderId}}" userInput="{$grabOrderNumber}" stepKey="seeOrderIdOnInvoice" /> + <actionGroup ref="OpenOrderByIdActionGroup" stepKey="openAgainOrderPage"> + <argument name="orderId" value="{$grabOrderNumber}"/> + </actionGroup> <!--Open the comment history tab and assert the comment--> <actionGroup ref="AdminOpenOrderCommentsHistoryActionGroup" stepKey="clickOnCommentsHistoryAfterSubmittingInvoice"/> <waitForText selector="{{AdminOrderCommentsTabSection.orderCommentsWithType('Captured amount')}}" userInput="Captured amount of $135.15 online. Transaction ID: "{$grabLastTransactionIDForCaptured}"" stepKey="seeOrderHistoryNotesAfterSubmittingInvoice"/> From 2a61ce6b87d131eff8c81de466ecdbd078fdfa09 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Wed, 11 Sep 2024 07:39:00 +0530 Subject: [PATCH 165/460] ACQE-6741:Create Partial Capture for Order Paid with PayPal Payments Standard Updated Testcase --- .../AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index e03892abec94a..bb4ba064445b4 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -64,14 +64,12 @@ <!-- Logout--> <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> </after> - <waitForElementVisible selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="waitForOrderNumberToBeGrabbed"/> <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" stepKey="grabOrderNumber"/> <!-- Go to order page --> <actionGroup ref="OpenOrderByIdActionGroup" stepKey="openFirstOrderPage"> <argument name="orderId" value="{$grabOrderNumber}"/> </actionGroup> - <!--Submit invoice--> <actionGroup ref="AdminClickInvoiceButtonOrderViewActionGroup" stepKey="clickInvoiceButton"/> <!--Update qty as 1 and assert the status of the order--> From 6bf4cfc42798883492c58feece713abde819c2fa Mon Sep 17 00:00:00 2001 From: Dnyaneshwar Jambhulkar <pru34625@adobe.com> Date: Wed, 11 Sep 2024 14:03:50 +0530 Subject: [PATCH 166/460] AC_12922:: Remove TinyMCE 5 from Adobe commerce --- composer.json | 4 +- .../_files/testFromClone/composer.json | 6 +- .../testFromCreateProject/composer.lock | 44 +- .../_files/testSkeleton/composer.lock | 44 +- .../Model/Plugin/Resolver/CacheTestOld.php | 242 + .../Model/_files/testSkeleton/composer.lock | 8 +- .../App/Test/Unit/_files/test.composer.json | 6 +- lib/web/tiny_mce_5/icons/default/icons.min.js | 1 - lib/web/tiny_mce_5/jquery.tinymce.min.js | 91 - lib/web/tiny_mce_5/langs/README.md | 3 - lib/web/tiny_mce_5/license.txt | 504 - .../tiny_mce_5/plugins/advlist/plugin.min.js | 9 - .../tiny_mce_5/plugins/anchor/plugin.min.js | 9 - .../tiny_mce_5/plugins/autolink/plugin.min.js | 9 - .../plugins/autoresize/plugin.min.js | 9 - .../tiny_mce_5/plugins/autosave/plugin.min.js | 9 - .../tiny_mce_5/plugins/bbcode/plugin.min.js | 9 - .../tiny_mce_5/plugins/charmap/plugin.min.js | 9 - lib/web/tiny_mce_5/plugins/code/plugin.min.js | 9 - .../plugins/codesample/plugin.min.js | 9 - .../plugins/colorpicker/plugin.min.js | 9 - .../plugins/contextmenu/plugin.min.js | 9 - .../plugins/directionality/plugin.min.js | 9 - .../plugins/emoticons/js/emojiimages.js | 9424 ----------------- .../plugins/emoticons/js/emojiimages.min.js | 3 - .../tiny_mce_5/plugins/emoticons/js/emojis.js | 9423 ---------------- .../plugins/emoticons/js/emojis.min.js | 2 - .../plugins/emoticons/plugin.min.js | 9 - .../tiny_mce_5/plugins/fullpage/plugin.min.js | 9 - .../plugins/fullscreen/plugin.min.js | 9 - lib/web/tiny_mce_5/plugins/help/plugin.min.js | 9 - lib/web/tiny_mce_5/plugins/hr/plugin.min.js | 9 - .../tiny_mce_5/plugins/image/plugin.min.js | 9 - .../plugins/imagetools/plugin.min.js | 9 - .../plugins/importcss/plugin.min.js | 9 - .../plugins/insertdatetime/plugin.min.js | 9 - .../plugins/legacyoutput/plugin.min.js | 9 - lib/web/tiny_mce_5/plugins/link/plugin.min.js | 9 - .../tiny_mce_5/plugins/lists/plugin.min.js | 9 - .../tiny_mce_5/plugins/media/plugin.min.js | 9 - .../plugins/nonbreaking/plugin.min.js | 9 - .../plugins/noneditable/plugin.min.js | 9 - .../plugins/pagebreak/plugin.min.js | 9 - .../tiny_mce_5/plugins/paste/plugin.min.js | 9 - .../tiny_mce_5/plugins/preview/plugin.min.js | 9 - .../tiny_mce_5/plugins/print/plugin.min.js | 9 - .../plugins/quickbars/plugin.min.js | 9 - lib/web/tiny_mce_5/plugins/save/plugin.min.js | 9 - .../plugins/searchreplace/plugin.min.js | 9 - .../plugins/spellchecker/plugin.min.js | 9 - .../tiny_mce_5/plugins/tabfocus/plugin.min.js | 9 - .../tiny_mce_5/plugins/table/plugin.min.js | 9 - .../tiny_mce_5/plugins/template/plugin.min.js | 9 - .../plugins/textcolor/plugin.min.js | 9 - .../plugins/textpattern/plugin.min.js | 9 - lib/web/tiny_mce_5/plugins/toc/plugin.min.js | 9 - .../plugins/visualblocks/plugin.min.js | 9 - .../plugins/visualchars/plugin.min.js | 9 - .../plugins/wordcount/plugin.min.js | 9 - .../skins/content/dark/content.min.css | 7 - .../skins/content/default/content.min.css | 7 - .../skins/content/document/content.min.css | 7 - .../skins/content/writer/content.min.css | 7 - .../ui/oxide-dark/content.inline.min.css | 7 - .../skins/ui/oxide-dark/content.min.css | 7 - .../ui/oxide-dark/content.mobile.min.css | 7 - .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 4624 -> 0 bytes .../skins/ui/oxide-dark/skin.min.css | 7 - .../skins/ui/oxide-dark/skin.mobile.min.css | 7 - .../ui/oxide-dark/skin.shadowdom.min.css | 7 - .../skins/ui/oxide/content.inline.min.css | 7 - .../tiny_mce_5/skins/ui/oxide/content.min.css | 7 - .../skins/ui/oxide/content.mobile.min.css | 7 - .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin 4624 -> 0 bytes .../tiny_mce_5/skins/ui/oxide/skin.min.css | 7 - .../skins/ui/oxide/skin.mobile.min.css | 7 - .../skins/ui/oxide/skin.shadowdom.min.css | 7 - lib/web/tiny_mce_5/themes/mobile/theme.min.js | 9 - lib/web/tiny_mce_5/themes/silver/theme.min.js | 9 - lib/web/tiny_mce_5/tinymce.d.ts | 3036 ------ lib/web/tiny_mce_5/tinymce.min.js | 9 - 81 files changed, 250 insertions(+), 23126 deletions(-) create mode 100644 dev/tests/integration/testsuite/Magento/GraphQlResolverCache/Model/Plugin/Resolver/CacheTestOld.php delete mode 100644 lib/web/tiny_mce_5/icons/default/icons.min.js delete mode 100644 lib/web/tiny_mce_5/jquery.tinymce.min.js delete mode 100644 lib/web/tiny_mce_5/langs/README.md delete mode 100644 lib/web/tiny_mce_5/license.txt delete mode 100644 lib/web/tiny_mce_5/plugins/advlist/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/anchor/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/autolink/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/autoresize/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/autosave/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/bbcode/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/charmap/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/code/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/codesample/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/colorpicker/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/contextmenu/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/directionality/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.js delete mode 100644 lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/emoticons/js/emojis.js delete mode 100644 lib/web/tiny_mce_5/plugins/emoticons/js/emojis.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/emoticons/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/fullpage/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/fullscreen/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/help/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/hr/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/image/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/imagetools/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/importcss/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/insertdatetime/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/legacyoutput/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/link/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/lists/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/media/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/nonbreaking/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/noneditable/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/pagebreak/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/paste/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/preview/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/print/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/quickbars/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/save/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/searchreplace/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/spellchecker/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/tabfocus/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/table/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/template/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/textcolor/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/textpattern/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/toc/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/visualblocks/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/visualchars/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/plugins/wordcount/plugin.min.js delete mode 100644 lib/web/tiny_mce_5/skins/content/dark/content.min.css delete mode 100644 lib/web/tiny_mce_5/skins/content/default/content.min.css delete mode 100644 lib/web/tiny_mce_5/skins/content/document/content.min.css delete mode 100644 lib/web/tiny_mce_5/skins/content/writer/content.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide-dark/content.inline.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide-dark/content.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide-dark/content.mobile.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide-dark/fonts/tinymce-mobile.woff delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.mobile.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.shadowdom.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide/content.inline.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide/content.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide/content.mobile.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide/fonts/tinymce-mobile.woff delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide/skin.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide/skin.mobile.min.css delete mode 100644 lib/web/tiny_mce_5/skins/ui/oxide/skin.shadowdom.min.css delete mode 100644 lib/web/tiny_mce_5/themes/mobile/theme.min.js delete mode 100644 lib/web/tiny_mce_5/themes/silver/theme.min.js delete mode 100644 lib/web/tiny_mce_5/tinymce.d.ts delete mode 100644 lib/web/tiny_mce_5/tinymce.min.js diff --git a/composer.json b/composer.json index 82bf7696b1ec2..dbb3ea59208cd 100644 --- a/composer.json +++ b/composer.json @@ -343,7 +343,6 @@ "components/jquery": "1.11.0", "components/jqueryui": "1.10.4", "twbs/bootstrap": "3.1.0", - "tinymce/tinymce": "3.4.7", "magento/module-csp": "*", "magento/module-aws-s3": "*", "magento/module-remote-storage": "*", @@ -365,8 +364,7 @@ ], "twbs/bootstrap": [ "lib/web/jquery/jquery.tabs.js" - ], - "tinymce/tinymce": "lib/web/tiny_mce_5" + ] } }, "autoload": { diff --git a/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromClone/composer.json b/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromClone/composer.json index 076c0b3c772a4..9d29619da3bff 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromClone/composer.json +++ b/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromClone/composer.json @@ -160,8 +160,7 @@ "components/jquery": "1.11.0", "blueimp/jquery-file-upload": "5.6.14", "components/jqueryui": "1.10.4", - "twbs/bootstrap": "3.1.0", - "tinymce/tinymce": "3.4.7" + "twbs/bootstrap": "3.1.0" }, "extra": { "component_paths": { @@ -180,8 +179,7 @@ ], "twbs/bootstrap": [ "lib/web/jquery/jquery.tabs.js" - ], - "tinymce/tinymce": "lib/web/tiny_mce" + ] } }, "config": { diff --git a/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromCreateProject/composer.lock b/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromCreateProject/composer.lock index 031f9e605895d..6c1739028446a 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromCreateProject/composer.lock +++ b/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testFromCreateProject/composer.lock @@ -2317,7 +2317,6 @@ "blueimp/jquery-file-upload": "5.6.14", "components/jquery": "1.11.0", "components/jqueryui": "1.10.4", - "tinymce/tinymce": "3.4.7", "trentrichardson/jquery-timepicker-addon": "1.4.3", "twbs/bootstrap": "3.1.0" }, @@ -2331,8 +2330,7 @@ ], "blueimp/jquery-file-upload": "lib/web/jquery/fileUploader", "components/jqueryui": "lib/web/jquery/jquery-ui.js", - "twbs/bootstrap": "lib/web/jquery/jquery.tabs.js", - "tinymce/tinymce": "lib/web/tiny_mce_5" + "twbs/bootstrap": "lib/web/jquery/jquery.tabs.js" }, "map": [ [ @@ -2663,10 +2661,6 @@ "lib/web/spacer.gif", "lib/web/spacer.gif" ], - [ - "lib/web/tiny_mce_5", - "lib/web/tiny_mce_5" - ], [ "lib/web/underscore.js", "lib/web/underscore.js" @@ -8678,41 +8672,6 @@ ], "description": "N/A" }, - { - "name": "magento/module-tinymce-3", - "version": "100.3.1", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-tinymce-3/magento-module-tinymce-3-100.3.1.0.zip", - "reference": null, - "shasum": "5153d30d5f5e5a8d99182a65dce142569f22861e" - }, - "require": { - "magento/framework": "102.0.*", - "magento/module-backend": "101.0.*", - "magento/module-ui": "101.1.*", - "magento/module-variable": "100.3.*", - "magento/module-widget": "101.1.*", - "php": "~8.1.0" - }, - "suggest": { - "magento/module-cms": "103.0.*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\Tinymce3\\": "" - } - }, - "license": [ - "OSL-3.0", - "AFL-3.0" - ], - "description": "N/A" - }, { "name": "magento/module-translation", "version": "100.3.1", @@ -9544,7 +9503,6 @@ "magento/module-tax-import-export": "100.3.1", "magento/module-theme": "101.0.1", "magento/module-theme-graph-ql": "100.3.0", - "magento/module-tinymce-3": "100.3.1", "magento/module-translation": "100.3.1", "magento/module-ui": "101.1.1", "magento/module-ups": "100.3.1", diff --git a/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testSkeleton/composer.lock b/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testSkeleton/composer.lock index fbc7923014cd1..ca26ce8c52112 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testSkeleton/composer.lock +++ b/dev/tests/integration/testsuite/Magento/Framework/Composer/_files/testSkeleton/composer.lock @@ -2317,7 +2317,6 @@ "blueimp/jquery-file-upload": "5.6.14", "components/jquery": "1.11.0", "components/jqueryui": "1.10.4", - "tinymce/tinymce": "3.4.7", "trentrichardson/jquery-timepicker-addon": "1.4.3", "twbs/bootstrap": "3.1.0" }, @@ -2331,8 +2330,7 @@ ], "blueimp/jquery-file-upload": "lib/web/jquery/fileUploader", "components/jqueryui": "lib/web/jquery/jquery-ui.js", - "twbs/bootstrap": "lib/web/jquery/jquery.tabs.js", - "tinymce/tinymce": "lib/web/tiny_mce_5" + "twbs/bootstrap": "lib/web/jquery/jquery.tabs.js" }, "map": [ [ @@ -2663,10 +2661,6 @@ "lib/web/spacer.gif", "lib/web/spacer.gif" ], - [ - "lib/web/tiny_mce_5", - "lib/web/tiny_mce_5" - ], [ "lib/web/underscore.js", "lib/web/underscore.js" @@ -8678,41 +8672,6 @@ ], "description": "N/A" }, - { - "name": "magento/module-tinymce-3", - "version": "100.3.1", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-tinymce-3/magento-module-tinymce-3-100.3.1.0.zip", - "reference": null, - "shasum": "5153d30d5f5e5a8d99182a65dce142569f22861e" - }, - "require": { - "magento/framework": "102.0.*", - "magento/module-backend": "101.0.*", - "magento/module-ui": "101.1.*", - "magento/module-variable": "100.3.*", - "magento/module-widget": "101.1.*", - "php": "~8.1.0" - }, - "suggest": { - "magento/module-cms": "103.0.*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\Tinymce3\\": "" - } - }, - "license": [ - "OSL-3.0", - "AFL-3.0" - ], - "description": "N/A" - }, { "name": "magento/module-translation", "version": "100.3.1", @@ -9544,7 +9503,6 @@ "magento/module-tax-import-export": "100.3.1", "magento/module-theme": "101.0.1", "magento/module-theme-graph-ql": "100.3.0", - "magento/module-tinymce-3": "100.3.1", "magento/module-translation": "100.3.1", "magento/module-ui": "101.1.1", "magento/module-ups": "100.3.1", diff --git a/dev/tests/integration/testsuite/Magento/GraphQlResolverCache/Model/Plugin/Resolver/CacheTestOld.php b/dev/tests/integration/testsuite/Magento/GraphQlResolverCache/Model/Plugin/Resolver/CacheTestOld.php new file mode 100644 index 0000000000000..f8f8d3bd013ab --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/GraphQlResolverCache/Model/Plugin/Resolver/CacheTestOld.php @@ -0,0 +1,242 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\GraphQlResolverCache\Model\Plugin\Resolver; + +use Magento\Framework\App\Cache\State as CacheState; +use Magento\GraphQl\Service\GraphQlRequest; +use Magento\GraphQlResolverCache\Model\Plugin\Resolver\Cache as CachePlugin; +use Magento\GraphQlResolverCache\Model\Resolver\Result\Cache\IdentityInterface; +use Magento\GraphQlResolverCache\Model\Resolver\Result\CacheKey\Calculator; +use Magento\GraphQlResolverCache\Model\Resolver\Result\CacheKey\GenericFactorProviderInterface; +use Magento\GraphQlResolverCache\Model\Resolver\Result\ResolverIdentityClassProvider; +use Magento\GraphQlResolverCache\Model\Resolver\Result\Type; +use Magento\StoreGraphQl\Model\Resolver\StoreConfigResolver; +use Magento\TestFramework\Helper\Bootstrap; +use Magento\TestFramework\Interception\PluginList; +use PHPUnit\Framework\TestCase; +use Psr\Log\LoggerInterface; + +/** + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class CacheTest extends TestCase +{ + /** + * @var \Magento\TestFramework\ObjectManager + */ + private $objectManager; + + /** + * @var GraphQlRequest + */ + private $graphQlRequest; + + /** + * @var CacheState + */ + private $cacheState; + + /** + * @var bool + */ + private $origCacheEnabled; + + /** + * @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject + */ + private $loggerMock; + + /** + * @var Type|\PHPUnit\Framework\MockObject\MockObject + */ + private $graphqlResolverCacheMock; + + /** + * @var Type + */ + private $graphQlResolverCache; + + /** + * @var GenericFactorProviderInterface|\PHPUnit\Framework\MockObject\MockObject + */ + private $keyFactorMock; + + /** + * @inheritdoc + */ + public function setUp(): void + { + $this->objectManager = Bootstrap::getObjectManager(); + $this->graphQlRequest = $this->objectManager->create(GraphQlRequest::class); + $this->cacheState = $this->objectManager->get(CacheState::class); + $this->origCacheEnabled = $this->cacheState->isEnabled(Type::TYPE_IDENTIFIER); + if (!$this->origCacheEnabled) { + $this->cacheState->setEnabled(Type::TYPE_IDENTIFIER, true); + $this->cacheState->persist(); + } + $this->graphQlResolverCache = $this->objectManager->get(Type::class); + $this->graphQlResolverCache->clean(); + } + + /** + * @inheritdoc + */ + public function tearDown(): void + { + $this->cacheState->setEnabled(Type::TYPE_IDENTIFIER, $this->origCacheEnabled); + $this->cacheState->persist(); + $this->graphQlResolverCache->clean(); + parent::tearDown(); + } + + /** + * @magentoAppArea graphql + */ + public function testCachingSkippedOnKeyCalculationFailure() + { + $this->preconfigureMocks(); + $this->configurePlugin(); + $this->keyFactorMock->expects($this->any()) + ->method('getFactorValue') + ->willThrowException(new \Exception("Test key factor exception")); + $this->graphqlResolverCacheMock->expects($this->never()) + ->method('load'); + $this->graphqlResolverCacheMock->expects($this->never()) + ->method('save'); + $this->graphQlRequest->send($this->getTestQuery()); + } + + /** + * @magentoAppArea graphql + */ + public function testCachingNotSkippedWhenKeysOk() + { + $this->preconfigureMocks(); + $this->configurePlugin(); + $this->loggerMock->expects($this->never())->method('warning'); + $this->graphqlResolverCacheMock->expects($this->once()) + ->method('load') + ->willReturn(false); + $this->graphqlResolverCacheMock->expects($this->once()) + ->method('save'); + $this->graphQlRequest->send($this->getTestQuery()); + } + + /** + * Configure mocks and object manager for test. + * + * @return void + */ + private function preconfigureMocks() + { + $this->loggerMock = $this->getMockBuilder(LoggerInterface::class) + ->disableOriginalConstructor() + ->onlyMethods(['warning']) + ->setMockClassName('CacheLoggerMockForTest') + ->getMockForAbstractClass(); + + $this->graphqlResolverCacheMock = $this->getMockBuilder(Type::class) + ->disableOriginalConstructor() + ->onlyMethods(['load', 'save']) + ->setMockClassName('GraphqlResolverCacheMockForTest') + ->getMock(); + + $this->keyFactorMock = $this->getMockBuilder(GenericFactorProviderInterface::class) + ->disableOriginalConstructor() + ->onlyMethods(['getFactorValue', 'getFactorName']) + ->setMockClassName('TestFailingKeyFactor') + ->getMock(); + + $this->objectManager->addSharedInstance($this->keyFactorMock, 'TestFailingKeyFactor'); + + $this->objectManager->configure( + [ + Calculator::class => [ + 'arguments' => [ + 'factorProviders' => [ + 'test_failing' => 'TestFailingKeyFactor' + ] + ] + ] + ] + ); + + $this->objectManager->configure( + [ + \Magento\GraphQlResolverCache\Model\Resolver\Result\CacheKey\Calculator\Provider::class => [ + 'arguments' => [ + 'factorProviders' => [ + \Magento\StoreGraphQl\Model\Resolver\StoreConfigResolver::class => [ + 'test_failing' => 'TestFailingKeyFactor' + ] + ] + ] + ] + ] + ); + + $identityProviderMock = $this->getMockBuilder(IdentityInterface::class) + ->disableOriginalConstructor() + ->onlyMethods(['getIdentities']) + ->setMockClassName('TestIdentityProvider') + ->getMock(); + + $identityProviderMock->expects($this->any()) + ->method('getIdentities') + ->willReturn(['test_identity']); + + $this->objectManager->addSharedInstance($identityProviderMock, 'TestIdentityProvider'); + + $this->objectManager->configure( + [ + ResolverIdentityClassProvider::class => [ + 'arguments' => [ + 'cacheableResolverClassNameIdentityMap' => [ + StoreConfigResolver::class => 'TestIdentityProvider' + ] + ] + ] + ] + ); + } + + private function getTestQuery() + { + return <<<QUERY +{ + storeConfig { + id, + code, + store_code, + store_name + } +} +QUERY; + } + + /** + * Reset plugin for the resolver. + * + * @return void + */ + private function configurePlugin() + { + // need to reset plugins list to inject new plugin with mocks as it is cached at runtime + /** @var PluginList $pluginList */ + $pluginList = $this->objectManager->get(PluginList::class); + $pluginList->reset(); + $this->objectManager->removeSharedInstance(CachePlugin::class); + $this->objectManager->addSharedInstance( + $this->objectManager->create(CachePlugin::class, [ + 'logger' => $this->loggerMock, + 'graphQlResolverCache' => $this->graphqlResolverCacheMock + ]), + CachePlugin::class + ); + } +} diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.lock b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.lock index b4e3de8dddcdb..5ff12bd40dee8 100644 --- a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.lock +++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.lock @@ -467,7 +467,6 @@ "components/jquery": "1.11.0", "components/jqueryui": "1.10.4", "linkorb/jsmin-php": "1.1.2", - "tinymce/tinymce": "3.4.7", "trentrichardson/jquery-timepicker-addon": "1.4.3", "twbs/bootstrap": "3.1.0" }, @@ -491,8 +490,7 @@ ], "twbs/bootstrap": [ "lib/web/jquery/jquery.tabs.js" - ], - "tinymce/tinymce": "lib/web/tiny_mce" + ] }, "map": [ [ @@ -607,10 +605,6 @@ "lib/web/mage", "lib/web/mage" ], - [ - "lib/web/tiny_mce", - "lib/web/tiny_mce" - ], [ ".htaccess.sample", ".htaccess.sample" diff --git a/lib/internal/Magento/Framework/App/Test/Unit/_files/test.composer.json b/lib/internal/Magento/Framework/App/Test/Unit/_files/test.composer.json index 279e496e66fd2..4bf260ba48601 100644 --- a/lib/internal/Magento/Framework/App/Test/Unit/_files/test.composer.json +++ b/lib/internal/Magento/Framework/App/Test/Unit/_files/test.composer.json @@ -21,8 +21,7 @@ "lusitanian/oauth": "~0.3 <=0.7.0" }, "replace": { - "magento/module-marketplace": "100.0.2", - "tinymce/tinymce": "3.4.7" + "magento/module-marketplace": "100.0.2" }, "extra": { "component_paths": { @@ -37,8 +36,7 @@ ], "twbs/bootstrap": [ "lib/web/jquery/jquery.tabs.js" - ], - "tinymce/tinymce": "lib/web/tiny_mce" + ] } }, "config": { diff --git a/lib/web/tiny_mce_5/icons/default/icons.min.js b/lib/web/tiny_mce_5/icons/default/icons.min.js deleted file mode 100644 index 2cf9ef86da30d..0000000000000 --- a/lib/web/tiny_mce_5/icons/default/icons.min.js +++ /dev/null @@ -1 +0,0 @@ -tinymce.IconManager.add("default",{icons:{"accessibility-check":'<svg width="24" height="24"><path d="M12 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 01-1-1v-5c0-.6-.4-1-1-1a1 1 0 00-1 1v5c0 .6-.4 1-1 1a1 1 0 01-1-1V9H4a1 1 0 110-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',"action-next":'<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 00-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 10-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',"action-prev":'<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 001.4-1.4L12 6.6l-7.7 7.7a1 1 0 001.4 1.4L12 9.4l6.3 6.3z"/></svg>',"align-center":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-justify":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-left":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-none":'<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 110-2h9.2zm4 0h.8a1 1 0 010 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h6.8zm4 0H19a1 1 0 010 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h4.4zm4 0H19a1 1 0 010 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 010-2h2zm4 0h8a1 1 0 010 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',"align-right":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"arrow-left":'<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 001.4-1V6a1 1 0 00-1.4-.9l-12 6a1 1 0 000 1.8z" fill-rule="evenodd"/></svg>',"arrow-right":'<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 015 18V6a1 1 0 011.4-.9l12 6a1 1 0 010 1.8z" fill-rule="evenodd"/></svg>',bold:'<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 01-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',bookmark:'<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 00-1 1z" fill-rule="nonzero"/></svg>',"border-style":'<svg width="24" height="24"><g fill-rule="evenodd"><rect width="18" height="2" x="3" y="6" rx="1"/><rect width="2.8" height="2" x="3" y="16" rx="1"/><rect width="2.8" height="2" x="6.8" y="16" rx="1"/><rect width="2.8" height="2" x="10.6" y="16" rx="1"/><rect width="2.8" height="2" x="14.4" y="16" rx="1"/><rect width="2.8" height="2" x="18.2" y="16" rx="1"/><rect width="8" height="2" x="3" y="11" rx="1"/><rect width="8" height="2" x="13" y="11" rx="1"/></g></svg>',"border-width":'<svg width="24" height="24"><g fill-rule="evenodd"><rect width="18" height="5" x="3" y="5" rx="1"/><rect width="18" height="3.5" x="3" y="11.5" rx="1"/><rect width="18" height="2" x="3" y="17" rx="1"/></g></svg>',brightness:'<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 01-.7-.3A1 1 0 0111 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3h-1a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 01-.7.3H5a1 1 0 01-.7-.3A1 1 0 014 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 01-.8.3 1 1 0 01-.6-.3l-.8-.7a1 1 0 01-.3-.8c0-.2.1-.5.3-.7a1 1 0 011.4 0zm-10-7l-.7-.8a1 1 0 01-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.8-.3zm10 0a1 1 0 01-.8.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 010 1.4l-.8.8a1 1 0 01-.6.3 1 1 0 01-.8-.3 1 1 0 01-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 013.7 2.4 4 4 0 010 3.2A4 4 0 0112 16a4 4 0 01-3.7-2.4 4 4 0 010-3.2A4 4 0 0112 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',browse:'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 11-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L13 13.4V20a1 1 0 01-2 0v-6.6z" fill-rule="nonzero"/></svg>',cancel:'<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 110 14.8 7.4 7.4 0 010-14.8zM12 3a9 9 0 100 18 9 9 0 000-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',"cell-background-color":'<svg width="24" height="24"><path d="M15.7 2l1.6 1.6-2.7 2.6 5.9 5.8c.7.7.7 1.7 0 2.4l-6.3 6.1a1.7 1.7 0 01-2.4 0l-6.3-6.1c-.7-.7-.7-1.7 0-2.4L15.7 2zM18 12l-4.5-4L9 12h9zM4 16s2 2.4 2 3.8C6 21 5.1 22 4 22s-2-1-2-2.2C2 18.4 4 16 4 16z"/></svg>',"cell-border-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M5 13v5h2v2H5a2 2 0 01-2-2v-5h2zm8-7V4h6a2 2 0 012 2h-8z" opacity=".2"/><path fill-rule="nonzero" d="M13 4v2H5v7H3V6c0-1.1.9-2 2-2h8zm-2.6 14.1l.1-.1.1.1.2.3.2.2.2.2c.4.6.8 1.2.8 1.7 0 .8-.7 1.5-1.5 1.5S9 21.3 9 20.5c0-.5.4-1.1.8-1.7l.2-.2.2-.2.2-.3z"/><path d="M13 11l-2 2H5v-2h6V6h2z"/><path fill-rule="nonzero" d="M18.4 8l1 1-1.8 1.9 4 4c.5.4.5 1.1 0 1.6l-4.3 4.2a1.2 1.2 0 01-1.6 0l-4.4-4.2c-.4-.5-.4-1.2 0-1.7l7-6.8zm1.6 7l-3-3-3 3h6z"/></g></svg>',"change-case":'<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 01-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 01-1 .7h-.2a.7.7 0 01-.7-1l4-12a1 1 0 012 0l4 12a.7.7 0 01-.8 1h-.2a1 1 0 01-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',"character-count":'<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 01-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 00-.5-.1 1 1 0 00-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 00-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 001.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 00-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 00-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 01-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 01-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',"checklist-rtl":'<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checklist:'<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8a1 1 0 010 2h-8a1 1 0 010-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checkmark:'<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 011.6 1.2l-8 12a1 1 0 01-1.5.1l-5-5a1 1 0 111.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',"chevron-down":'<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 010-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',"chevron-left":'<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 010-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',"chevron-right":'<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 010-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 010-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',"chevron-up":'<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 010-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',close:'<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 01-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 01-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 011.5-1.5l3.8 3.9 3.8-3.9a1 1 0 011.5 1.5z" fill-rule="evenodd"/></svg>',"code-sample":'<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 01-.8 2 2.8 2.8 0 01.8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 01-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 01.8-2 2.8 2.8 0 01-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 01-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 01-.5-.5V17a3 3 0 001-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',"color-levels":'<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0118 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 01-3.7 3 5.7 5.7 0 01-3.2 0A5.9 5.9 0 017.6 18a6.2 6.2 0 01-1.4-2.6 6.7 6.7 0 010-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 012.3-4A20 20 0 0112 4a26.4 26.4 0 013.2 3.4 18.2 18.2 0 012.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 00-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 01-1.3 3 5.3 5.3 0 01-2.3 1.5 4.9 4.9 0 01-2 .1 4.3 4.3 0 002.4.8 4 4 0 002-.6 4 4 0 001.5-1.5z" fill-rule="evenodd"/></svg>',"color-picker":'<svg width="24" height="24"><path d="M12 3a9 9 0 000 18 1.5 1.5 0 001.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 005-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z" fill-rule="nonzero"/></svg>',"color-swatch-remove-color":'<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',"color-swatch":'<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',"comment-add":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 010 2h-2v2a1 1 0 01-2 0v-2H9a1 1 0 010-2h2V8a1 1 0 012 0v2z"/></g></svg>',comment:'<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/></svg>',contrast:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-6 8a6 6 0 006 6V6a6 6 0 00-6 6z" fill-rule="evenodd"/></svg>',copy:'<svg width="24" height="24"><path d="M16 3H6a2 2 0 00-2 2v11h2V5h10V3zm1 4a2 2 0 012 2v10a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',crop:'<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 01-1-1v-2H7V9H5a1 1 0 110-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',"cut-column":'<svg width="24" height="24"><path fill-rule="evenodd" d="M7.2 4.5c.9 0 1.6.4 2.2 1A3.7 3.7 0 0110.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 012 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 017 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 00-.7.4v.1a2.8 2.8 0 00-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 00.8-.3 2.4 2.4 0 00.7-.7 2.5 2.5 0 00.3-.8 1.5 1.5 0 000-.8 1 1 0 00-.2-.4 1 1 0 00-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 00-.5.3 1 1 0 00-.2.5v.7a2.5 2.5 0 00.3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 000-.8 2.6 2.6 0 00-.3-.8A2.5 2.5 0 007.7 6l-.4-.1H7z"/></svg>',"cut-row":'<svg width="24" height="24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 00-.8.4 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3L9 18V18l.4-.4.2-.4.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2h-.5zm7 0H15a1 1 0 00-.4.3 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4a2.8 2.8 0 00.5.7h.1a2.8 2.8 0 00.8.6l.4.1h.7l.5-.2.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',cut:'<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 010 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2 1.6 1.6 0 00-.8 0 2.6 2.6 0 00-.8.3 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3 2.8 2.8 0 001-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3 1.5 1.5 0 00-.8 0 1 1 0 00-.4.2 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4l.3.4.3.4a2.8 2.8 0 00.8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',"document-properties":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',drag:'<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',"duplicate-column":'<svg width="24" height="24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',"duplicate-row":'<svg width="24" height="24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',duplicate:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7a2 2 0 012 2v2z"/><path d="M17 14h1a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1h-1a1 1 0 010-2h1v-1a1 1 0 012 0v1z"/></g></svg>',"edit-block":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 00-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',"edit-image":'<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 00-2-2H7v2h11v9zM6 17h15a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1H6a2 2 0 01-2-2V7H3a1 1 0 110-2h1V4a1 1 0 112 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',"embed-page":'<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0119 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 008 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 00-4 4.5h2.2zm-3.4 0a12 12 0 012.8-4 12 12 0 00-5 4h2.2z" fill-rule="nonzero"/></svg>',embed:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 010 .8l-5.6 4A.5.5 0 019 16V8a.5.5 0 01.8-.4z" fill-rule="nonzero"/></svg>',emoji:'<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 100 16 8 8 0 000-16zm0 14.5a6.5 6.5 0 110-13 6.5 6.5 0 010 13z" fill-rule="nonzero"/></svg>',export:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M14.4 3L18 7v1h-5V5H7v14h9a1 1 0 012 0c0 1-.8 2-1.9 2H7c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h7.5z"/><path d="M18.1 12c.5 0 .9.4.9 1 0 .5-.3 1-.8 1h-7.3c-.5 0-.9-.4-.9-1 0-.5.3-1 .8-1h7.3z"/><path d="M16.4 9.2a1 1 0 011.4.2l2.4 3.6-2.4 3.6a1 1 0 01-1.7-1v-.2l1.7-2.4-1.6-2.4a1 1 0 01.2-1.4z"/></g></svg>',fill:'<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 002.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 002-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',"flip-horizontally":'<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 00-2 2zm14-2v2h2a2 2 0 00-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 002-2h-2v2z" fill-rule="nonzero"/></svg>',"flip-vertically":'<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 00-2 2v3h2V6h10v3h2V6a2 2 0 00-2-2zm2 14h-2v2a2 2 0 002-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',"format-painter":'<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 00-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',format:'<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 010 2h-4v11a1 1 0 01-2 0V7H7a1 1 0 110-2h10z"/></svg>',fullscreen:'<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 110-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 11-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 111.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 110-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 110 1.7H5a.9.9 0 01-.9-.9v-4.4a.9.9 0 111.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 01-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 010 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',gallery:'<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 01-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 110-4 2 2 0 010 4zM4.5 4h15a.5.5 0 110 1h-15a.5.5 0 010-1zm2-2h11a.5.5 0 110 1h-11a.5.5 0 010-1z"/></svg>',gamma:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 00-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 01.6.5l.1.3a8.5 8.5 0 01.3.6l1.9 4.6 2-5.2a1 1 0 011-.6.5.5 0 01.5.6L13 14v2.8a.7.7 0 01-1.4 0z" fill-rule="nonzero"/></svg>',help:'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 00-6 9 6.3 6.3 0 001.4 2l1 1a6.3 6.3 0 003.6 1 6.5 6.5 0 006-9 6.3 6.3 0 00-1.4-2l-1-1a6.3 6.3 0 00-3.6-1zM12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4z"/><path d="M9.6 9.7a.7.7 0 01-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 00-.8.8.8.8 0 01-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',"highlight-bg-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 012.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',home:'<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',"horizontal-rule":'<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',"image-options":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',image:'<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 100-4 2 2 0 000 4z" fill-rule="nonzero"/></svg>',indent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',info:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',"insert-character":'<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 001.8-2.9 6.3 6.3 0 00-.1-4.1 5.8 5.8 0 00-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 00-3.9 1.8 6.3 6.3 0 00-1.3 6 6.2 6.2 0 001.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 014 11c0-1 .2-1.9.6-2.7A7 7 0 016.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 015.7 2 7 7 0 011.7 2.3 6 6 0 01.2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 01-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',"insert-time":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 100-14 7 7 0 000 14zm0 2a9 9 0 110-18 9 9 0 010 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 00-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',invert:'<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 01-3.1 1.9 6.1 6.1 0 01-5.5-1.6A5.8 5.8 0 016 14v-.3l.1-1.2A13.9 13.9 0 017.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 00.2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 00-3-4.2L12 6a26.1 26.1 0 00-2.2 2.5l-1-1a20.9 20.9 0 012.9-3.3L12 4l1 .8a22.2 22.2 0 014 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',italic:'<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',language:'<svg width="24" height="24"><path d="M12 3a9 9 0 110 18 9 9 0 010-18zm4.3 13.3c-.5 1-1.2 2-2 2.9a7.5 7.5 0 003.2-2.1l-.2-.2a6 6 0 00-1-.6zm-8.6 0c-.5.2-.9.5-1.2.8.9 1 2 1.7 3.2 2a10 10 0 01-2-2.8zm3.6-.8c-.8 0-1.6.1-2.2.3.5 1 1.2 1.9 2.1 2.7zm1.5 0v3c.9-.8 1.6-1.7 2.1-2.7-.6-.2-1.4-.3-2.1-.3zm-6-2.7H4.5c.2 1 .5 2.1 1 3h.3l1.3-1a10 10 0 01-.3-2zm12.7 0h-2.3c0 .7-.1 1.4-.3 2l1.6 1.1c.5-1 .9-2 1-3.1zm-3.8 0h-3V14c1 0 2 .1 2.7.4.2-.5.3-1 .3-1.6zm-4.4 0h-3l.3 1.6c.8-.3 1.7-.4 2.7-.4v-1.3zm-5.5-5c-.7 1-1.1 2.2-1.3 3.5h2.3c0-1 .2-1.8.5-2.6l-1.5-1zm2.9 1.4v.1c-.2.6-.4 1.3-.4 2h3V9.4c-1 0-1.8-.1-2.6-.3zm6.6 0h-.1l-2.4.3v1.8h3l-.5-2.1zm3-1.4l-.3.1-1.3.8c.3.8.5 1.6.5 2.6h2.3a7.5 7.5 0 00-1.3-3.5zm-9 0l2 .2V5.5a9 9 0 00-2 2.2zm3.5-2.3V8c.6 0 1.3 0 1.9-.2a9 9 0 00-2-2.3zm-3-.7h-.1c-1.1.4-2.1 1-3 1.8l1.2.7a10 10 0 011.9-2.5zm4.4 0l.1.1a10 10 0 011.8 2.4l1.1-.7a7.5 7.5 0 00-3-1.8z"/></svg>',"line-height":'<svg width="24" height="24"><path d="M21 5a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zM7 3.6l3.7 3.7a1 1 0 01-1.3 1.5h-.1L8 7.3v9.2l1.3-1.3a1 1 0 011.3 0h.1c.4.4.4 1 0 1.3v.1L7 20.4l-3.7-3.7a1 1 0 011.3-1.5h.1L6 16.7V7.4L4.7 8.7a1 1 0 01-1.3 0h-.1a1 1 0 010-1.3v-.1L7 3.6z"/></svg>',line:'<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',link:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2.1 2a2 2 0 102.7 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2-2a2 2 0 10-2.6-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',"list-bull-circle":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 26a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 36a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-default":'<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-square":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-num-default-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-default":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-lower-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',"list-num-lower-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',"list-num-upper-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',"list-num-upper-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',lock:'<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 00-.3-.7A1 1 0 0013 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7z" fill-rule="evenodd"/></svg>',ltr:'<svg width="24" height="24"><path d="M11 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 017.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',"more-drawer":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',"new-document":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',"new-tab":'<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',"non-breaking":'<svg width="24" height="24"><path d="M11 11H8a1 1 0 110-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 01-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',notice:'<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',"ordered-list-rtl":'<svg width="24" height="24"><path d="M6 17h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 110-2zm13-1v3.5a.5.5 0 11-1 0V5h-.5a.5.5 0 110-1H19zm-1 8.8l.2.2h1.3a.5.5 0 110 1h-1.6a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2h-1.3a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 010-1h1.2a.3.3 0 100-.6h-1.3a.4.4 0 110-.8h1.3a.3.3 0 000-.6h-1.2a.5.5 0 110-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',"ordered-list":'<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 110-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 01-.5-.5V5h-.5a.5.5 0 010-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2H4.5a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 010-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 110-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 110-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',orientation:'<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 010-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 11-4.3 16.9l1.5-1.5A7 7 0 1013 6h-1z" fill-rule="nonzero"/></svg>',outdent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm1.6-3.8a1 1 0 01-1.2 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 011.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',"page-break":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 01-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 01-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',paragraph:'<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z"/></svg>',"paste-column-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-column-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v2H4V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-text":'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',paste:'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',"permanent-pen":'<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 010-3L14 3l1 1-7.3 7.3a1 1 0 000 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 01-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',plus:'<svg width="24" height="24"><path d="M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 01.1 2H13v6a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H11V5c0-.6.4-1 1-1z"/></svg>',preferences:'<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 01-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 01-1.4 0l-1.5-1.2a6.2 6.2 0 01-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 01-1-.9l-.2-1.9a5.8 5.8 0 01-1.5-.6l-1.5 1.2a1 1 0 01-1.4 0l-.7-.7a1 1 0 010-1.4l1.2-1.5a6.2 6.2 0 01-.6-1.5l-1.9-.2a1 1 0 01-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 01.6-1.5L5.2 7.3a1 1 0 010-1.4l.7-.7a1 1 0 011.4 0l1.5 1.2a6.2 6.2 0 011.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 011.5.6l1.5-1.2a1 1 0 011.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 01.6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 100-6 3 3 0 000 6z" fill-rule="evenodd"/></svg>',preview:'<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 002.1-2.8 15.7 15.7 0 00-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 00-6.7 3.2A16.2 16.2 0 003.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 012.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 01-2.8-3.7 1 1 0 010-1zm12-3.3a2 2 0 102.7 2.6 4 4 0 11-2.6-2.6z" fill-rule="nonzero"/></svg>',print:'<svg width="24" height="24"><path d="M18 8H6a3 3 0 00-3 3v6h2v3h14v-3h2v-6a3 3 0 00-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',quote:'<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3z" fill-rule="nonzero"/></svg>',redo:'<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 11-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 111.4-1.4l5 5a1 1 0 010 1.4l-5 5a1 1 0 01-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',reload:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 011-1l5 .4a1 1 0 11-.2 2l-2.2-.2a7.8 7.8 0 008.4.2 7.5 7.5 0 003.5-6.4 1 1 0 112 0 9.5 9.5 0 01-4.5 8 9.9 9.9 0 01-10.2 0l.4 1.4a1 1 0 11-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 00-9.5-1 7.5 7.5 0 00-3.6 7 1 1 0 01-2 0 9.5 9.5 0 014.5-8.6 10 10 0 0110.9.3l-.3-1a1 1 0 012-.5l1.1 4.8a1 1 0 01-1 1.2l-5-.4a1 1 0 01-.9-1z"/></g></svg>',"remove-formatting":'<svg width="24" height="24"><path d="M13.2 6a1 1 0 010 .2l-2.6 10a1 1 0 01-1 .8h-.2a.8.8 0 01-.8-1l2.6-10H8a1 1 0 110-2h9a1 1 0 010 2h-3.8zM5 18h7a1 1 0 010 2H5a1 1 0 010-2zm13 1.5L16.5 18 15 19.5a.7.7 0 01-1-1l1.5-1.5-1.5-1.5a.7.7 0 011-1l1.5 1.5 1.5-1.5a.7.7 0 011 1L17.5 17l1.5 1.5a.7.7 0 01-1 1z" fill-rule="evenodd"/></svg>',remove:'<svg width="24" height="24"><path d="M16 7h3a1 1 0 010 2h-1v9a3 3 0 01-3 3H9a3 3 0 01-3-3V9H5a1 1 0 110-2h3V6a3 3 0 013-3h2a3 3 0 013 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 00-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 012 0v4a1 1 0 01-2 0v-4zm4 0a1 1 0 012 0v4a1 1 0 01-2 0v-4z" fill-rule="nonzero"/></svg>',"resize-handle":'<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 119 2l-7 7A.5.5 0 111 8l7-7zM8.1 5.1A.5.5 0 119 6l-3 3A.5.5 0 115 8l3-3z"/></g></svg>',resize:'<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-6a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3A1 1 0 014 11V5z" fill-rule="evenodd"/></svg>',"restore-draft":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></g></svg>',"rotate-left":'<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></svg>',"rotate-right":'<svg width="24" height="24"><path d="M20 8V5a1 1 0 012 0v6c0 .6-.4 1-1 1h-6a1 1 0 010-2h4.3L16 7A7.2 7.2 0 007.7 6a7 7 0 003 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 011.4 1.5A9.2 9.2 0 012.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',rtl:'<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 014.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L8 5zm12 11.2a1 1 0 11-1 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 111 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',save:'<svg width="24" height="24"><path d="M5 16h14a2 2 0 012 2v2a2 2 0 01-2 2H5a2 2 0 01-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 10-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 10-1.4-1.4L13 11.6V4a1 1 0 00-2 0v7.6z" fill-rule="nonzero"/></svg>',search:'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12z" fill-rule="nonzero"/></svg>',"select-all":'<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 00-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 00-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 002-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',selected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 00-1 1L9.6 17 18 8.6a.7.7 0 000-1 .7.7 0 00-1 0l-7.4 7.3z"/></svg>',settings:'<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V8H5a1 1 0 110-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V13H5a1 1 0 010-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V18H5a1 1 0 010-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',sharpen:'<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',sourcecode:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 010-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 00-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',"spell-check":'<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 01-.7-.3 1 1 0 01-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',"strike-through":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 017 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 010 2H5a1 1 0 010-2z" fill-rule="nonzero"/></g></svg>',subscript:'<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 00-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 01-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',superscript:'<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',"table-caption":'<svg width="24" height="24"><g fill-rule="nonzero"><rect width="12" height="2" x="3" y="4" rx="1"/><path d="M19 8a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2v-8c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></g></svg>',"table-cell-classes":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M13 4v9H3V6c0-1.1.9-2 2-2h8zm-2 2H5v5h6V6z"/><path fill-rule="nonzero" d="M13 4h6a2 2 0 012 2v7h-8v-2h6V6h-6V4z" opacity=".2"/><path d="M18 20l-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3 .2-2.3 2 .7 3z"/><path fill-rule="nonzero" d="M3 13v5c0 1.1.9 2 2 2h8v-7h-2v5H5v-5H3z" opacity=".2"/></g></svg>',"table-cell-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',"table-cell-select-all":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z" opacity=".2"/></g></svg>',"table-cell-select-inner":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z" opacity=".2"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z"/></g></svg>',"table-classes":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v7h-8v7H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8-7h-6v5h6V6zm-8 0H5v5h6V6z"/><path d="M18 20l-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3 .2-2.3 2 .7 3z"/></g></svg>',"table-delete-column":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5l1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',"table-delete-row":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8l1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',"table-delete-table":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="M14.4 8.6l1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></g></svg>',"table-insert-column-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M20 4c.6 0 1 .4 1 1v2a1 1 0 01-2 0V6h-8v12h8v-1a1 1 0 012 0v2c0 .5-.4 1-.9 1H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H17v2a1 1 0 01-2 .1V13h-2a1 1 0 01-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',"table-insert-column-before":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H4a1 1 0 01-1-1v-2a1 1 0 012 0v1h8V6H5v1a1 1 0 11-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H9v2a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',"table-insert-row-above":'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4a1 1 0 110 2H5v6h14V6h-1a1 1 0 010-2h2c.6 0 1 .4 1 1v13a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 010 2h-2v2a1 1 0 01-2 .1V8H9a1 1 0 010-2h2V4c0-.6.4-1 1-1z"/></svg>',"table-insert-row-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 01.1 2H13v2a1 1 0 01-2 .1V18H9a1 1 0 01-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 010-2h1v-6H5v6h1a1 1 0 010 2H4a1 1 0 01-1-1V6c0-1.1.9-2 2-2h14a2 2 0 012 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',"table-left-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 9h-4v5h4v-5zm-6 0H9v5h4v-5zm0-7H9v5h4V6zm6 0h-4v5h4V6z"/></svg>',"table-merge-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15.5V18h3v-2.5H5zm14-5h-9V18h9v-7.5zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6zm-8 7.5h3v-3H5v3z"/></svg>',"table-row-numbering-rtl":'<svg width="24" height="24"><path d="M6 4a2 2 0 00-2 2v13c0 1.1.9 2 2 2h12a2 2 0 002-2V6a2 2 0 00-2-2H6zm0 12h8v3H6v-3zm11 0c.6 0 1 .4 1 1v1a1 1 0 01-2 0v-1c0-.6.4-1 1-1zM6 11h8v3H6v-3zm11 0c.6 0 1 .4 1 1v1a1 1 0 01-2 0v-1c0-.6.4-1 1-1zM6 6h8v3H6V6zm11 0c.6 0 1 .4 1 1v1a1 1 0 11-2 0V7c0-.6.4-1 1-1z"/></svg>',"table-row-numbering":'<svg width="24" height="24"><path d="M18 4a2 2 0 012 2v13a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2h12zm0 12h-8v3h8v-3zM7 16a1 1 0 00-1 1v1a1 1 0 002 0v-1c0-.6-.4-1-1-1zm11-5h-8v3h8v-3zM7 11a1 1 0 00-1 1v1a1 1 0 002 0v-1c0-.6-.4-1-1-1zm11-5h-8v3h8V6zM7 6a1 1 0 00-1 1v1a1 1 0 102 0V7c0-.6-.4-1-1-1z"/></svg>',"table-row-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',"table-split-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1l1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',"table-top-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 11H5v3h6v-3zm8 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></svg>',table:'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 14v4h6v-4H5zm14 0h-6v4h6v-4zm0-6h-6v4h6V8zM5 12h6V8H5v4z"/></svg>',template:'<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 116 0v4h4a2 2 0 012 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 10-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',"temporary-placeholder":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 111 0V6H15v1.6a8 8 0 11-6 0zm-2.6 5.3a.5.5 0 00.3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 013.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 00-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',"text-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',toc:'<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',translate:'<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 010-1l3.1-3A12.4 12.4 0 016.7 9H8a10.1 10.1 0 001.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 110-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 01-1 2.4 13.5 13.5 0 01-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 01-.4.7 1 1 0 01-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 01-1 .7.5.5 0 01-.4-.7l2.7-7.4a1 1 0 012 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',underline:'<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 01-.4 1.8l-1 1.4a5.3 5.3 0 01-5.5 1 5 5 0 01-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 01-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 002.2.8 3.4 3.4 0 002.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',undo:'<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 01-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 11-1.4 1.4l-5-5a1 1 0 010-1.4l5-5a1 1 0 011.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',unlink:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2 2a2 2 0 102.6 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2.1-2a2 2 0 10-2.7-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2zM7.6 6.3a.8.8 0 01-1 1.1L3.3 4.2a.7.7 0 111-1l3.2 3.1zM5.1 8.6a.8.8 0 010 1.5H3a.8.8 0 010-1.5H5zm5-3.5a.8.8 0 01-1.5 0V3a.8.8 0 011.5 0V5zm6 11.8a.8.8 0 011-1l3.2 3.2a.8.8 0 01-1 1L16 17zm-2.2 2a.8.8 0 011.5 0V21a.8.8 0 01-1.5 0V19zm5-3.5a.7.7 0 110-1.5H21a.8.8 0 010 1.5H19z" fill-rule="nonzero"/></svg>',unlock:'<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 00-.3-.7A1 1 0 0016 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',"unordered-list":'<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',unselected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 00-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',upload:'<svg width="24" height="24"><path d="M18 19v-2a1 1 0 012 0v3c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-3a1 1 0 012 0v2h12zM11 6.4L8.7 8.7a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L13 6.4V16a1 1 0 01-2 0V6.4z" fill-rule="nonzero"/></svg>',user:'<svg width="24" height="24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm-8.7-5.3a11 11 0 0017.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',"vertical-align":'<svg width="24" height="24"><g fill-rule="nonzero"><rect width="18" height="2" x="3" y="11" rx="1"/><path d="M12 2c.6 0 1 .4 1 1v4l2-1.3a1 1 0 011.2 1.5l-.1.1-4.1 3-4-3a1 1 0 011-1.7l2 1.5V3c0-.6.4-1 1-1zm0 11.8l4 2.9a1 1 0 01-1 1.7l-2-1.5V21c0 .5-.4 1-.9 1H12a1 1 0 01-1-1v-4l-2 1.3a1 1 0 01-1.2-.1l-.1-.1a1 1 0 01.1-1.3l.1-.1 4.1-3z"/></g></svg>',visualblocks:'<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 01-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 01-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 010 2v7a1 1 0 01-2 0V9h-1v7a1 1 0 01-2 0v-4a2.5 2.5 0 01-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 012 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',visualchars:'<svg width="24" height="24"><path d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z" fill-rule="evenodd"/></svg>',warning:'<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',"zoom-in":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-1-9a1 1 0 012 0v6a1 1 0 01-2 0V8zm-2 4a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',"zoom-out":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-3-5a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>'}}); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/jquery.tinymce.min.js b/lib/web/tiny_mce_5/jquery.tinymce.min.js deleted file mode 100644 index 46e24d2684c7c..0000000000000 --- a/lib/web/tiny_mce_5/jquery.tinymce.min.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -/** - * Jquery integration plugin. - * - * @class tinymce.core.JqueryIntegration - * @private - */ -!function(){function f(){ -// Reference to tinymce needs to be lazily evaluated since tinymce -// might be loaded through the compressor or other means -return d.tinymce}var p,c,u,s=[],d="undefined"!=typeof global?global:window,m=d.jQuery;m.fn.tinymce=function(o){var e,t,i,n,l=this,r=""; -// No match then just ignore the call -return l.length? -// Get editor instance -o?(l.css("visibility","hidden"), -// Load TinyMCE on demand, if we need to -d.tinymce||c||!(e=o.script_url)? -// Delay the init call until tinymce is loaded -1===c?s.push(a):a():(c=1,t=e.substring(0,e.lastIndexOf("/")), -// Check if it's a dev/src version they want to load then -// make sure that all plugins, themes etc are loaded in source mode as well --1!=e.indexOf(".min")&&(r=".min"), -// Setup tinyMCEPreInit object this will later be used by the TinyMCE -// core script to locate other resources like CSS files, dialogs etc -// You can also predefined a tinyMCEPreInit object and then it will use that instead -d.tinymce=d.tinyMCEPreInit||{base:t,suffix:r}, -// url contains gzip then we assume it's a compressor --1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""), -// Check if compressor script is already loaded otherwise setup a basic one -d.tinyMCE_GZ||(d.tinyMCE_GZ={start:function(){function n(e){f().ScriptLoader.markDone(f().baseURI.toAbsolute(e))} -// Add core languages -n("langs/"+i+".js"), -// Add themes with languages -n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"), -// Add plugins with languages -m.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}})),(n=document.createElement("script")).type="text/javascript",n.onload=n.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(n.readyState)||(f().dom.Event.domLoaded=1,c=2, -// Execute callback after mainscript has been loaded and before the initialization occurs -o.script_loaded&&o.script_loaded(),a(),m.each(s,function(e,t){t()}))},n.src=e,document.body.appendChild(n)),l):f()?f().get(l[0].id):null:l;function a(){var a=[],c=0; -// Apply patches to the jQuery object, only once -u||(v(),u=!0), -// Create an editor instance for each matched node -l.each(function(e,t){var n,i=t.id,r=o.oninit; -// Generate unique id for target element if needed -i||(t.id=i=f().DOM.uniqueId()), -// Only init the editor once -f().get(i)||( -// Create editor instance and render it -n=f().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""), -// Run this if the oninit setting is defined -// this logic will fire the oninit callback ones each -// matched editor instance is initialized -r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:f().resolve(t.replace(/\.\w+$/,"")),t=f().resolve(t)), -// Call the oninit function with the object -t.apply(e||f(),a))}))}), -// Render the editor instances in a separate loop since we -// need to have the full editors array used in the onInit calls -m.each(a,function(e,t){t.render()})}}, -// Add :tinymce pseudo selector this will select elements that has been converted into editor instances -// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements. -m.extend(m.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in d&&(t=f().get(e.id))&&t.editorManager===f())}}); -// This function patches internal jQuery functions so that if -// you for example remove an div element containing an editor it's -// automatically destroyed by the TinyMCE API -var v=function(){function r(e){ -// If the function is remove -"remove"===e&&this.each(function(e,t){var n=u(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=f().get(t.id.replace(/_parent$/,""));n&&n.remove()})}function o(i){var e,t=this; -// Handle set value -/*jshint eqnull:true */if(null!=i)r.call(t), -// Saves the contents before get/set value of textarea/div -t.each(function(e,t){var n;(n=f().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=f().get(t[0].id)))return e.getContent()}function l(e){return e&&e.length&&d.tinymce&&e.is(":tinymce")} -// Removes any child editor instances by looking for editor wrapper elements -var u=function(e){var t=null;return e&&e.id&&d.tinymce?f().get(e.id):t},s={}; -// Loads or saves contents from/to textarea if the value -// argument is defined it will set the TinyMCE internal contents -// Patch some setter/getter functions these will -// now be able to set/get the contents of editor instances for -// example $('#editorid').html('Content'); will update the TinyMCE iframe instance -m.each(["text","html","val"],function(e,t){var a=s[t]=m.fn[t],c="text"===t;m.fn[t]=function(e){var t=this;if(!l(t))return a.apply(t,arguments);if(e!==p)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining -var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=u(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(m(t),r)}),i}}), -// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe -m.each(["append","prepend"],function(e,t){var n=s[t]=m.fn[t],r="prepend"===t;m.fn[t]=function(i){var e=this;return l(e)?i!==p?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=u(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}), -// Makes sure that the editor instance gets properly destroyed when the parent element is removed -m.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=m.fn[t];m.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=m.fn.attr, -// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents -m.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!l(n))return s.attr.apply(n,i);if(t!==p)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining -var r=n[0],a=u(r);return a?a.getContent({save:!0}):s.attr.apply(m(r),i)}}}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/langs/README.md b/lib/web/tiny_mce_5/langs/README.md deleted file mode 100644 index a52bf03f9a3ae..0000000000000 --- a/lib/web/tiny_mce_5/langs/README.md +++ /dev/null @@ -1,3 +0,0 @@ -This is where language files should be placed. - -Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ diff --git a/lib/web/tiny_mce_5/license.txt b/lib/web/tiny_mce_5/license.txt deleted file mode 100644 index b17fc90494cf7..0000000000000 --- a/lib/web/tiny_mce_5/license.txt +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/lib/web/tiny_mce_5/plugins/advlist/plugin.min.js b/lib/web/tiny_mce_5/plugins/advlist/plugin.min.js deleted file mode 100644 index 1040beb3d25e3..0000000000000 --- a/lib/web/tiny_mce_5/plugins/advlist/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function f(t,e,n){t.execCommand("UL"===e?"InsertUnorderedList":"InsertOrderedList",!1,!1===n?null:{"list-style-type":n})}function i(t){return function(){return t}}function t(t){return t}function e(){return s}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=i(!1),l=i(!0),s={fold:function(t,e){return t()},isSome:u,isNone:l,getOr:t,getOrThunk:r,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:r,map:e,each:function(){},bind:e,exists:u,forall:l,filter:function(){return s},toArray:function(){return[]},toString:i("none()")};function r(t){return t()}function d(t){return t&&/^(TH|TD)$/.test(t.nodeName)}function m(c,a){return function(s){function t(t){var e,n,r,o,i,u,l;s.setActive((e=c,r=a,i=-1!==(o=function(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n;return-1}((n=t).parents,d))?n.parents.slice(0,o):n.parents,0<(u=g.grep(i,(l=e,function(t){return t&&/^(OL|UL|DL)$/.test(t.nodeName)&&(e=t,l.$.contains(l.getBody(),e));var e}))).length&&u[0].nodeName===r))}return c.on("NodeChange",t),function(){return c.off("NodeChange",t)}}}function c(t,e,n,r,o,i){var u,l,s,c,a,d;1<i.length?(c=r,a=o,d=i,(s=t).ui.registry.addSplitButton(e,{tooltip:n,icon:"OL"===a?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(t){t(g.map(d,function(t){return{type:"choiceitem",value:"default"===t?"":t,icon:"list-"+("OL"===a?"num":"bull")+"-"+("disc"===t||"decimal"===t?"default":t),text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()})}}))},onAction:function(){return s.execCommand(c)},onItemAction:function(t,e){f(s,a,e)},select:function(e){var t,n=(t=s).dom.getParent(t.selection.getNode(),"ol,ul"),r=t.dom.getStyle(n,"listStyleType");return p(r).map(function(t){return e===t}).getOr(!1)},onSetup:m(s,a)})):(l=r,(u=t).ui.registry.addToggleButton(e,{active:!1,tooltip:n,icon:"OL"===o?"ordered-list":"unordered-list",onSetup:m(u,o),onAction:function(){return u.execCommand(l)}}))}var a=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},isSome:l,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return a(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:s},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},p=function(t){return null==t?s:a(t)};n.add("advlist",function(t){var n,e,r,o;t.hasPlugin("lists")?(c(e=t,"numlist","Numbered list","InsertOrderedList","OL",(r=e.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"))?r.split(/[ ,]/):[]),c(e,"bullist","Bullet list","InsertUnorderedList","UL",(o=e.getParam("advlist_bullet_styles","default,circle,square"))?o.split(/[ ,]/):[]),(n=t).addCommand("ApplyUnorderedListStyle",function(t,e){f(n,"UL",e["list-style-type"])}),n.addCommand("ApplyOrderedListStyle",function(t,e){f(n,"OL",e["list-style-type"])})):console.error("Please use the Lists plugin together with the Advanced List plugin.")})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/anchor/plugin.min.js b/lib/web/tiny_mce_5/plugins/anchor/plugin.min.js deleted file mode 100644 index 1b5463870710e..0000000000000 --- a/lib/web/tiny_mce_5/plugins/anchor/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function a(e){return e.getAttribute("id")||e.getAttribute("name")||""}function c(e){return e&&"a"===e.nodeName.toLowerCase()&&!e.getAttribute("href")&&""!==a(e)}function d(e){return e.dom.getParent(e.selection.getStart(),l)}function r(e,t){var o,a,n,r,i,l=d(e);l?(n=e,r=t,(i=l).removeAttribute("name"),i.id=r,n.addVisual(),n.undoManager.add()):(a=t,(o=e).undoManager.transact(function(){var e,n;o.getParam("allow_html_in_named_anchor",!1,"boolean")||o.selection.collapse(!0),o.selection.isCollapsed()?o.insertContent(o.dom.createHTML("a",{id:a})):(n=(e=o).dom,u(n).walk(e.selection.getRng(),function(e){s.each(e,function(e){var t;c(t=e)&&!t.firstChild&&n.remove(e,!1)})}),o.formatter.remove("namedAnchor",null,null,!0),o.formatter.apply("namedAnchor",{value:a}),o.addVisual())})),e.focus()}function i(r){return function(e){for(var t,n=0;n<e.length;n++){var o=e[n],a=void 0;!(a=t=o)||a.attr("href")||!a.attr("id")&&!a.attr("name")||t.firstChild||o.attr("contenteditable",r)}}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),s=tinymce.util.Tools.resolve("tinymce.util.Tools"),l="a:not([href])";e.add("anchor",function(e){var t,n,o;(t=e).on("PreInit",function(){t.parser.addNodeFilter("a",i("false")),t.serializer.addNodeFilter("a",i(null))}),(n=e).addCommand("mceAnchor",function(){var o,e,t;t=(e=d(o=n))?a(e):"",o.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(e){var t=o,n=e.getData().id;(/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(n)?(r(t,n),0):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))||e.close()}})}),(o=e).ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return o.execCommand("mceAnchor")},onSetup:function(e){return o.selection.selectorChangedWithUnbind("a:not([href])",e.setActive).unbind}}),o.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return o.execCommand("mceAnchor")}}),e.on("PreInit",function(){e.formatter.register("namedAnchor",{inline:"a",selector:l,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:c})})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/autolink/plugin.min.js b/lib/web/tiny_mce_5/plugins/autolink/plugin.min.js deleted file mode 100644 index ea4cfab6cd750..0000000000000 --- a/lib/web/tiny_mce_5/plugins/autolink/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function k(e){return/^[(\[{ \u00a0]$/.test(e)}function w(e){return 3===e.nodeType}function i(e){return 1===e.nodeType}function o(e,t){var n;return t<0&&(t=0),!w(e)||(n=e.data.length)<t&&(t=n),t}function y(e,t,n){!i(t)||t.hasChildNodes()?e.setStart(t,o(t,n)):e.setStartBefore(t)}function v(e,t,n){!i(t)||t.hasChildNodes()?e.setEnd(t,o(t,n)):e.setEndAfter(t)}function r(e,t){var n,i,o,r,a,f=e.getParam("autolink_pattern",A),s=e.getParam("default_link_target",!1);if(null===e.dom.getParent(e.selection.getNode(),"a[href]")){var d=e.selection.getRng().cloneRange();if(d.startOffset<5){if(!(r=d.endContainer.previousSibling)){if(!d.endContainer.firstChild||!d.endContainer.firstChild.nextSibling)return;r=d.endContainer.firstChild.nextSibling}if(y(d,r,a=r.length),v(d,r,a),d.endOffset<5)return;n=d.endOffset,i=r}else{if(!w(i=d.endContainer)&&i.firstChild){for(;!w(i)&&i.firstChild;)i=i.firstChild;w(i)&&(y(d,i,0),v(d,i,i.nodeValue.length))}n=1===d.endOffset?2:d.endOffset-1-t}for(var l=n;y(d,i,2<=n?n-2:0),v(d,i,1<=n?n-1:0),--n,!k(d.toString())&&0<=n-2;);k(d.toString())?(y(d,i,n),v(d,i,l),n+=1):(0===d.startOffset?y(d,i,0):y(d,i,n),v(d,i,l)),u=d.toString(),/[?!,.;:]/.test(u.charAt(u.length-1))&&v(d,i,l-1);var u,c,g,h,C=(u=d.toString().trim()).match(f),m=e.getParam("link_default_protocol","http","string");C&&((g=c=C[0]).length>=(h="www.").length&&g.substr(0,0+h.length)===h?c=m+"://"+c:-1===c.indexOf("@")||/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(c)||(c="mailto:"+c),o=e.selection.getBookmark(),e.selection.setRng(d),e.execCommand("createlink",!1,c),!1!==s&&e.dom.setAttrib(e.selection.getNode(),"target",s),e.selection.moveToBookmark(o),e.nodeChanged())}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),A=new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-+~=.,%()\/\w]*[-+~=%()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i");e.add("autolink",function(e){var t,n;(t=e).on("keydown",function(e){if(13===e.keyCode)return r(t,-1)}),a.browser.isIE()?t.on("focus",function(){if(!n){n=!0;try{t.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(t.on("keypress",function(e){if(41===e.keyCode||93===e.keyCode||125===e.keyCode)return r(t,-1)}),t.on("keyup",function(e){if(32===e.keyCode)return r(t,0)}))})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/autoresize/plugin.min.js b/lib/web/tiny_mce_5/plugins/autoresize/plugin.min.js deleted file mode 100644 index 74710339c3c39..0000000000000 --- a/lib/web/tiny_mce_5/plugins/autoresize/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function y(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")}function p(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function v(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var l=Object.hasOwnProperty,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),b=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?u(e,t,n,i,o):o&&o()},i)},C=function(e,t,n){var i,o,r,s,a,l,u,g,c,m,f,d=e.dom,h=e.getDoc();h&&(e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()?p(e,!0):(i=h.documentElement,o=e.getParam("autoresize_bottom_margin",50,"number"),r=y(e),s=v(d,i,"margin-top",!0),a=v(d,i,"margin-bottom",!0),(l=(l=i.offsetHeight+s+a+o)<0?0:l)+(u=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight)>y(e)&&(r=l+u),(g=e.getParam("max_height",0,"number"))&&g<r?(r=g,p(e,!0)):p(e,!1),r!==t.get()&&(c=r-t.get(),d.setStyle(e.getContainer(),"height",r+"px"),t.set(r),e.fire("ResizeEditor"),b.browser.isSafari()&&b.mac&&(m=e.getWin()).scrollTo(m.pageXOffset,m.pageYOffset),!e.hasFocus()||"setcontent"!==(null==(f=n)?void 0:f.type.toLowerCase())||!0!==f.selection&&!0!==f.paste||e.selection.scrollIntoView(),b.webkit&&c<0&&C(e,t,n))))};e.add("autoresize",function(e){var t,n,i,o,r,s,a=e.settings;l.call(a,"resize")||(e.settings.resize=!1),e.inline||(s=0,r=t={get:function(){return s},set:function(e){s=e}},(o=e).addCommand("mceAutoResize",function(){C(o,r)}),i=t,(n=e).on("init",function(){var e=n.getParam("autoresize_overflow_padding",1,"number"),t=n.dom;t.setStyles(n.getDoc().documentElement,{height:"auto"}),t.setStyles(n.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),n.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(e){C(n,i,e)}),n.getParam("autoresize_on_init",!0,"boolean")&&n.on("init",function(){u(n,i,20,100,function(){u(n,i,5,1e3)})}))})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/autosave/plugin.min.js b/lib/web/tiny_mce_5/plugins/autosave/plugin.min.js deleted file mode 100644 index 217d938cb44a0..0000000000000 --- a/lib/web/tiny_mce_5/plugins/autosave/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function o(t,e){var r=t||e,n=/^(\d+)([ms]?)$/.exec(""+r);return(n[2]?{s:1e3,m:6e4}[n[2]]:1)*parseInt(r,10)}function n(t){var e=document.location;return t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)}function i(t,e){if(a(e))return t.dom.isEmpty(t.getBody());var r=d.trim(e);if(""===r)return!0;var n=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(n)}function u(t){var e=parseInt(v.getItem(n(t)+"time"),10)||0;return!((new Date).getTime()-e>o(t.getParam("autosave_retention"),"20m")&&(g(t,!1),1))}function s(t){var e=n(t);!i(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))}function f(t){var e=n(t);u(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))}function c(t){t.undoManager.transact(function(){f(t),g(t)}),t.focus()}function m(r){return function(t){function e(){return t.setDisabled(!u(r))}return t.setDisabled(!u(r)),r.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return r.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return void 0===t},l=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var r=n(t);v.removeItem(r+"draft"),v.removeItem(r+"time"),!1!==e&&t.fire("RemoveDraft")},y=tinymce.util.Tools.resolve("tinymce.EditorManager");t.add("autosave",function(t){var e,r,n,a;return t.editorManager.on("BeforeUnload",function(t){var e;d.each(y.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)}),n=e=t,a=o(n.getParam("autosave_interval"),"30s"),l.setEditorInterval(n,function(){s(n)},a),e.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),e.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),t.on("init",function(){t.getParam("autosave_restore_when_empty",!1)&&t.dom.isEmpty(t.getBody())&&f(t)}),r=t,{hasDraft:function(){return u(r)},storeDraft:function(){return s(r)},restoreDraft:function(){return f(r)},removeDraft:function(t){return g(r,t)},isEmpty:function(t){return i(r,t)}}})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/bbcode/plugin.min.js b/lib/web/tiny_mce_5/plugins/bbcode/plugin.min.js deleted file mode 100644 index f461bf555b547..0000000000000 --- a/lib/web/tiny_mce_5/plugins/bbcode/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function i(t){function o(o,e){t=t.replace(o,e)}return t=n.trim(t),o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span> '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span> '),t}var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Tools");o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){function e(o,e){t=t.replace(o,e)}var t;o.set&&(o.content=i(o.content)),o.get&&(o.content=(t=o.content,t=n.trim(t),e(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/<font>(.*?)<\/font>/gi,"$1"),e(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),e(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),e(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),e(/<u>/gi,"[u]"),e(/<blockquote[^>]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/<br \/>/gi,"\n"),e(/<br\/>/gi,"\n"),e(/<br>/gi,"\n"),e(/<p>/gi,""),e(/<\/p>/gi,"\n"),e(/ |\u00a0/gi," "),e(/"/gi,'"'),e(/</gi,"<"),e(/>/gi,">"),e(/&/gi,"&"),t))})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/charmap/plugin.min.js b/lib/web/tiny_mce_5/plugins/charmap/plugin.min.js deleted file mode 100644 index e72c9ab3cb523..0000000000000 --- a/lib/web/tiny_mce_5/plugins/charmap/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function l(e,r){var n=e.fire("insertCustomChar",{chr:r}).chr;e.execCommand("mceInsertContent",!1,n)}function i(e){return function(){return e}}function e(e){return e}function r(){return c}var t,g,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(e){return n=typeof(r=e),(null===r?"null":"object"==n&&(Array.prototype.isPrototypeOf(r)||r.constructor&&"Array"===r.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(r)||r.constructor&&"String"===r.constructor.name)?"string":n)===t;var r,n},m=i(!(t="array")),o=i(!(g=null)),c={fold:function(e,r){return e()},isSome:m,isNone:o,getOr:e,getOrThunk:u,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:u,map:r,each:function(){},bind:r,exists:m,forall:o,filter:function(){return c},toArray:function(){return[]},toString:i("none()")};function u(e){return e()}function f(e,r){for(var n=e.length,t=new Array(n),a=0;a<n;a++){var i=e[a];t[a]=r(i,a)}return t}function s(e){return A(e)?x.grep(e,function(e){return A(e)&&2===e.length}):"function"==typeof e?e():[]}function h(e){var r=function(e,r){var n=e.getParam("charmap");n&&(r=[{name:O,characters:s(n)}]);var t=e.getParam("charmap_append");if(t){var a=x.grep(r,function(e){return e.name===O});return a.length?(a[0].characters=[].concat(a[0].characters).concat(s(t)),r):r.concat({name:O,characters:s(t)})}return r}(e,[{name:"Currency",characters:[[36,"dollar sign"],[162,"cent sign"],[8364,"euro sign"],[163,"pound sign"],[165,"yen sign"],[164,"currency sign"],[8352,"euro-currency sign"],[8353,"colon sign"],[8354,"cruzeiro sign"],[8355,"french franc sign"],[8356,"lira sign"],[8357,"mill sign"],[8358,"naira sign"],[8359,"peseta sign"],[8360,"rupee sign"],[8361,"won sign"],[8362,"new sheqel sign"],[8363,"dong sign"],[8365,"kip sign"],[8366,"tugrik sign"],[8367,"drachma sign"],[8368,"german penny symbol"],[8369,"peso sign"],[8370,"guarani sign"],[8371,"austral sign"],[8372,"hryvnia sign"],[8373,"cedi sign"],[8374,"livre tournois sign"],[8375,"spesmilo sign"],[8376,"tenge sign"],[8377,"indian rupee sign"],[8378,"turkish lira sign"],[8379,"nordic mark sign"],[8380,"manat sign"],[8381,"ruble sign"],[20870,"yen character"],[20803,"yuan character"],[22291,"yuan character, in hong kong and taiwan"],[22278,"yen/yuan character variant one"]]},{name:"Text",characters:[[169,"copyright sign"],[174,"registered sign"],[8482,"trade mark sign"],[8240,"per mille sign"],[181,"micro sign"],[183,"middle dot"],[8226,"bullet"],[8230,"three dot leader"],[8242,"minutes / feet"],[8243,"seconds / inches"],[167,"section sign"],[182,"paragraph sign"],[223,"sharp s / ess-zed"]]},{name:"Quotations",characters:[[8249,"single left-pointing angle quotation mark"],[8250,"single right-pointing angle quotation mark"],[171,"left pointing guillemet"],[187,"right pointing guillemet"],[8216,"left single quotation mark"],[8217,"right single quotation mark"],[8220,"left double quotation mark"],[8221,"right double quotation mark"],[8218,"single low-9 quotation mark"],[8222,"double low-9 quotation mark"],[60,"less-than sign"],[62,"greater-than sign"],[8804,"less-than or equal to"],[8805,"greater-than or equal to"],[8211,"en dash"],[8212,"em dash"],[175,"macron"],[8254,"overline"],[164,"currency sign"],[166,"broken bar"],[168,"diaeresis"],[161,"inverted exclamation mark"],[191,"turned question mark"],[710,"circumflex accent"],[732,"small tilde"],[176,"degree sign"],[8722,"minus sign"],[177,"plus-minus sign"],[247,"division sign"],[8260,"fraction slash"],[215,"multiplication sign"],[185,"superscript one"],[178,"superscript two"],[179,"superscript three"],[188,"fraction one quarter"],[189,"fraction one half"],[190,"fraction three quarters"]]},{name:"Mathematical",characters:[[402,"function / florin"],[8747,"integral"],[8721,"n-ary sumation"],[8734,"infinity"],[8730,"square root"],[8764,"similar to"],[8773,"approximately equal to"],[8776,"almost equal to"],[8800,"not equal to"],[8801,"identical to"],[8712,"element of"],[8713,"not an element of"],[8715,"contains as member"],[8719,"n-ary product"],[8743,"logical and"],[8744,"logical or"],[172,"not sign"],[8745,"intersection"],[8746,"union"],[8706,"partial differential"],[8704,"for all"],[8707,"there exists"],[8709,"diameter"],[8711,"backward difference"],[8727,"asterisk operator"],[8733,"proportional to"],[8736,"angle"]]},{name:"Extended Latin",characters:[[192,"A - grave"],[193,"A - acute"],[194,"A - circumflex"],[195,"A - tilde"],[196,"A - diaeresis"],[197,"A - ring above"],[256,"A - macron"],[198,"ligature AE"],[199,"C - cedilla"],[200,"E - grave"],[201,"E - acute"],[202,"E - circumflex"],[203,"E - diaeresis"],[274,"E - macron"],[204,"I - grave"],[205,"I - acute"],[206,"I - circumflex"],[207,"I - diaeresis"],[298,"I - macron"],[208,"ETH"],[209,"N - tilde"],[210,"O - grave"],[211,"O - acute"],[212,"O - circumflex"],[213,"O - tilde"],[214,"O - diaeresis"],[216,"O - slash"],[332,"O - macron"],[338,"ligature OE"],[352,"S - caron"],[217,"U - grave"],[218,"U - acute"],[219,"U - circumflex"],[220,"U - diaeresis"],[362,"U - macron"],[221,"Y - acute"],[376,"Y - diaeresis"],[562,"Y - macron"],[222,"THORN"],[224,"a - grave"],[225,"a - acute"],[226,"a - circumflex"],[227,"a - tilde"],[228,"a - diaeresis"],[229,"a - ring above"],[257,"a - macron"],[230,"ligature ae"],[231,"c - cedilla"],[232,"e - grave"],[233,"e - acute"],[234,"e - circumflex"],[235,"e - diaeresis"],[275,"e - macron"],[236,"i - grave"],[237,"i - acute"],[238,"i - circumflex"],[239,"i - diaeresis"],[299,"i - macron"],[240,"eth"],[241,"n - tilde"],[242,"o - grave"],[243,"o - acute"],[244,"o - circumflex"],[245,"o - tilde"],[246,"o - diaeresis"],[248,"o slash"],[333,"o macron"],[339,"ligature oe"],[353,"s - caron"],[249,"u - grave"],[250,"u - acute"],[251,"u - circumflex"],[252,"u - diaeresis"],[363,"u - macron"],[253,"y - acute"],[254,"thorn"],[255,"y - diaeresis"],[563,"y - macron"],[913,"Alpha"],[914,"Beta"],[915,"Gamma"],[916,"Delta"],[917,"Epsilon"],[918,"Zeta"],[919,"Eta"],[920,"Theta"],[921,"Iota"],[922,"Kappa"],[923,"Lambda"],[924,"Mu"],[925,"Nu"],[926,"Xi"],[927,"Omicron"],[928,"Pi"],[929,"Rho"],[931,"Sigma"],[932,"Tau"],[933,"Upsilon"],[934,"Phi"],[935,"Chi"],[936,"Psi"],[937,"Omega"],[945,"alpha"],[946,"beta"],[947,"gamma"],[948,"delta"],[949,"epsilon"],[950,"zeta"],[951,"eta"],[952,"theta"],[953,"iota"],[954,"kappa"],[955,"lambda"],[956,"mu"],[957,"nu"],[958,"xi"],[959,"omicron"],[960,"pi"],[961,"rho"],[962,"final sigma"],[963,"sigma"],[964,"tau"],[965,"upsilon"],[966,"phi"],[967,"chi"],[968,"psi"],[969,"omega"]]},{name:"Symbols",characters:[[8501,"alef symbol"],[982,"pi symbol"],[8476,"real part symbol"],[978,"upsilon - hook symbol"],[8472,"Weierstrass p"],[8465,"imaginary part"]]},{name:"Arrows",characters:[[8592,"leftwards arrow"],[8593,"upwards arrow"],[8594,"rightwards arrow"],[8595,"downwards arrow"],[8596,"left right arrow"],[8629,"carriage return"],[8656,"leftwards double arrow"],[8657,"upwards double arrow"],[8658,"rightwards double arrow"],[8659,"downwards double arrow"],[8660,"left right double arrow"],[8756,"therefore"],[8834,"subset of"],[8835,"superset of"],[8836,"not a subset of"],[8838,"subset of or equal to"],[8839,"superset of or equal to"],[8853,"circled plus"],[8855,"circled times"],[8869,"perpendicular"],[8901,"dot operator"],[8968,"left ceiling"],[8969,"right ceiling"],[8970,"left floor"],[8971,"right floor"],[9001,"left-pointing angle bracket"],[9002,"right-pointing angle bracket"],[9674,"lozenge"],[9824,"black spade suit"],[9827,"black club suit"],[9829,"black heart suit"],[9830,"black diamond suit"],[8194,"en space"],[8195,"em space"],[8201,"thin space"],[8204,"zero width non-joiner"],[8205,"zero width joiner"],[8206,"left-to-right mark"],[8207,"right-to-left mark"]]}]);return 1<r.length?[{name:"All",characters:function(e){for(var r=[],n=0,t=e.length;n<t;++n){if(!a(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);C.apply(r,e[n])}return r}(f(r,function(e){return e.characters}))}].concat(r):r}function p(e){var r=e;return{get:function(){return r},set:function(e){r=e}}}function d(e,r){return-1!==e.indexOf(r)}function y(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];if(q)return q.apply(void 0,e);for(var n=[],t="",a=0,i=e.length;a!==i;++a){var o=+e[a];if(!(o<1114111&&o>>>0===o))throw RangeError("Invalid code point: "+o);16383<=(o<=65535?n.push(o):(o-=65536,n.push(55296+(o>>10),o%1024+56320)))&&(t+=String.fromCharCode.apply(null,n),n.length=0)}return t+String.fromCharCode.apply(null,n)}function v(e,r){var c=[],u=r.toLowerCase();return function(e){for(var r,n,t,a,i=0,o=e.length;i<o;i++)r=e[i],a=t=n=a=t=n=void 0,n=r[0],t=r[1],a=u,(d(y(n).toLowerCase(),a)||d(t.toLowerCase(),a)||d(t.toLowerCase().replace(/\s+/g,""),a))&&c.push(r)}(e.characters),f(c,function(e){return{text:e[1],value:y(e[0]),icon:y(e[0])}})}function w(n,a){function r(){return[{label:"Search",type:"input",name:S},{type:"collection",name:"results"}]}var t,i,o=1===a.length?p(O):p("All"),c=(t=function(e){var r=e.getData().pattern,n=e,t=r;(function(e,r,n){for(var t=0,a=e.length;t<a;t++){var i=e[t];if(r(i,t))return k.some(i);if(n(i,t))break}return k.none()})(a,function(e){return e.name===o.get()},m).each(function(e){var r=v(e,t);n.setData({results:r})})},i=null,{cancel:u,throttle:function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];u(),i=setTimeout(function(){i=null,t.apply(null,e)},40)}});function u(){g===i||(clearTimeout(i),i=null)}var e=1===a.length?{type:"panel",items:r()}:{type:"tabpanel",tabs:f(a,function(e){return{title:e.name,name:e.name,items:r()}})},s={pattern:"",results:v(a[0],"")};n.windowManager.open({title:"Special Character",size:"normal",body:e,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:s,onAction:function(e,r){"results"===r.name&&(l(n,r.value),e.close())},onTabChange:function(e,r){o.set(r.newTabName),c.throttle(e)},onChange:function(e,r){r.name===S&&c.throttle(e)}}).focus(S)}var b=function(n){function e(){return a}function r(e){return e(n)}var t=i(n),a={fold:function(e,r){return r(n)},isSome:o,isNone:m,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return b(e(n))},each:function(e){e(n)},bind:r,exists:r,forall:r,filter:function(e){return e(n)?a:c},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},k={some:b,none:r,from:function(e){return null==e?c:b(e)}},C=Array.prototype.push,x=tinymce.util.Tools.resolve("tinymce.util.Tools"),A=x.isArray,O="User Defined",q=String.fromCodePoint,S="pattern",T=tinymce.util.Tools.resolve("tinymce.util.Promise");n.add("charmap",function(e){var r,n,t,a,i,o=h(e),c=o;return(r=e).addCommand("mceShowCharmap",function(){w(r,c)}),(n=e).ui.registry.addButton("charmap",{icon:"insert-character",tooltip:"Special character",onAction:function(){return n.execCommand("mceShowCharmap")}}),n.ui.registry.addMenuItem("charmap",{icon:"insert-character",text:"Special character...",onAction:function(){return n.execCommand("mceShowCharmap")}}),t=e,a=o[0],t.ui.registry.addAutocompleter("charmap",{ch:":",columns:"auto",minChars:2,fetch:function(n,e){return new T(function(e,r){e(v(a,n))})},onAction:function(e,r,n){t.selection.setRng(r),t.insertContent(n),e.hide()}}),i=e,{getCharMap:function(){return h(i)},insertChar:function(e){l(i,e)}}})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/code/plugin.min.js b/lib/web/tiny_mce_5/plugins/code/plugin.min.js deleted file mode 100644 index 5651c699c8619..0000000000000 --- a/lib/web/tiny_mce_5/plugins/code/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",function(e){var t,o;function n(){return o.execCommand("mceCodeEditor")}return(t=e).addCommand("mceCodeEditor",function(){var n,e;e=(n=t).getContent({source_view:!0}),n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){var t=n,o=e.getData().code;t.focus(),t.undoManager.transact(function(){t.setContent(o)}),t.selection.setCursorLocation(),t.nodeChanged(),e.close()}})}),(o=e).ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:n}),o.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:n}),{}})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/codesample/plugin.min.js b/lib/web/tiny_mce_5/plugins/codesample/plugin.min.js deleted file mode 100644 index 8affcd4197bc7..0000000000000 --- a/lib/web/tiny_mce_5/plugins/codesample/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function o(e){return function(){return e}}function e(e){return e}function n(){return l}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=o(!1),i=o(!0),l={fold:function(e,n){return e()},isSome:s,isNone:i,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:e,orThunk:a,map:n,each:function(){},bind:n,exists:s,forall:i,filter:function(){return l},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function u(e){return e&&"PRE"===e.nodeName&&-1!==e.className.indexOf("language-")}function c(t){return function(e,n){return t(n)}}var d=function(t){function e(){return r}function n(e){return e(t)}var a=o(t),r={fold:function(e,n){return n(t)},isSome:i,isNone:s,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return d(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?r:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return r},p={some:d,none:n,from:function(e){return null==e?l:d(e)}},g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),r="undefined"!=typeof window?window:Function("return this;")(),b={},m={exports:b},f={};function h(e){return r.Prism&&e.getParam("codesample_global_prismjs",!1,"boolean")?r.Prism:k}function y(e){var n=e.selection?e.selection.getNode():null;return u(n)?p.some(n):p.none()}function w(s){var t,e,n=s.getParam("codesample_languages")||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}],a=(0<(e=n).length?p.some(e[0]):p.none()).fold(o(""),function(e){return e.value}),r=(t=a,y(s).fold(function(){return t},function(e){var n=e.className.match(/language-(\w+)/);return n?n[1]:t})),i=y(s).fold(o(""),function(e){return e.textContent});s.windowManager.open({title:"Insert/Edit Code Sample",size:"large",body:{type:"panel",items:[{type:"selectbox",name:"language",label:"Language",items:n},{type:"textarea",name:"code",label:"Code view"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{language:r,code:i},onSubmit:function(e){var n=e.getData(),t=s,a=n.language,r=n.code;t.undoManager.transact(function(){var e=y(t);return r=g.DOM.encode(r),e.fold(function(){t.insertContent('<pre id="__new" class="language-'+a+'">'+r+"</pre>"),t.selection.select(t.$("#__new").removeAttr("id")[0])},function(e){t.dom.setAttrib(e,"class","language-"+a),e.innerHTML=r,h(t).highlightElement(e),t.selection.select(e)})}),e.close()}})}!function(e,n){var t,a,r=window.Prism;window.Prism={manual:!0},t=this,a=function(){var e,n,h,t,a,r,s,i,o,l,u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:f,c={exports:{}};function y(e,n){return"___"+e.toUpperCase()+n+"___"}return e=c,n=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},j={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof T?new T(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function t(e,a){var r,n;switch(a=a||{},j.util.type(e)){case"Object":if(n=j.util.objId(e),a[n])return a[n];for(var s in r={},a[n]=r,e)e.hasOwnProperty(s)&&(r[s]=t(e[s],a));return r;case"Array":return n=j.util.objId(e),a[n]||(r=[],a[n]=r,e.forEach(function(e,n){r[n]=t(e,a)}),r);default:return e}},getLanguage:function(e){for(;e&&!c.test(e.className);)e=e.parentElement;return e?(e.className.match(c)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var n=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(e.stack)||[])[1];if(n){var t,a=document.getElementsByTagName("script");for(t in a)if(a[t].src==n)return a[t]}return null}},isActive:function(e,n,t){for(var a="no-"+n;e;){var r=e.classList;if(r.contains(n))return!0;if(r.contains(a))return!1;e=e.parentElement}return!!t}},languages:{plain:e,plaintext:e,text:e,txt:e,extend:function(e,n){var t,a=j.util.clone(j.languages[e]);for(t in n)a[t]=n[t];return a},insertBefore:function(t,e,n,a){var r,s=(a=a||j.languages)[t],i={};for(r in s)if(s.hasOwnProperty(r)){if(r==e)for(var o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);n.hasOwnProperty(r)||(i[r]=s[r])}var l=a[t];return a[t]=i,j.languages.DFS(j.languages,function(e,n){n===l&&e!=t&&(this[e]=i)}),i},DFS:function e(n,t,a,r){r=r||{};var s,i,o,l=j.util.objId;for(s in n)n.hasOwnProperty(s)&&(t.call(n,s,n[s],a||s),i=n[s],"Object"!==(o=j.util.type(i))||r[l(i)]?"Array"!==o||r[l(i)]||(r[l(i)]=!0,e(i,t,s,r)):(r[l(i)]=!0,e(i,t,null,r)))}},plugins:{},highlightAll:function(e,n){j.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var a={callback:t,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};j.hooks.run("before-highlightall",a),a.elements=Array.prototype.slice.apply(a.container.querySelectorAll(a.selector)),j.hooks.run("before-all-elements-highlight",a);for(var r,s=0;r=a.elements[s++];)j.highlightElement(r,!0===n,a.callback)},highlightElement:function(e,n,t){var a=j.util.getLanguage(e),r=j.languages[a];e.className=e.className.replace(c,"").replace(/\s+/g," ")+" language-"+a;var s=e.parentElement;s&&"pre"===s.nodeName.toLowerCase()&&(s.className=s.className.replace(c,"").replace(/\s+/g," ")+" language-"+a);var i,o={element:e,language:a,grammar:r,code:e.textContent};function l(e){o.highlightedCode=e,j.hooks.run("before-insert",o),o.element.innerHTML=o.highlightedCode,j.hooks.run("after-highlight",o),j.hooks.run("complete",o),t&&t.call(o.element)}if(j.hooks.run("before-sanity-check",o),(s=o.element.parentElement)&&"pre"===s.nodeName.toLowerCase()&&!s.hasAttribute("tabindex")&&s.setAttribute("tabindex","0"),!o.code)return j.hooks.run("complete",o),void(t&&t.call(o.element));j.hooks.run("before-highlight",o),o.grammar?n&&u.Worker?((i=new Worker(j.filename)).onmessage=function(e){l(e.data)},i.postMessage(JSON.stringify({language:o.language,code:o.code,immediateClose:!0}))):l(j.highlight(o.code,o.grammar,o.language)):l(j.util.encode(o.code))},highlight:function(e,n,t){var a={code:e,grammar:n,language:t};return j.hooks.run("before-tokenize",a),a.tokens=j.tokenize(a.code,a.grammar),j.hooks.run("after-tokenize",a),T.stringify(j.util.encode(a.tokens),a.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var a in t)n[a]=t[a];delete n.rest}var r=new s;return N(r,r.head,e),function e(n,t,a,r,s,i){for(var o in a)if(a.hasOwnProperty(o)&&a[o])for(var l=a[o],l=Array.isArray(l)?l:[l],u=0;u<l.length;++u){if(i&&i.cause==o+","+u)return;var c,d=l[u],p=d.inside,g=!!d.lookbehind,b=!!d.greedy,m=d.alias;b&&!d.pattern.global&&(c=d.pattern.toString().match(/[imsuy]*$/)[0],d.pattern=RegExp(d.pattern.source,c+"g"));for(var f=d.pattern||d,h=r.next,y=s;h!==t.tail&&!(i&&y>=i.reach);y+=h.value.length,h=h.next){var w=h.value;if(t.length>n.length)return;if(!(w instanceof T)){var k,v=1;if(b){if(!(k=O(f,y,n,g)))break;var _=k.index,x=k.index+k[0].length,F=y;for(F+=h.value.length;F<=_;)F+=(h=h.next).value.length;if(y=F-=h.value.length,h.value instanceof T)continue;for(var P=h;P!==t.tail&&(F<x||"string"==typeof P.value);P=P.next)v++,F+=P.value.length;v--,w=n.slice(y,F),k.index-=y}else if(!(k=O(f,0,w,g)))continue;var _=k.index,A=k[0],S=w.slice(0,_),$=w.slice(_+A.length),z=y+w.length;i&&z>i.reach&&(i.reach=z);var E=h.prev;S&&(E=N(t,E,S),y+=S.length),function(e,n,t){for(var a=n.next,r=0;r<t&&a!==e.tail;r++)a=a.next;(n.next=a).prev=n,e.length-=r}(t,E,v);var C,h=N(t,E,new T(o,p?j.tokenize(A,p):A,m,A));$&&N(t,h,$),1<v&&(e(n,t,a,h.prev,y,C={cause:o+","+u,reach:z}),i&&C.reach>i.reach&&(i.reach=C.reach))}}}}(e,r,n,r.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(r)},hooks:{all:{},add:function(e,n){var t=j.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=j.hooks.all[e];if(t&&t.length)for(var a,r=0;a=t[r++];)a(n)}},Token:T};function T(e,n,t,a){this.type=e,this.content=n,this.alias=t,this.length=0|(a||"").length}function O(e,n,t,a){e.lastIndex=n;var r,s=e.exec(t);return s&&a&&s[1]&&(r=s[1].length,s.index+=r,s[0]=s[0].slice(r)),s}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function N(e,n,t){var a=n.next,r={value:t,prev:n,next:a};return n.next=r,a.prev=r,e.length++,r}if(u.Prism=j,T.stringify=function n(e,t){if("string"==typeof e)return e;if(Array.isArray(e)){var a="";return e.forEach(function(e){a+=n(e,t)}),a}var r={type:e.type,content:n(e.content,t),tag:"span",classes:["token",e.type],attributes:{},language:t},s=e.alias;s&&(Array.isArray(s)?Array.prototype.push.apply(r.classes,s):r.classes.push(s)),j.hooks.run("wrap",r);var i,o="";for(i in r.attributes)o+=" "+i+'="'+(r.attributes[i]||"").replace(/"/g,""")+'"';return"<"+r.tag+' class="'+r.classes.join(" ")+'"'+o+">"+r.content+"</"+r.tag+">"},!u.document)return u.addEventListener&&(j.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,a=n.code,r=n.immediateClose;u.postMessage(j.highlight(a,j.languages[t],t)),r&&u.close()},!1)),j;var t,a=j.util.currentScript();function r(){j.manual||j.highlightAll()}return a&&(j.filename=a.src,a.hasAttribute("data-manual")&&(j.manual=!0)),j.manual||("loading"===(t=document.readyState)||"interactive"===t&&a&&a.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),j}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{}),e.exports&&(e.exports=n),void 0!==u&&(u.Prism=n),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},h=Prism,Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,s){var i;a.language===r&&(i=a.tokenStack=[],a.code=a.code.replace(e,function(e){if("function"==typeof s&&!s(e))return e;for(var n,t=i.length;-1!==a.code.indexOf(n=y(r,t));)++t;return i[t]=e,n}),a.grammar=h.languages.markup)}},tokenizePlaceholders:{value:function(g,b){var m,f;g.language===b&&g.tokenStack&&(g.grammar=h.languages[b],m=0,f=Object.keys(g.tokenStack),function e(n){for(var t=0;t<n.length&&!(m>=f.length);t++){var a,r,s,i,o,l,u,c,d,p=n[t];"string"==typeof p||p.content&&"string"==typeof p.content?(a=f[m],r=g.tokenStack[a],s="string"==typeof p?p:p.content,i=y(b,a),-1<(o=s.indexOf(i))&&(++m,l=s.substring(0,o),u=new h.Token(b,h.tokenize(r,g.grammar),"language-"+b,r),c=s.substring(o+i.length),d=[],l&&d.push.apply(d,e([l])),d.push(u),c&&d.push.apply(d,e([c])),"string"==typeof p?n.splice.apply(n,[t,1].concat(d)):p.content=d)):p.content&&e(p.content)}return n}(g.tokens))}}}),Prism.languages.c=Prism.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c.boolean,t=Prism,a=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,r=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return a.source}),t.languages.cpp=t.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return a.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:a,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),t.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:module|import)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return r})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),t.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t.languages.cpp}}}}),t.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),t.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:t.languages.extend("cpp",{})}}),t.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},t.languages.cpp["base-clause"]),function(t){function a(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function r(e,n,t){return RegExp(a(e,n),t||"")}function e(e,n){for(var t=0;t<n;t++)e=e.replace(/<<self>>/g,function(){return"(?:"+e+")"});return e.replace(/<<self>>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",s="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var u=l(s),c=RegExp(l(n+" "+s+" "+i+" "+o)),d=l(s+" "+i+" "+o),p=l(n+" "+s+" "+o),g=e(/<(?:[^<>;=+\-*/%&|^]|<<self>>)*>/.source,2),b=e(/\((?:[^()]|<<self>>)*\)/.source,2),m=/@?\b[A-Za-z_]\w*\b/.source,f=a(/<<0>>(?:\s*<<1>>)?/.source,[m,g]),h=a(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[d,f]),y=/\[\s*(?:,\s*)*\]/.source,w=a(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[h,y]),k=a(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[g,b,y]),v=a(/\(<<0>>+(?:,<<0>>+)+\)/.source,[k]),_=a(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[v,h,y]),x={keyword:c,punctuation:/[<>()?,.:[\]]/},F=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,P=/"(?:\\.|[^\\"\r\n])*"/.source;t.languages.csharp=t.languages.extend("clike",{string:[{pattern:r(/(^|[^$\\])<<0>>/.source,[/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source]),lookbehind:!0,greedy:!0},{pattern:r(/(^|[^@$\\])<<0>>/.source,[P]),lookbehind:!0,greedy:!0},{pattern:RegExp(F),greedy:!0,alias:"character"}],"class-name":[{pattern:r(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[h]),lookbehind:!0,inside:x},{pattern:r(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[m,_]),lookbehind:!0,inside:x},{pattern:r(/(\busing\s+)<<0>>(?=\s*=)/.source,[m]),lookbehind:!0},{pattern:r(/(\b<<0>>\s+)<<1>>/.source,[u,f]),lookbehind:!0,inside:x},{pattern:r(/(\bcatch\s*\(\s*)<<0>>/.source,[h]),lookbehind:!0,inside:x},{pattern:r(/(\bwhere\s+)<<0>>/.source,[m]),lookbehind:!0},{pattern:r(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[w]),lookbehind:!0,inside:x},{pattern:r(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[_,p,m]),inside:x}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),t.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),t.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:r(/([(,]\s*)<<0>>(?=\s*:)/.source,[m]),lookbehind:!0,alias:"punctuation"}}),t.languages.insertBefore("csharp","class-name",{namespace:{pattern:r(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[m]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:r(/(\b(?:default|typeof|sizeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[b]),lookbehind:!0,alias:"class-name",inside:x},"return-type":{pattern:r(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[_,h]),inside:x,alias:"class-name"},"constructor-invocation":{pattern:r(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[_]),lookbehind:!0,inside:x,alias:"class-name"},"generic-method":{pattern:r(/<<0>>\s*<<1>>(?=\s*\()/.source,[m,g]),inside:{function:r(/^<<0>>/.source,[m]),generic:{pattern:RegExp(g),alias:"class-name",inside:x}}},"type-list":{pattern:r(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[u,f,m,_,c.source,b,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:r(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[f,b]),lookbehind:!0,greedy:!0,inside:t.languages.csharp},keyword:c,"class-name":{pattern:RegExp(_),greedy:!0,inside:x},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var A=P+"|"+F,S=a(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[A]),$=e(a(/[^"'/()]|<<0>>|\(<<self>>*\)/.source,[S]),2),z=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,E=a(/<<0>>(?:\s*\(<<1>>*\))?/.source,[h,$]);t.languages.insertBefore("csharp","class-name",{attribute:{pattern:r(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[z,E]),lookbehind:!0,greedy:!0,inside:{target:{pattern:r(/^<<0>>(?=\s*:)/.source,[z]),alias:"keyword"},"attribute-arguments":{pattern:r(/\(<<0>>*\)/.source,[$]),inside:t.languages.csharp},"class-name":{pattern:RegExp(h),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var C=/:[^}\r\n]+/.source,j=e(a(/[^"'/()]|<<0>>|\(<<self>>*\)/.source,[S]),2),T=a(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[j,C]),O=e(a(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<<self>>*\)/.source,[A]),2),N=a(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[O,C]);function B(e,n){return{interpolation:{pattern:r(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[e]),lookbehind:!0,inside:{"format-string":{pattern:r(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[n,C]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:t.languages.csharp}}},string:/[\s\S]+/}}t.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:r(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[T]),lookbehind:!0,greedy:!0,inside:B(T,j)},{pattern:r(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[N]),lookbehind:!0,greedy:!0,inside:B(N,O)}]})}(Prism),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp,function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var t=e.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism),s=Prism,i=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,o=/(^|[^\w.])(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,l={pattern:RegExp(o+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}},s.languages.java=s.languages.extend("clike",{"class-name":[l,{pattern:RegExp(o+/[A-Z]\w*(?=\s+\w+\s*[;,=()])/.source),lookbehind:!0,inside:l.inside}],keyword:i,function:[s.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),s.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),s.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":l,keyword:i,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g,function(){return i.source})),lookbehind:!0,inside:{punctuation:/\./}}}),Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript,Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,n){var t={};t["language-"+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[n]},t.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:t}};a["language-"+n]={pattern:/[\s\S]+/,inside:Prism.languages[n]};var r={};r[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:a},Prism.languages.insertBefore("markup","cdata",r)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,n){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:Prism.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml,function(n){var e=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,t=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],a=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,r=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;n.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:a,operator:r,punctuation:s};var i={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:n.languages.php},o=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:i}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:i}}];n.languages.insertBefore("php","variable",{string:o,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:o,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:a,operator:r,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),n.hooks.add("before-tokenize",function(e){/<\?/.test(e.code)&&n.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism),Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python,function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:RegExp(/%r/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S])*\)/.source,/\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S])*\]/.source,/<(?:[^<>\\]|\\[\s\S])*>/.source].join("|")+")"+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp(/%[qQiIwWxs]?/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S])*\)/.source,/\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S])*\]/.source,/<(?:[^<>\\]|\\[\s\S])*>/.source].join("|")+")"),greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?/}},interpolation:n}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?'|'$/}}}}],e.languages.rb=e.languages.ruby}(Prism),{boltExport:c.exports}},"object"==typeof e&&void 0!==n?n.exports=a():(t="undefined"!=typeof globalThis?globalThis:t||self).EphoxContactWrapper=a();window.Prism;window.Prism=r}(b,m);var k=m.exports.boltExport;t.add("codesample",function(n){var t,r,a,s;function e(){return s.execCommand("codesample")}r=(t=n).$,t.on("PreProcess",function(e){r("pre[contenteditable=false]",e.node).filter(c(u)).each(function(e,n){var t=r(n),a=n.textContent;t.attr("class",r.trim(t.attr("class"))),t.removeAttr("contentEditable"),t.empty().append(r("<code></code>").each(function(){this.textContent=a}))})}),t.on("SetContent",function(){var e=r("pre").filter(c(u)).filter(function(e,n){return"false"!==n.contentEditable});e.length&&t.undoManager.transact(function(){e.each(function(e,n){r(n).find("br").each(function(e,n){n.parentNode.replaceChild(t.getDoc().createTextNode("\n"),n)}),n.contentEditable="false",n.innerHTML=t.dom.encode(n.textContent),h(t).highlightElement(n),n.className=r.trim(n.className)})})}),(s=n).ui.registry.addToggleButton("codesample",{icon:"code-sample",tooltip:"Insert/edit code sample",onAction:e,onSetup:function(t){function e(){var e,n;t.setActive((n=(e=s).selection.getStart(),e.dom.is(n,'pre[class*="language-"]')))}return s.on("NodeChange",e),function(){return s.off("NodeChange",e)}}}),s.ui.registry.addMenuItem("codesample",{text:"Code sample...",icon:"code-sample",onAction:e}),(a=n).addCommand("codesample",function(){var e=a.selection.getNode();a.selection.isCollapsed()||u(e)?w(a):a.formatter.toggle("code")}),n.on("dblclick",function(e){u(e.target)&&w(n)})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/colorpicker/plugin.min.js b/lib/web/tiny_mce_5/plugins/colorpicker/plugin.min.js deleted file mode 100644 index f4c857c96af82..0000000000000 --- a/lib/web/tiny_mce_5/plugins/colorpicker/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/contextmenu/plugin.min.js b/lib/web/tiny_mce_5/plugins/contextmenu/plugin.min.js deleted file mode 100644 index 7a7f3589348b9..0000000000000 --- a/lib/web/tiny_mce_5/plugins/contextmenu/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/directionality/plugin.min.js b/lib/web/tiny_mce_5/plugins/directionality/plugin.min.js deleted file mode 100644 index 82039cd7966a0..0000000000000 --- a/lib/web/tiny_mce_5/plugins/directionality/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function n(t){return function(n){return typeof n===t}}function u(n){return function(){return n}}function t(n){return n}function r(){return d}var o,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){return r=typeof(t=n),(null===t?"null":"object"==r&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":r)===o;var t,r},c=n("boolean"),f=n("function"),l=n("number"),a=u(!(o="string")),m=u(!0),d={fold:function(n,t){return n()},isSome:a,isNone:m,getOr:t,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(void 0),or:t,orThunk:s,map:r,each:function(){},bind:r,exists:a,forall:m,filter:function(){return d},toArray:function(){return[]},toString:u("none()")};function s(n){return n()}function g(n,t){for(var r=0,o=n.length;r<o;r++)t(n[r],r)}function h(n,t){var r=n.dom;if(1!==r.nodeType)return!1;var o=r;if(void 0!==o.matches)return o.matches(t);if(void 0!==o.msMatchesSelector)return o.msMatchesSelector(t);if(void 0!==o.webkitMatchesSelector)return o.webkitMatchesSelector(t);if(void 0!==o.mozMatchesSelector)return o.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function v(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var p=function(r){function n(){return e}function t(n){return n(r)}var o=u(r),e={fold:function(n,t){return t(r)},isSome:m,isNone:a,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return p(n(r))},each:function(n){n(r)},bind:t,exists:t,forall:t,filter:function(n){return n(r)?e:d},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return e},y={some:p,none:r,from:function(n){return null==n?d:p(n)}},w={fromHtml:function(n,t){var r=(t||document).createElement("div");if(r.innerHTML=n,!r.hasChildNodes()||1<r.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return v(r.childNodes[0])},fromTag:function(n,t){var r=(t||document).createElement(n);return v(r)},fromText:function(n,t){var r=(t||document).createTextNode(n);return v(r)},fromDom:v,fromPoint:function(n,t,r){return y.from(n.dom.elementFromPoint(t,r)).map(v)}};function D(t){return function(n){return n.dom.nodeType===t}}function N(n,t,r){!function(n,t,r){if(!(i(r)||c(r)||l(r)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",r,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,r+"")}(n.dom,t,r)}function T(n,t){n.dom.removeAttribute(t)}function S(n){return w.fromDom(n.dom.host)}function b(e,u,n){return function(n){for(var t=e.dom,r=f(n)?n:a;t.parentNode;){var t=t.parentNode,o=w.fromDom(t);if(h(o,u))return y.some(o);if(r(o))break}return y.none()}(n)}function O(n){return"rtl"===(r="direction",o=(t=n).dom,""!==(e=window.getComputedStyle(o).getPropertyValue(r))||B(t)?e:H(o,r))?"rtl":"ltr";var t,r,o,e}function A(n,t){return r=function(n){return h(n,t)},function(n,t){for(var r=[],o=0,e=n.length;o<e;o++){var u=n[o];t(u,o)&&r.push(u)}return r}(function(n,t){for(var r=n.length,o=new Array(r),e=0;e<r;e++){var u=n[e];o[e]=t(u,e)}return o}(n.dom.childNodes,w.fromDom),r);var r}function C(n,u){var t=n.selection.getSelectedBlocks();0<t.length&&(g(t,function(n){var t,r=w.fromDom(n),o=k(r),e=(t=r,(o?b(t,"ol,ul"):y.some(t)).getOr(t));y.from(e.dom.parentNode).map(w.fromDom).filter(E).each(function(n){O(n)!==u?N(e,"dir",u):O(e)!==u&&T(e,"dir"),o&&g(A(e,"li[dir]"),function(n){return T(n,"dir"),0})})}),n.nodeChanged())}function M(t,o){return function(r){function n(n){var t=w.fromDom(n.element);r.setActive(O(t)===o)}return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}}"undefined"!=typeof window||Function("return this;")();function k(n){return E(n)&&"li"===n.dom.nodeName.toLowerCase()}var E=D(1),L=D(3),P=D(9),R=D(11),x=f(Element.prototype.attachShadow)&&f(Node.prototype.getRootNode)?function(n){return w.fromDom(n.dom.getRootNode())}:function(n){return P(n)?n:w.fromDom(n.dom.ownerDocument)},B=function(n){var t=L(n)?n.dom.parentNode:n.dom;if(null==t||null===t.ownerDocument)return!1;var r,o,e,u,i,c=t.ownerDocument;return e=w.fromDom(t),i=x(e),(R(u=i)&&null!=u.dom.host?y.some(i):y.none()).fold(function(){return c.body.contains(t)},(r=B,o=S,function(n){return r(o(n))}))},H=function(n,t){return void 0!==n.style&&f(n.style.getPropertyValue)?n.style.getPropertyValue(t):""};e.add("directionality",function(n){var t,r;(t=n).addCommand("mceDirectionLTR",function(){C(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){C(t,"rtl")}),(r=n).ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return r.execCommand("mceDirectionLTR")},onSetup:M(r,"ltr")}),r.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return r.execCommand("mceDirectionRTL")},onSetup:M(r,"rtl")})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.js b/lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.js deleted file mode 100644 index d5f9734baa606..0000000000000 --- a/lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.js +++ /dev/null @@ -1,9424 +0,0 @@ -// Source: npm package: emojilib -// Images provided by twemoji: https://github.com/twitter/twemoji -window.tinymce.Resource.add("tinymce.plugins.emoticons", { - 100: { - keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaf" src="1f4af.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - 1234: { - keywords: [ "numbers", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd22" src="1f522.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - grinning: { - keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude00" src="1f600.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - grimacing: { - keywords: [ "face", "grimace", "teeth" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2c" src="1f62c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - grin: { - keywords: [ "face", "happy", "smile", "joy", "kawaii" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude01" src="1f601.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - joy: { - keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude02" src="1f602.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - rofl: { - keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd23" src="1f923.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - partying: { - keywords: [ "face", "celebration", "woohoo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd73" src="1f973.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smiley: { - keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude03" src="1f603.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smile: { - keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude04" src="1f604.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sweat_smile: { - keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude05" src="1f605.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - laughing: { - keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude06" src="1f606.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - innocent: { - keywords: [ "face", "angel", "heaven", "halo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude07" src="1f607.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - wink: { - keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude09" src="1f609.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - blush: { - keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0a" src="1f60a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - slightly_smiling_face: { - keywords: [ "face", "smile" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude42" src="1f642.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - upside_down_face: { - keywords: [ "face", "flipped", "silly", "smile" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude43" src="1f643.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - relaxed: { - keywords: [ "face", "blush", "massage", "happiness" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u263a\ufe0f" src="263a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - yum: { - keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0b" src="1f60b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - relieved: { - keywords: [ "face", "relaxed", "phew", "massage", "happiness" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0c" src="1f60c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0d" src="1f60d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smiling_face_with_three_hearts: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd70" src="1f970.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - kissing_heart: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude18" src="1f618.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - kissing: { - keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude17" src="1f617.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - kissing_smiling_eyes: { - keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude19" src="1f619.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - kissing_closed_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1a" src="1f61a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_winking_eye: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1c" src="1f61c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - zany: { - keywords: [ "face", "goofy", "crazy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2a" src="1f92a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - raised_eyebrow: { - keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd28" src="1f928.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - monocle: { - keywords: [ "face", "stuffy", "wealthy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd0" src="1f9d0.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_closed_eyes: { - keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1d" src="1f61d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1b" src="1f61b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - money_mouth_face: { - keywords: [ "face", "rich", "dollar", "money" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd11" src="1f911.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - nerd_face: { - keywords: [ "face", "nerdy", "geek", "dork" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd13" src="1f913.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sunglasses: { - keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0e" src="1f60e.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - star_struck: { - keywords: [ "face", "smile", "starry", "eyes", "grinning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd29" src="1f929.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - clown_face: { - keywords: [ "face" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd21" src="1f921.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - cowboy_hat_face: { - keywords: [ "face", "cowgirl", "hat" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd20" src="1f920.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - hugs: { - keywords: [ "face", "smile", "hug" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd17" src="1f917.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smirk: { - keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0f" src="1f60f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - no_mouth: { - keywords: [ "face", "hellokitty" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude36" src="1f636.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - neutral_face: { - keywords: [ "indifference", "meh", ":|", "neutral" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude10" src="1f610.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - expressionless: { - keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude11" src="1f611.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - unamused: { - keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude12" src="1f612.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - roll_eyes: { - keywords: [ "face", "eyeroll", "frustrated" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude44" src="1f644.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - thinking: { - keywords: [ "face", "hmmm", "think", "consider" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd14" src="1f914.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - lying_face: { - keywords: [ "face", "lie", "pinocchio" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd25" src="1f925.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - hand_over_mouth: { - keywords: [ "face", "whoops", "shock", "surprise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2d" src="1f92d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - shushing: { - keywords: [ "face", "quiet", "shhh" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2b" src="1f92b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - symbols_over_mouth: { - keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2c" src="1f92c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - exploding_head: { - keywords: [ "face", "shocked", "mind", "blown" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2f" src="1f92f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - flushed: { - keywords: [ "face", "blush", "shy", "flattered" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude33" src="1f633.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - disappointed: { - keywords: [ "face", "sad", "upset", "depressed", ":(" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1e" src="1f61e.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - worried: { - keywords: [ "face", "concern", "nervous", ":(" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1f" src="1f61f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - angry: { - keywords: [ "mad", "face", "annoyed", "frustrated" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude20" src="1f620.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - rage: { - keywords: [ "angry", "mad", "hate", "despise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude21" src="1f621.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - pensive: { - keywords: [ "face", "sad", "depressed", "upset" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude14" src="1f614.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - confused: { - keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude15" src="1f615.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - slightly_frowning_face: { - keywords: [ "face", "frowning", "disappointed", "sad", "upset" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude41" src="1f641.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - frowning_face: { - keywords: [ "face", "sad", "upset", "frown" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2639" src="2639.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - persevere: { - keywords: [ "face", "sick", "no", "upset", "oops" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude23" src="1f623.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - confounded: { - keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude16" src="1f616.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - tired_face: { - keywords: [ "sick", "whine", "upset", "frustrated" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2b" src="1f62b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - weary: { - keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude29" src="1f629.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - pleading: { - keywords: [ "face", "begging", "mercy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7a" src="1f97a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - triumph: { - keywords: [ "face", "gas", "phew", "proud", "pride" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude24" src="1f624.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - open_mouth: { - keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2e" src="1f62e.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - scream: { - keywords: [ "face", "munch", "scared", "omg" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude31" src="1f631.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - fearful: { - keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude28" src="1f628.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - cold_sweat: { - keywords: [ "face", "nervous", "sweat" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude30" src="1f630.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - hushed: { - keywords: [ "face", "woo", "shh" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2f" src="1f62f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - frowning: { - keywords: [ "face", "aw", "what" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude26" src="1f626.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - anguished: { - keywords: [ "face", "stunned", "nervous" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude27" src="1f627.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - cry: { - keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude22" src="1f622.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - disappointed_relieved: { - keywords: [ "face", "phew", "sweat", "nervous" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude25" src="1f625.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - drooling_face: { - keywords: [ "face" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd24" src="1f924.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sleepy: { - keywords: [ "face", "tired", "rest", "nap" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2a" src="1f62a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sweat: { - keywords: [ "face", "hot", "sad", "tired", "exercise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude13" src="1f613.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - hot: { - keywords: [ "face", "feverish", "heat", "red", "sweating" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd75" src="1f975.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - cold: { - keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd76" src="1f976.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sob: { - keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2d" src="1f62d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - dizzy_face: { - keywords: [ "spent", "unconscious", "xox", "dizzy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude35" src="1f635.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - astonished: { - keywords: [ "face", "xox", "surprised", "poisoned" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude32" src="1f632.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - zipper_mouth_face: { - keywords: [ "face", "sealed", "zipper", "secret" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd10" src="1f910.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - nauseated_face: { - keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd22" src="1f922.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sneezing_face: { - keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd27" src="1f927.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - vomiting: { - keywords: [ "face", "sick" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2e" src="1f92e.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - mask: { - keywords: [ "face", "sick", "ill", "disease" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude37" src="1f637.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - face_with_thermometer: { - keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd12" src="1f912.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - face_with_head_bandage: { - keywords: [ "injured", "clumsy", "bandage", "hurt" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd15" src="1f915.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - woozy: { - keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd74" src="1f974.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sleeping: { - keywords: [ "face", "tired", "sleepy", "night", "zzz" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude34" src="1f634.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - zzz: { - keywords: [ "sleepy", "tired", "dream" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca4" src="1f4a4.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - poop: { - keywords: [ "hankey", "shitface", "fail", "turd", "shit" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca9" src="1f4a9.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smiling_imp: { - keywords: [ "devil", "horns" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude08" src="1f608.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - imp: { - keywords: [ "devil", "angry", "horns" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7f" src="1f47f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - japanese_ogre: { - keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc79" src="1f479.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - japanese_goblin: { - keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7a" src="1f47a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - skull: { - keywords: [ "dead", "skeleton", "creepy", "death" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc80" src="1f480.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - ghost: { - keywords: [ "halloween", "spooky", "scary" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7b" src="1f47b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - alien: { - keywords: [ "UFO", "paul", "weird", "outer_space" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7d" src="1f47d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - robot: { - keywords: [ "computer", "machine", "bot" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd16" src="1f916.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smiley_cat: { - keywords: [ "animal", "cats", "happy", "smile" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3a" src="1f63a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smile_cat: { - keywords: [ "animal", "cats", "smile" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude38" src="1f638.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - joy_cat: { - keywords: [ "animal", "cats", "haha", "happy", "tears" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude39" src="1f639.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes_cat: { - keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3b" src="1f63b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - smirk_cat: { - keywords: [ "animal", "cats", "smirk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3c" src="1f63c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - kissing_cat: { - keywords: [ "animal", "cats", "kiss" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3d" src="1f63d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - scream_cat: { - keywords: [ "animal", "cats", "munch", "scared", "scream" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude40" src="1f640.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - crying_cat_face: { - keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3f" src="1f63f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - pouting_cat: { - keywords: [ "animal", "cats" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3e" src="1f63e.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - palms_up: { - keywords: [ "hands", "gesture", "cupped", "prayer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd32" src="1f932.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - raised_hands: { - keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4c" src="1f64c.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - clap: { - keywords: [ "hands", "praise", "applause", "congrats", "yay" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4f" src="1f44f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - wave: { - keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4b" src="1f44b.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - call_me_hand: { - keywords: [ "hands", "gesture" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd19" src="1f919.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - "+1": { - keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4d" src="1f44d.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - "-1": { - keywords: [ "thumbsdown", "no", "dislike", "hand" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4e" src="1f44e.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - facepunch: { - keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4a" src="1f44a.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - fist: { - keywords: [ "fingers", "hand", "grasp" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270a" src="270a.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - fist_left: { - keywords: [ "hand", "fistbump" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1b" src="1f91b.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - fist_right: { - keywords: [ "hand", "fistbump" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1c" src="1f91c.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - v: { - keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270c" src="270c.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - ok_hand: { - keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4c" src="1f44c.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - raised_hand: { - keywords: [ "fingers", "stop", "highfive", "palm", "ban" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270b" src="270b.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - raised_back_of_hand: { - keywords: [ "fingers", "raised", "backhand" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1a" src="1f91a.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - open_hands: { - keywords: [ "fingers", "butterfly", "hands", "open" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc50" src="1f450.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - muscle: { - keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaa" src="1f4aa.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - pray: { - keywords: [ "please", "hope", "wish", "namaste", "highfive" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4f" src="1f64f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - foot: { - keywords: [ "kick", "stomp" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb6" src="1f9b6.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - leg: { - keywords: [ "kick", "limb" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb5" src="1f9b5.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - handshake: { - keywords: [ "agreement", "shake" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1d" src="1f91d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - point_up: { - keywords: [ "hand", "fingers", "direction", "up" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u261d" src="261d.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - point_up_2: { - keywords: [ "fingers", "hand", "direction", "up" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc46" src="1f446.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - point_down: { - keywords: [ "fingers", "hand", "direction", "down" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc47" src="1f447.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - point_left: { - keywords: [ "direction", "fingers", "hand", "left" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc48" src="1f448.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - point_right: { - keywords: [ "fingers", "hand", "direction", "right" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc49" src="1f449.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - fu: { - keywords: [ "hand", "fingers", "rude", "middle", "flipping" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd95" src="1f595.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - raised_hand_with_fingers_splayed: { - keywords: [ "hand", "fingers", "palm" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd90" src="1f590.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - love_you: { - keywords: [ "hand", "fingers", "gesture" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1f" src="1f91f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - metal: { - keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd18" src="1f918.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - crossed_fingers: { - keywords: [ "good", "lucky" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1e" src="1f91e.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - vulcan_salute: { - keywords: [ "hand", "fingers", "spock", "star trek" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd96" src="1f596.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - writing_hand: { - keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270d" src="270d.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - selfie: { - keywords: [ "camera", "phone" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd33" src="1f933.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - nail_care: { - keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc85" src="1f485.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - lips: { - keywords: [ "mouth", "kiss" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc44" src="1f444.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - tooth: { - keywords: [ "teeth", "dentist" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb7" src="1f9b7.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - tongue: { - keywords: [ "mouth", "playful" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc45" src="1f445.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - ear: { - keywords: [ "face", "hear", "sound", "listen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc42" src="1f442.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - nose: { - keywords: [ "smell", "sniff" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc43" src="1f443.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - eye: { - keywords: [ "face", "look", "see", "watch", "stare" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc41" src="1f441.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - eyes: { - keywords: [ "look", "watch", "stalk", "peek", "see" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc40" src="1f440.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - brain: { - keywords: [ "smart", "intelligent" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde0" src="1f9e0.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - bust_in_silhouette: { - keywords: [ "user", "person", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc64" src="1f464.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - busts_in_silhouette: { - keywords: [ "user", "person", "human", "group", "team" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc65" src="1f465.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - speaking_head: { - keywords: [ "user", "person", "human", "sing", "say", "talk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde3" src="1f5e3.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - baby: { - keywords: [ "child", "boy", "girl", "toddler" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc76" src="1f476.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - child: { - keywords: [ "gender-neutral", "young" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd2" src="1f9d2.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - boy: { - keywords: [ "man", "male", "guy", "teenager" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc66" src="1f466.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - girl: { - keywords: [ "female", "woman", "teenager" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc67" src="1f467.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - adult: { - keywords: [ "gender-neutral", "person" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd1" src="1f9d1.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man: { - keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68" src="1f468.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman: { - keywords: [ "female", "girls", "lady" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69" src="1f469.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - blonde_woman: { - keywords: [ "woman", "female", "girl", "blonde", "person" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71\u200d\u2640\ufe0f" src="1f471-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - blonde_man: { - keywords: [ "man", "male", "boy", "blonde", "guy", "person" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71" src="1f471.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - bearded_person: { - keywords: [ "person", "bewhiskered" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd4" src="1f9d4.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - older_adult: { - keywords: [ "human", "elder", "senior", "gender-neutral" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd3" src="1f9d3.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - older_man: { - keywords: [ "human", "male", "men", "old", "elder", "senior" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc74" src="1f474.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - older_woman: { - keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc75" src="1f475.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_with_gua_pi_mao: { - keywords: [ "male", "boy", "chinese" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc72" src="1f472.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_with_headscarf: { - keywords: [ "female", "hijab", "mantilla", "tichel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd5" src="1f9d5.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_with_turban: { - keywords: [ "female", "indian", "hinduism", "arabs", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73\u200d\u2640\ufe0f" src="1f473-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_with_turban: { - keywords: [ "male", "indian", "hinduism", "arabs" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73" src="1f473.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - policewoman: { - keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e\u200d\u2640\ufe0f" src="1f46e-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - policeman: { - keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e" src="1f46e.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_woman: { - keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77\u200d\u2640\ufe0f" src="1f477-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_man: { - keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77" src="1f477.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - guardswoman: { - keywords: [ "uk", "gb", "british", "female", "royal", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82\u200d\u2640\ufe0f" src="1f482-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - guardsman: { - keywords: [ "uk", "gb", "british", "male", "guy", "royal" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82" src="1f482.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - female_detective: { - keywords: [ "human", "spy", "detective", "female", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75\ufe0f\u200d\u2640\ufe0f" src="1f575-fe0f-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - male_detective: { - keywords: [ "human", "spy", "detective" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75" src="1f575.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2695\ufe0f" src="1f469-200d-2695-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2695\ufe0f" src="1f468-200d-2695-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_farmer: { - keywords: [ "rancher", "gardener", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf3e" src="1f469-200d-1f33e.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_farmer: { - keywords: [ "rancher", "gardener", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf3e" src="1f468-200d-1f33e.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_cook: { - keywords: [ "chef", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf73" src="1f469-200d-1f373.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_cook: { - keywords: [ "chef", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf73" src="1f468-200d-1f373.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_student: { - keywords: [ "graduate", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf93" src="1f469-200d-1f393.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_student: { - keywords: [ "graduate", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf93" src="1f468-200d-1f393.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_singer: { - keywords: [ "rockstar", "entertainer", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa4" src="1f469-200d-1f3a4.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_singer: { - keywords: [ "rockstar", "entertainer", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa4" src="1f468-200d-1f3a4.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_teacher: { - keywords: [ "instructor", "professor", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfeb" src="1f469-200d-1f3eb.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_teacher: { - keywords: [ "instructor", "professor", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfeb" src="1f468-200d-1f3eb.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_factory_worker: { - keywords: [ "assembly", "industrial", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfed" src="1f469-200d-1f3ed.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_factory_worker: { - keywords: [ "assembly", "industrial", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfed" src="1f468-200d-1f3ed.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbb" src="1f469-200d-1f4bb.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbb" src="1f468-200d-1f4bb.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_office_worker: { - keywords: [ "business", "manager", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbc" src="1f469-200d-1f4bc.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_office_worker: { - keywords: [ "business", "manager", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbc" src="1f468-200d-1f4bc.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_mechanic: { - keywords: [ "plumber", "woman", "human", "wrench" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd27" src="1f469-200d-1f527.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_mechanic: { - keywords: [ "plumber", "man", "human", "wrench" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd27" src="1f468-200d-1f527.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd2c" src="1f469-200d-1f52c.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd2c" src="1f468-200d-1f52c.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_artist: { - keywords: [ "painter", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa8" src="1f469-200d-1f3a8.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_artist: { - keywords: [ "painter", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa8" src="1f468-200d-1f3a8.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_firefighter: { - keywords: [ "fireman", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude92" src="1f469-200d-1f692.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_firefighter: { - keywords: [ "fireman", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude92" src="1f468-200d-1f692.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_pilot: { - keywords: [ "aviator", "plane", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2708\ufe0f" src="1f469-200d-2708-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_pilot: { - keywords: [ "aviator", "plane", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2708\ufe0f" src="1f468-200d-2708-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_astronaut: { - keywords: [ "space", "rocket", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude80" src="1f469-200d-1f680.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_astronaut: { - keywords: [ "space", "rocket", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude80" src="1f468-200d-1f680.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_judge: { - keywords: [ "justice", "court", "woman", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2696\ufe0f" src="1f469-200d-2696-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_judge: { - keywords: [ "justice", "court", "man", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2696\ufe0f" src="1f468-200d-2696-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_superhero: { - keywords: [ "woman", "female", "good", "heroine", "superpowers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2640\ufe0f" src="1f9b8-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_superhero: { - keywords: [ "man", "male", "good", "hero", "superpowers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2642\ufe0f" src="1f9b8-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_supervillain: { - keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2640\ufe0f" src="1f9b9-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_supervillain: { - keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2642\ufe0f" src="1f9b9-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - mrs_claus: { - keywords: [ "woman", "female", "xmas", "mother christmas" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd36" src="1f936.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - santa: { - keywords: [ "festival", "man", "male", "xmas", "father christmas" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf85" src="1f385.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - sorceress: { - keywords: [ "woman", "female", "mage", "witch" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2640\ufe0f" src="1f9d9-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - wizard: { - keywords: [ "man", "male", "mage", "sorcerer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2642\ufe0f" src="1f9d9-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_elf: { - keywords: [ "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2640\ufe0f" src="1f9dd-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_elf: { - keywords: [ "man", "male" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2642\ufe0f" src="1f9dd-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_vampire: { - keywords: [ "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2640\ufe0f" src="1f9db-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_vampire: { - keywords: [ "man", "male", "dracula" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2642\ufe0f" src="1f9db-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_zombie: { - keywords: [ "woman", "female", "undead", "walking dead" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2640\ufe0f" src="1f9df-200d-2640-fe0f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - man_zombie: { - keywords: [ "man", "male", "dracula", "undead", "walking dead" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2642\ufe0f" src="1f9df-200d-2642-fe0f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - woman_genie: { - keywords: [ "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2640\ufe0f" src="1f9de-200d-2640-fe0f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - man_genie: { - keywords: [ "man", "male" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2642\ufe0f" src="1f9de-200d-2642-fe0f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - mermaid: { - keywords: [ "woman", "female", "merwoman", "ariel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2640\ufe0f" src="1f9dc-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - merman: { - keywords: [ "man", "male", "triton" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2642\ufe0f" src="1f9dc-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_fairy: { - keywords: [ "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2640\ufe0f" src="1f9da-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_fairy: { - keywords: [ "man", "male" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2642\ufe0f" src="1f9da-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - angel: { - keywords: [ "heaven", "wings", "halo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7c" src="1f47c.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - pregnant_woman: { - keywords: [ "baby" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd30" src="1f930.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - breastfeeding: { - keywords: [ "nursing", "baby" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd31" src="1f931.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - princess: { - keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc78" src="1f478.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - prince: { - keywords: [ "boy", "man", "male", "crown", "royal", "king" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd34" src="1f934.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - bride_with_veil: { - keywords: [ "couple", "marriage", "wedding", "woman", "bride" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc70" src="1f470.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_in_tuxedo: { - keywords: [ "couple", "marriage", "wedding", "groom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd35" src="1f935.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - running_woman: { - keywords: [ "woman", "walking", "exercise", "race", "running", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3\u200d\u2640\ufe0f" src="1f3c3-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - running_man: { - keywords: [ "man", "walking", "exercise", "race", "running" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3" src="1f3c3.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - walking_woman: { - keywords: [ "human", "feet", "steps", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6\u200d\u2640\ufe0f" src="1f6b6-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - walking_man: { - keywords: [ "human", "feet", "steps" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6" src="1f6b6.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - dancer: { - keywords: [ "female", "girl", "woman", "fun" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc83" src="1f483.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_dancing: { - keywords: [ "male", "boy", "fun", "dancer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd7a" src="1f57a.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - dancing_women: { - keywords: [ "female", "bunny", "women", "girls" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f" src="1f46f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - dancing_men: { - keywords: [ "male", "bunny", "men", "boys" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f\u200d\u2642\ufe0f" src="1f46f-200d-2642-fe0f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - couple: { - keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6b" src="1f46b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - two_men_holding_hands: { - keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6c" src="1f46c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - two_women_holding_hands: { - keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6d" src="1f46d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - bowing_woman: { - keywords: [ "woman", "female", "girl" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47\u200d\u2640\ufe0f" src="1f647-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - bowing_man: { - keywords: [ "man", "male", "boy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47" src="1f647.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_facepalming: { - keywords: [ "man", "male", "boy", "disbelief" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2642\ufe0f" src="1f926-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_facepalming: { - keywords: [ "woman", "female", "girl", "disbelief" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2640\ufe0f" src="1f926-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_shrugging: { - keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37" src="1f937.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_shrugging: { - keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37\u200d\u2642\ufe0f" src="1f937-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_woman: { - keywords: [ "female", "girl", "woman", "human", "information" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81" src="1f481.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_man: { - keywords: [ "male", "boy", "man", "human", "information" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81\u200d\u2642\ufe0f" src="1f481-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - no_good_woman: { - keywords: [ "female", "girl", "woman", "nope" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45" src="1f645.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - no_good_man: { - keywords: [ "male", "boy", "man", "nope" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45\u200d\u2642\ufe0f" src="1f645-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - ok_woman: { - keywords: [ "women", "girl", "female", "pink", "human", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46" src="1f646.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - ok_man: { - keywords: [ "men", "boy", "male", "blue", "human", "man" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46\u200d\u2642\ufe0f" src="1f646-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_woman: { - keywords: [ "female", "girl", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b" src="1f64b.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_man: { - keywords: [ "male", "boy", "man" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b\u200d\u2642\ufe0f" src="1f64b-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - pouting_woman: { - keywords: [ "female", "girl", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e" src="1f64e.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - pouting_man: { - keywords: [ "male", "boy", "man" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e\u200d\u2642\ufe0f" src="1f64e-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - frowning_woman: { - keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d" src="1f64d.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - frowning_man: { - keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d\u200d\u2642\ufe0f" src="1f64d-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - haircut_woman: { - keywords: [ "female", "girl", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87" src="1f487.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - haircut_man: { - keywords: [ "male", "boy", "man" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87\u200d\u2642\ufe0f" src="1f487-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - massage_woman: { - keywords: [ "female", "girl", "woman", "head" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86" src="1f486.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - massage_man: { - keywords: [ "male", "boy", "man", "head" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86\u200d\u2642\ufe0f" src="1f486-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - woman_in_steamy_room: { - keywords: [ "female", "woman", "spa", "steamroom", "sauna" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2640\ufe0f" src="1f9d6-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - man_in_steamy_room: { - keywords: [ "male", "man", "spa", "steamroom", "sauna" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2642\ufe0f" src="1f9d6-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "people" - }, - couple_with_heart_woman_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc91" src="1f491.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_woman_woman: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f469.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_man_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f468.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8f" src="1f48f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_woman_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_man: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy: { - keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6a" src="1f46a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl: { - keywords: [ "home", "parents", "people", "human", "child" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f467-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f466-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f467-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f467-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f467-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f466-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f467-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f467-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f466-200d-1f466.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f467-200d-1f467.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - yarn: { - keywords: [ "ball", "crochet", "knit" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf6" src="1f9f6.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - thread: { - keywords: [ "needle", "sewing", "spool", "string" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf5" src="1f9f5.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - coat: { - keywords: [ "jacket" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde5" src="1f9e5.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - labcoat: { - keywords: [ "doctor", "experiment", "scientist", "chemist" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7c" src="1f97c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - womans_clothes: { - keywords: [ "fashion", "shopping_bags", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5a" src="1f45a.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - tshirt: { - keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc55" src="1f455.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - jeans: { - keywords: [ "fashion", "shopping" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc56" src="1f456.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - necktie: { - keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc54" src="1f454.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - dress: { - keywords: [ "clothes", "fashion", "shopping" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc57" src="1f457.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - bikini: { - keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc59" src="1f459.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - kimono: { - keywords: [ "dress", "fashion", "women", "female", "japanese" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc58" src="1f458.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - lipstick: { - keywords: [ "female", "girl", "fashion", "woman" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc84" src="1f484.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - kiss: { - keywords: [ "face", "lips", "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8b" src="1f48b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - footprints: { - keywords: [ "feet", "tracking", "walking", "beach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc63" src="1f463.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - flat_shoe: { - keywords: [ "ballet", "slip-on", "slipper" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7f" src="1f97f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - high_heel: { - keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc60" src="1f460.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - sandal: { - keywords: [ "shoes", "fashion", "flip flops" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc61" src="1f461.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - boot: { - keywords: [ "shoes", "fashion" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc62" src="1f462.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - mans_shoe: { - keywords: [ "fashion", "male" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5e" src="1f45e.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - athletic_shoe: { - keywords: [ "shoes", "sports", "sneakers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5f" src="1f45f.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - hiking_boot: { - keywords: [ "backpacking", "camping", "hiking" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7e" src="1f97e.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - socks: { - keywords: [ "stockings", "clothes" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde6" src="1f9e6.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - gloves: { - keywords: [ "hands", "winter", "clothes" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde4" src="1f9e4.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - scarf: { - keywords: [ "neck", "winter", "clothes" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde3" src="1f9e3.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - womans_hat: { - keywords: [ "fashion", "accessories", "female", "lady", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc52" src="1f452.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - tophat: { - keywords: [ "magic", "gentleman", "classy", "circus" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa9" src="1f3a9.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - billed_hat: { - keywords: [ "cap", "baseball" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde2" src="1f9e2.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - rescue_worker_helmet: { - keywords: [ "construction", "build" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d1" src="26d1.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - mortar_board: { - keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf93" src="1f393.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - crown: { - keywords: [ "king", "kod", "leader", "royalty", "lord" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc51" src="1f451.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - school_satchel: { - keywords: [ "student", "education", "bag", "backpack" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf92" src="1f392.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - luggage: { - keywords: [ "packing", "travel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf3" src="1f9f3.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - pouch: { - keywords: [ "bag", "accessories", "shopping" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5d" src="1f45d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - purse: { - keywords: [ "fashion", "accessories", "money", "sales", "shopping" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5b" src="1f45b.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - handbag: { - keywords: [ "fashion", "accessory", "accessories", "shopping" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5c" src="1f45c.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - briefcase: { - keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbc" src="1f4bc.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - eyeglasses: { - keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc53" src="1f453.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - dark_sunglasses: { - keywords: [ "face", "cool", "accessories" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd76" src="1f576.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - goggles: { - keywords: [ "eyes", "protection", "safety" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7d" src="1f97d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - ring: { - keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8d" src="1f48d.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - closed_umbrella: { - keywords: [ "weather", "rain", "drizzle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf02" src="1f302.png"/>', - fitzpatrick_scale: false, - category: "people" - }, - dog: { - keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc36" src="1f436.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat: { - keywords: [ "animal", "meow", "nature", "pet", "kitten" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc31" src="1f431.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse: { - keywords: [ "animal", "nature", "cheese_wedge", "rodent" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2d" src="1f42d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hamster: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc39" src="1f439.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit: { - keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc30" src="1f430.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fox_face: { - keywords: [ "animal", "nature", "face" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8a" src="1f98a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bear: { - keywords: [ "animal", "nature", "wild" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3b" src="1f43b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - panda_face: { - keywords: [ "animal", "nature", "panda" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3c" src="1f43c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - koala: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc28" src="1f428.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger: { - keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2f" src="1f42f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lion: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd81" src="1f981.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2e" src="1f42e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig: { - keywords: [ "animal", "oink", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc37" src="1f437.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig_nose: { - keywords: [ "animal", "oink" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3d" src="1f43d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - frog: { - keywords: [ "animal", "nature", "croak", "toad" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc38" src="1f438.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - squid: { - keywords: [ "animal", "nature", "ocean", "sea" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd91" src="1f991.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - octopus: { - keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc19" src="1f419.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shrimp: { - keywords: [ "animal", "ocean", "nature", "seafood" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd90" src="1f990.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey_face: { - keywords: [ "animal", "nature", "circus" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc35" src="1f435.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - gorilla: { - keywords: [ "animal", "nature", "circus" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8d" src="1f98d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - see_no_evil: { - keywords: [ "monkey", "animal", "nature", "haha" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude48" src="1f648.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hear_no_evil: { - keywords: [ "animal", "monkey", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude49" src="1f649.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - speak_no_evil: { - keywords: [ "monkey", "animal", "nature", "omg" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4a" src="1f64a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey: { - keywords: [ "animal", "nature", "banana", "circus" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc12" src="1f412.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chicken: { - keywords: [ "animal", "cluck", "nature", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc14" src="1f414.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - penguin: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc27" src="1f427.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bird: { - keywords: [ "animal", "nature", "fly", "tweet", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc26" src="1f426.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - baby_chick: { - keywords: [ "animal", "chicken", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc24" src="1f424.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatching_chick: { - keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc23" src="1f423.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatched_chick: { - keywords: [ "animal", "chicken", "baby", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc25" src="1f425.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - duck: { - keywords: [ "animal", "nature", "bird", "mallard" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd86" src="1f986.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - eagle: { - keywords: [ "animal", "nature", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd85" src="1f985.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - owl: { - keywords: [ "animal", "nature", "bird", "hoot" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd89" src="1f989.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bat: { - keywords: [ "animal", "nature", "blind", "vampire" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd87" src="1f987.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wolf: { - keywords: [ "animal", "nature", "wild" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3a" src="1f43a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boar: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc17" src="1f417.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - horse: { - keywords: [ "animal", "brown", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc34" src="1f434.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - unicorn: { - keywords: [ "animal", "nature", "mystical" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd84" src="1f984.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - honeybee: { - keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1d" src="1f41d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bug: { - keywords: [ "animal", "insect", "nature", "worm" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1b" src="1f41b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - butterfly: { - keywords: [ "animal", "insect", "nature", "caterpillar" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8b" src="1f98b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snail: { - keywords: [ "slow", "animal", "shell" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0c" src="1f40c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - beetle: { - keywords: [ "animal", "insect", "nature", "ladybug" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1e" src="1f41e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ant: { - keywords: [ "animal", "insect", "nature", "bug" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1c" src="1f41c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - grasshopper: { - keywords: [ "animal", "cricket", "chirp" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd97" src="1f997.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider: { - keywords: [ "animal", "arachnid" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd77" src="1f577.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - scorpion: { - keywords: [ "animal", "arachnid" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd82" src="1f982.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crab: { - keywords: [ "animal", "crustacean" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd80" src="1f980.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snake: { - keywords: [ "animal", "evil", "nature", "hiss", "python" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0d" src="1f40d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lizard: { - keywords: [ "animal", "nature", "reptile" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8e" src="1f98e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - "t-rex": { - keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd96" src="1f996.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sauropod: { - keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd95" src="1f995.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turtle: { - keywords: [ "animal", "slow", "nature", "tortoise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc22" src="1f422.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tropical_fish: { - keywords: [ "animal", "swim", "ocean", "beach", "nemo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc20" src="1f420.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fish: { - keywords: [ "animal", "food", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1f" src="1f41f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blowfish: { - keywords: [ "animal", "nature", "food", "sea", "ocean" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc21" src="1f421.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dolphin: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2c" src="1f42c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shark: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd88" src="1f988.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale: { - keywords: [ "animal", "nature", "sea", "ocean" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc33" src="1f433.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale2: { - keywords: [ "animal", "nature", "sea", "ocean" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0b" src="1f40b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crocodile: { - keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0a" src="1f40a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leopard: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc06" src="1f406.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zebra: { - keywords: [ "animal", "nature", "stripes", "safari" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd93" src="1f993.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger2: { - keywords: [ "animal", "nature", "roar" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc05" src="1f405.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - water_buffalo: { - keywords: [ "animal", "nature", "ox", "cow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc03" src="1f403.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ox: { - keywords: [ "animal", "cow", "beef" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc02" src="1f402.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow2: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc04" src="1f404.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deer: { - keywords: [ "animal", "nature", "horns", "venison" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8c" src="1f98c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dromedary_camel: { - keywords: [ "animal", "hot", "desert", "hump" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2a" src="1f42a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - camel: { - keywords: [ "animal", "nature", "hot", "desert", "hump" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2b" src="1f42b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - giraffe: { - keywords: [ "animal", "nature", "spots", "safari" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd92" src="1f992.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - elephant: { - keywords: [ "animal", "nature", "nose", "th", "circus" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc18" src="1f418.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rhinoceros: { - keywords: [ "animal", "nature", "horn" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8f" src="1f98f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - goat: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc10" src="1f410.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ram: { - keywords: [ "animal", "sheep", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0f" src="1f40f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sheep: { - keywords: [ "animal", "nature", "wool", "shipit" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc11" src="1f411.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - racehorse: { - keywords: [ "animal", "gamble", "luck" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0e" src="1f40e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig2: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc16" src="1f416.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rat: { - keywords: [ "animal", "mouse", "rodent" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc00" src="1f400.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse2: { - keywords: [ "animal", "nature", "rodent" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc01" src="1f401.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rooster: { - keywords: [ "animal", "nature", "chicken" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc13" src="1f413.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turkey: { - keywords: [ "animal", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd83" src="1f983.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dove: { - keywords: [ "animal", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4a" src="1f54a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dog2: { - keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc15" src="1f415.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - poodle: { - keywords: [ "dog", "animal", "101", "nature", "pet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc29" src="1f429.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat2: { - keywords: [ "animal", "meow", "pet", "cats" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc08" src="1f408.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit2: { - keywords: [ "animal", "nature", "pet", "magic", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc07" src="1f407.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chipmunk: { - keywords: [ "animal", "nature", "rodent", "squirrel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3f" src="1f43f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hedgehog: { - keywords: [ "animal", "nature", "spiny" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd94" src="1f994.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - raccoon: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9d" src="1f99d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - llama: { - keywords: [ "animal", "nature", "alpaca" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd99" src="1f999.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hippopotamus: { - keywords: [ "animal", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9b" src="1f99b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - kangaroo: { - keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd98" src="1f998.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - badger: { - keywords: [ "animal", "nature", "honey" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda1" src="1f9a1.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - swan: { - keywords: [ "animal", "nature", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda2" src="1f9a2.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - peacock: { - keywords: [ "animal", "nature", "peahen", "bird" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9a" src="1f99a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - parrot: { - keywords: [ "animal", "nature", "bird", "pirate", "talk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9c" src="1f99c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lobster: { - keywords: [ "animal", "nature", "bisque", "claws", "seafood" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9e" src="1f99e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mosquito: { - keywords: [ "animal", "nature", "insect", "malaria" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9f" src="1f99f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - paw_prints: { - keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3e" src="1f43e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc09" src="1f409.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon_face: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc32" src="1f432.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cactus: { - keywords: [ "vegetable", "plant", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf35" src="1f335.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - christmas_tree: { - keywords: [ "festival", "vacation", "december", "xmas", "celebration" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf84" src="1f384.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - evergreen_tree: { - keywords: [ "plant", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf32" src="1f332.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deciduous_tree: { - keywords: [ "plant", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf33" src="1f333.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - palm_tree: { - keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf34" src="1f334.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - seedling: { - keywords: [ "plant", "nature", "grass", "lawn", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf31" src="1f331.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - herb: { - keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3f" src="1f33f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shamrock: { - keywords: [ "vegetable", "plant", "nature", "irish", "clover" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2618" src="2618.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - four_leaf_clover: { - keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf40" src="1f340.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bamboo: { - keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8d" src="1f38d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tanabata_tree: { - keywords: [ "plant", "nature", "branch", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8b" src="1f38b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leaves: { - keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf43" src="1f343.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fallen_leaf: { - keywords: [ "nature", "plant", "vegetable", "leaves" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf42" src="1f342.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - maple_leaf: { - keywords: [ "nature", "plant", "vegetable", "ca", "fall" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf41" src="1f341.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ear_of_rice: { - keywords: [ "nature", "plant" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3e" src="1f33e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hibiscus: { - keywords: [ "plant", "vegetable", "flowers", "beach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3a" src="1f33a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunflower: { - keywords: [ "nature", "plant", "fall" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3b" src="1f33b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rose: { - keywords: [ "flowers", "valentines", "love", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf39" src="1f339.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wilted_flower: { - keywords: [ "plant", "nature", "flower" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd40" src="1f940.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tulip: { - keywords: [ "flowers", "plant", "nature", "summer", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf37" src="1f337.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blossom: { - keywords: [ "nature", "flowers", "yellow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3c" src="1f33c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cherry_blossom: { - keywords: [ "nature", "plant", "spring", "flower" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf38" src="1f338.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bouquet: { - keywords: [ "flowers", "nature", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc90" src="1f490.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mushroom: { - keywords: [ "plant", "vegetable" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf44" src="1f344.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chestnut: { - keywords: [ "food", "squirrel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf30" src="1f330.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - jack_o_lantern: { - keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf83" src="1f383.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shell: { - keywords: [ "nature", "sea", "beach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1a" src="1f41a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider_web: { - keywords: [ "animal", "insect", "arachnid", "silk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd78" src="1f578.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_americas: { - keywords: [ "globe", "world", "USA", "international" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0e" src="1f30e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_africa: { - keywords: [ "globe", "world", "international" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0d" src="1f30d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_asia: { - keywords: [ "globe", "world", "east", "international" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0f" src="1f30f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon: { - keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf15" src="1f315.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_gibbous_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf16" src="1f316.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf17" src="1f317.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf18" src="1f318.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf11" src="1f311.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf12" src="1f312.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf13" src="1f313.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_gibbous_moon: { - keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf14" src="1f314.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1a" src="1f31a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1d" src="1f31d.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1b" src="1f31b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1c" src="1f31c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_with_face: { - keywords: [ "nature", "morning", "sky" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1e" src="1f31e.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crescent_moon: { - keywords: [ "night", "sleep", "sky", "evening", "magic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf19" src="1f319.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star: { - keywords: [ "night", "yellow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b50" src="2b50.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star2: { - keywords: [ "night", "sparkle", "awesome", "good", "magic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1f" src="1f31f.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dizzy: { - keywords: [ "star", "sparkle", "shoot", "magic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcab" src="1f4ab.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sparkles: { - keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2728" src="2728.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - comet: { - keywords: [ "space" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2604" src="2604.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunny: { - keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2600\ufe0f" src="2600.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_small_cloud: { - keywords: [ "weather" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf24" src="1f324.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - partly_sunny: { - keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c5" src="26c5.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_large_cloud: { - keywords: [ "weather" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf25" src="1f325.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_rain_cloud: { - keywords: [ "weather" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf26" src="1f326.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud: { - keywords: [ "weather", "sky" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2601\ufe0f" src="2601.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_rain: { - keywords: [ "weather" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf27" src="1f327.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning_and_rain: { - keywords: [ "weather", "lightning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c8" src="26c8.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning: { - keywords: [ "weather", "thunder" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf29" src="1f329.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zap: { - keywords: [ "thunder", "weather", "lightning bolt", "fast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a1" src="26a1.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fire: { - keywords: [ "hot", "cook", "flame" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd25" src="1f525.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boom: { - keywords: [ "bomb", "explode", "explosion", "collision", "blown" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca5" src="1f4a5.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowflake: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2744\ufe0f" src="2744.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_snow: { - keywords: [ "weather" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf28" src="1f328.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c4" src="26c4.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman_with_snow: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2603" src="2603.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wind_face: { - keywords: [ "gust", "air" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2c" src="1f32c.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dash: { - keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca8" src="1f4a8.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tornado: { - keywords: [ "weather", "cyclone", "twister" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2a" src="1f32a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fog: { - keywords: [ "weather" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2b" src="1f32b.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - open_umbrella: { - keywords: [ "weather", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2602" src="2602.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - umbrella: { - keywords: [ "rainy", "weather", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2614" src="2614.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - droplet: { - keywords: [ "water", "drip", "faucet", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca7" src="1f4a7.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sweat_drops: { - keywords: [ "water", "drip", "oops" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca6" src="1f4a6.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ocean: { - keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0a" src="1f30a.png"/>', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - green_apple: { - keywords: [ "fruit", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4f" src="1f34f.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - apple: { - keywords: [ "fruit", "mac", "school" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4e" src="1f34e.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pear: { - keywords: [ "fruit", "nature", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf50" src="1f350.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tangerine: { - keywords: [ "food", "fruit", "nature", "orange" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4a" src="1f34a.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lemon: { - keywords: [ "fruit", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4b" src="1f34b.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - banana: { - keywords: [ "fruit", "food", "monkey" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4c" src="1f34c.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - watermelon: { - keywords: [ "fruit", "food", "picnic", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf49" src="1f349.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - grapes: { - keywords: [ "fruit", "food", "wine" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf47" src="1f347.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - strawberry: { - keywords: [ "fruit", "food", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf53" src="1f353.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - melon: { - keywords: [ "fruit", "nature", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf48" src="1f348.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cherries: { - keywords: [ "food", "fruit" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf52" src="1f352.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peach: { - keywords: [ "fruit", "nature", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf51" src="1f351.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pineapple: { - keywords: [ "fruit", "nature", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4d" src="1f34d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coconut: { - keywords: [ "fruit", "nature", "food", "palm" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd65" src="1f965.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - kiwi_fruit: { - keywords: [ "fruit", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5d" src="1f95d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - mango: { - keywords: [ "fruit", "food", "tropical" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6d" src="1f96d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - avocado: { - keywords: [ "fruit", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd51" src="1f951.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - broccoli: { - keywords: [ "fruit", "food", "vegetable" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd66" src="1f966.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tomato: { - keywords: [ "fruit", "vegetable", "nature", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf45" src="1f345.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - eggplant: { - keywords: [ "vegetable", "nature", "food", "aubergine" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf46" src="1f346.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cucumber: { - keywords: [ "fruit", "food", "pickle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd52" src="1f952.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - carrot: { - keywords: [ "vegetable", "food", "orange" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd55" src="1f955.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hot_pepper: { - keywords: [ "food", "spicy", "chilli", "chili" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf36" src="1f336.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - potato: { - keywords: [ "food", "tuber", "vegatable", "starch" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd54" src="1f954.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - corn: { - keywords: [ "food", "vegetable", "plant" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3d" src="1f33d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - leafy_greens: { - keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6c" src="1f96c.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sweet_potato: { - keywords: [ "food", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf60" src="1f360.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peanuts: { - keywords: [ "food", "nut" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5c" src="1f95c.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - honey_pot: { - keywords: [ "bees", "sweet", "kitchen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6f" src="1f36f.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - croissant: { - keywords: [ "food", "bread", "french" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd50" src="1f950.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bread: { - keywords: [ "food", "wheat", "breakfast", "toast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5e" src="1f35e.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baguette_bread: { - keywords: [ "food", "bread", "french" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd56" src="1f956.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bagel: { - keywords: [ "food", "bread", "bakery", "schmear" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6f" src="1f96f.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pretzel: { - keywords: [ "food", "bread", "twisted" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd68" src="1f968.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cheese: { - keywords: [ "food", "chadder" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc0" src="1f9c0.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - egg: { - keywords: [ "food", "chicken", "breakfast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5a" src="1f95a.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bacon: { - keywords: [ "food", "breakfast", "pork", "pig", "meat" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd53" src="1f953.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - steak: { - keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd69" src="1f969.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pancakes: { - keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5e" src="1f95e.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - poultry_leg: { - keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf57" src="1f357.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - meat_on_bone: { - keywords: [ "good", "food", "drumstick" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf56" src="1f356.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bone: { - keywords: [ "skeleton" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb4" src="1f9b4.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_shrimp: { - keywords: [ "food", "animal", "appetizer", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf64" src="1f364.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_egg: { - keywords: [ "food", "breakfast", "kitchen", "egg" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf73" src="1f373.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hamburger: { - keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf54" src="1f354.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fries: { - keywords: [ "chips", "snack", "fast food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5f" src="1f35f.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stuffed_flatbread: { - keywords: [ "food", "flatbread", "stuffed", "gyro" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd59" src="1f959.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hotdog: { - keywords: [ "food", "frankfurter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2d" src="1f32d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pizza: { - keywords: [ "food", "party" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf55" src="1f355.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sandwich: { - keywords: [ "food", "lunch", "bread" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6a" src="1f96a.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - canned_food: { - keywords: [ "food", "soup" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6b" src="1f96b.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spaghetti: { - keywords: [ "food", "italian", "noodle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5d" src="1f35d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - taco: { - keywords: [ "food", "mexican" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2e" src="1f32e.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - burrito: { - keywords: [ "food", "mexican" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2f" src="1f32f.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - green_salad: { - keywords: [ "food", "healthy", "lettuce" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd57" src="1f957.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shallow_pan_of_food: { - keywords: [ "food", "cooking", "casserole", "paella" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd58" src="1f958.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ramen: { - keywords: [ "food", "japanese", "noodle", "chopsticks" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5c" src="1f35c.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stew: { - keywords: [ "food", "meat", "soup" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf72" src="1f372.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fish_cake: { - keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf65" src="1f365.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fortune_cookie: { - keywords: [ "food", "prophecy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd60" src="1f960.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sushi: { - keywords: [ "food", "fish", "japanese", "rice" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf63" src="1f363.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bento: { - keywords: [ "food", "japanese", "box" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf71" src="1f371.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - curry: { - keywords: [ "food", "spicy", "hot", "indian" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5b" src="1f35b.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_ball: { - keywords: [ "food", "japanese" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf59" src="1f359.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice: { - keywords: [ "food", "china", "asian" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5a" src="1f35a.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_cracker: { - keywords: [ "food", "japanese" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf58" src="1f358.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - oden: { - keywords: [ "food", "japanese" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf62" src="1f362.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dango: { - keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf61" src="1f361.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shaved_ice: { - keywords: [ "hot", "dessert", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf67" src="1f367.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ice_cream: { - keywords: [ "food", "hot", "dessert" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf68" src="1f368.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - icecream: { - keywords: [ "food", "hot", "dessert", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf66" src="1f366.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pie: { - keywords: [ "food", "dessert", "pastry" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd67" src="1f967.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cake: { - keywords: [ "food", "dessert" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf70" src="1f370.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cupcake: { - keywords: [ "food", "dessert", "bakery", "sweet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc1" src="1f9c1.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - moon_cake: { - keywords: [ "food", "autumn" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6e" src="1f96e.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - birthday: { - keywords: [ "food", "dessert", "cake" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf82" src="1f382.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - custard: { - keywords: [ "dessert", "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6e" src="1f36e.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - candy: { - keywords: [ "snack", "dessert", "sweet", "lolly" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6c" src="1f36c.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lollipop: { - keywords: [ "food", "snack", "candy", "sweet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6d" src="1f36d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chocolate_bar: { - keywords: [ "food", "snack", "dessert", "sweet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6b" src="1f36b.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - popcorn: { - keywords: [ "food", "movie theater", "films", "snack" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7f" src="1f37f.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dumpling: { - keywords: [ "food", "empanada", "pierogi", "potsticker" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5f" src="1f95f.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - doughnut: { - keywords: [ "food", "dessert", "snack", "sweet", "donut" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf69" src="1f369.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cookie: { - keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6a" src="1f36a.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - milk_glass: { - keywords: [ "beverage", "drink", "cow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5b" src="1f95b.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beer: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7a" src="1f37a.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beers: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7b" src="1f37b.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - clinking_glasses: { - keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd42" src="1f942.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - wine_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf77" src="1f377.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tumbler_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd43" src="1f943.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cocktail: { - keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf78" src="1f378.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tropical_drink: { - keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf79" src="1f379.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - champagne: { - keywords: [ "drink", "wine", "bottle", "celebration" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7e" src="1f37e.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sake: { - keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf76" src="1f376.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tea: { - keywords: [ "drink", "bowl", "breakfast", "green", "british" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf75" src="1f375.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cup_with_straw: { - keywords: [ "drink", "soda" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd64" src="1f964.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coffee: { - keywords: [ "beverage", "caffeine", "latte", "espresso" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2615" src="2615.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baby_bottle: { - keywords: [ "food", "container", "milk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7c" src="1f37c.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - salt: { - keywords: [ "condiment", "shaker" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc2" src="1f9c2.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spoon: { - keywords: [ "cutlery", "kitchen", "tableware" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd44" src="1f944.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fork_and_knife: { - keywords: [ "cutlery", "kitchen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf74" src="1f374.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - plate_with_cutlery: { - keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7d" src="1f37d.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bowl_with_spoon: { - keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd63" src="1f963.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - takeout_box: { - keywords: [ "food", "leftovers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd61" src="1f961.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chopsticks: { - keywords: [ "food" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd62" src="1f962.png"/>', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - soccer: { - keywords: [ "sports", "football" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26bd" src="26bd.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - basketball: { - keywords: [ "sports", "balls", "NBA" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc0" src="1f3c0.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - football: { - keywords: [ "sports", "balls", "NFL" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc8" src="1f3c8.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - baseball: { - keywords: [ "sports", "balls" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26be" src="26be.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - softball: { - keywords: [ "sports", "balls" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4e" src="1f94e.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - tennis: { - keywords: [ "sports", "balls", "green" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbe" src="1f3be.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - volleyball: { - keywords: [ "sports", "balls" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd0" src="1f3d0.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - rugby_football: { - keywords: [ "sports", "team" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc9" src="1f3c9.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - flying_disc: { - keywords: [ "sports", "frisbee", "ultimate" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4f" src="1f94f.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - "8ball": { - keywords: [ "pool", "hobby", "game", "luck", "magic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb1" src="1f3b1.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - golf: { - keywords: [ "sports", "business", "flag", "hole", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f3" src="26f3.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - golfing_woman: { - keywords: [ "sports", "business", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f" src="1f3cc-fe0f-200d-2640-fe0f.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - golfing_man: { - keywords: [ "sports", "business" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc" src="1f3cc.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - ping_pong: { - keywords: [ "sports", "pingpong" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd3" src="1f3d3.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - badminton: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff8" src="1f3f8.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - goal_net: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd45" src="1f945.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - ice_hockey: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd2" src="1f3d2.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - field_hockey: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd1" src="1f3d1.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - lacrosse: { - keywords: [ "sports", "ball", "stick" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4d" src="1f94d.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - cricket: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcf" src="1f3cf.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - ski: { - keywords: [ "sports", "winter", "cold", "snow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbf" src="1f3bf.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - skier: { - keywords: [ "sports", "winter", "snow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f7" src="26f7.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - snowboarder: { - keywords: [ "sports", "winter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc2" src="1f3c2.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - person_fencing: { - keywords: [ "sports", "fencing", "sword" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3a" src="1f93a.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - women_wrestling: { - keywords: [ "sports", "wrestlers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2640\ufe0f" src="1f93c-200d-2640-fe0f.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - men_wrestling: { - keywords: [ "sports", "wrestlers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2642\ufe0f" src="1f93c-200d-2642-fe0f.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - woman_cartwheeling: { - keywords: [ "gymnastics" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2640\ufe0f" src="1f938-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - man_cartwheeling: { - keywords: [ "gymnastics" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2642\ufe0f" src="1f938-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_handball: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2640\ufe0f" src="1f93e-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_handball: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2642\ufe0f" src="1f93e-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - ice_skate: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f8" src="26f8.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - curling_stone: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4c" src="1f94c.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - skateboard: { - keywords: [ "board" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef9" src="1f6f9.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - sled: { - keywords: [ "sleigh", "luge", "toboggan" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef7" src="1f6f7.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - bow_and_arrow: { - keywords: [ "sports" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff9" src="1f3f9.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - fishing_pole_and_fish: { - keywords: [ "food", "hobby", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa3" src="1f3a3.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - boxing_glove: { - keywords: [ "sports", "fighting" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4a" src="1f94a.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - martial_arts_uniform: { - keywords: [ "judo", "karate", "taekwondo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4b" src="1f94b.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - rowing_woman: { - keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3\u200d\u2640\ufe0f" src="1f6a3-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - rowing_man: { - keywords: [ "sports", "hobby", "water", "ship" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3" src="1f6a3.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - climbing_woman: { - keywords: [ "sports", "hobby", "woman", "female", "rock" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2640\ufe0f" src="1f9d7-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - climbing_man: { - keywords: [ "sports", "hobby", "man", "male", "rock" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2642\ufe0f" src="1f9d7-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - swimming_woman: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca\u200d\u2640\ufe0f" src="1f3ca-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - swimming_man: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca" src="1f3ca.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_water_polo: { - keywords: [ "sports", "pool" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2640\ufe0f" src="1f93d-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_water_polo: { - keywords: [ "sports", "pool" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2642\ufe0f" src="1f93d-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - woman_in_lotus_position: { - keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2640\ufe0f" src="1f9d8-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - man_in_lotus_position: { - keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2642\ufe0f" src="1f9d8-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - surfing_woman: { - keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4\u200d\u2640\ufe0f" src="1f3c4-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - surfing_man: { - keywords: [ "sports", "ocean", "sea", "summer", "beach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4" src="1f3c4.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - bath: { - keywords: [ "clean", "shower", "bathroom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec0" src="1f6c0.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - basketball_woman: { - keywords: [ "sports", "human", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9\ufe0f\u200d\u2640\ufe0f" src="26f9-fe0f-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - basketball_man: { - keywords: [ "sports", "human" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9" src="26f9.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_woman: { - keywords: [ "sports", "training", "exercise", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f" src="1f3cb-fe0f-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_man: { - keywords: [ "sports", "training", "exercise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb" src="1f3cb.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - biking_woman: { - keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4\u200d\u2640\ufe0f" src="1f6b4-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - biking_man: { - keywords: [ "sports", "bike", "exercise", "hipster" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4" src="1f6b4.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_woman: { - keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5\u200d\u2640\ufe0f" src="1f6b5-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_man: { - keywords: [ "transportation", "sports", "human", "race", "bike" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5" src="1f6b5.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - horse_racing: { - keywords: [ "animal", "betting", "competition", "gambling", "luck" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc7" src="1f3c7.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - business_suit_levitating: { - keywords: [ "suit", "business", "levitate", "hover", "jump" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd74" src="1f574.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - trophy: { - keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc6" src="1f3c6.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - running_shirt_with_sash: { - keywords: [ "play", "pageant" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbd" src="1f3bd.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - medal_sports: { - keywords: [ "award", "winning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc5" src="1f3c5.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - medal_military: { - keywords: [ "award", "winning", "army" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf96" src="1f396.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - "1st_place_medal": { - keywords: [ "award", "winning", "first" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd47" src="1f947.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - "2nd_place_medal": { - keywords: [ "award", "second" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd48" src="1f948.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - "3rd_place_medal": { - keywords: [ "award", "third" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd49" src="1f949.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - reminder_ribbon: { - keywords: [ "sports", "cause", "support", "awareness" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf97" src="1f397.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - rosette: { - keywords: [ "flower", "decoration", "military" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff5" src="1f3f5.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - ticket: { - keywords: [ "event", "concert", "pass" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfab" src="1f3ab.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - tickets: { - keywords: [ "sports", "concert", "entrance" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9f" src="1f39f.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - performing_arts: { - keywords: [ "acting", "theater", "drama" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfad" src="1f3ad.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - art: { - keywords: [ "design", "paint", "draw", "colors" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa8" src="1f3a8.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - circus_tent: { - keywords: [ "festival", "carnival", "party" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaa" src="1f3aa.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - woman_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2640\ufe0f" src="1f939-200d-2640-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - man_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2642\ufe0f" src="1f939-200d-2642-fe0f.png"/>', - fitzpatrick_scale: true, - category: "activity" - }, - microphone: { - keywords: [ "sound", "music", "PA", "sing", "talkshow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa4" src="1f3a4.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - headphones: { - keywords: [ "music", "score", "gadgets" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa7" src="1f3a7.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - musical_score: { - keywords: [ "treble", "clef", "compose" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbc" src="1f3bc.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - musical_keyboard: { - keywords: [ "piano", "instrument", "compose" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb9" src="1f3b9.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - drum: { - keywords: [ "music", "instrument", "drumsticks", "snare" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd41" src="1f941.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - saxophone: { - keywords: [ "music", "instrument", "jazz", "blues" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb7" src="1f3b7.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - trumpet: { - keywords: [ "music", "brass" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfba" src="1f3ba.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - guitar: { - keywords: [ "music", "instrument" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb8" src="1f3b8.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - violin: { - keywords: [ "music", "instrument", "orchestra", "symphony" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbb" src="1f3bb.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - clapper: { - keywords: [ "movie", "film", "record" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfac" src="1f3ac.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - video_game: { - keywords: [ "play", "console", "PS4", "controller" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfae" src="1f3ae.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - space_invader: { - keywords: [ "game", "arcade", "play" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7e" src="1f47e.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - dart: { - keywords: [ "game", "play", "bar", "target", "bullseye" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaf" src="1f3af.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - game_die: { - keywords: [ "dice", "random", "tabletop", "play", "luck" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb2" src="1f3b2.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - chess_pawn: { - keywords: [ "expendable" ], - char: "\u265f", - fitzpatrick_scale: false, - category: "activity" - }, - slot_machine: { - keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb0" src="1f3b0.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - jigsaw: { - keywords: [ "interlocking", "puzzle", "piece" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde9" src="1f9e9.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - bowling: { - keywords: [ "sports", "fun", "play" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb3" src="1f3b3.png"/>', - fitzpatrick_scale: false, - category: "activity" - }, - red_car: { - keywords: [ "red", "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude97" src="1f697.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - taxi: { - keywords: [ "uber", "vehicle", "cars", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude95" src="1f695.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - blue_car: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude99" src="1f699.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bus: { - keywords: [ "car", "vehicle", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8c" src="1f68c.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - trolleybus: { - keywords: [ "bart", "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8e" src="1f68e.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - racing_car: { - keywords: [ "sports", "race", "fast", "formula", "f1" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfce" src="1f3ce.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - police_car: { - keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude93" src="1f693.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ambulance: { - keywords: [ "health", "911", "hospital" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude91" src="1f691.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fire_engine: { - keywords: [ "transportation", "cars", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude92" src="1f692.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - minibus: { - keywords: [ "vehicle", "car", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude90" src="1f690.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - truck: { - keywords: [ "cars", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9a" src="1f69a.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - articulated_lorry: { - keywords: [ "vehicle", "cars", "transportation", "express" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9b" src="1f69b.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tractor: { - keywords: [ "vehicle", "car", "farming", "agriculture" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9c" src="1f69c.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kick_scooter: { - keywords: [ "vehicle", "kick", "razor" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef4" src="1f6f4.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorcycle: { - keywords: [ "race", "sports", "fast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcd" src="1f3cd.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bike: { - keywords: [ "sports", "bicycle", "exercise", "hipster" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb2" src="1f6b2.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_scooter: { - keywords: [ "vehicle", "vespa", "sasha" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef5" src="1f6f5.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rotating_light: { - keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea8" src="1f6a8.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_police_car: { - keywords: [ "vehicle", "law", "legal", "enforcement", "911" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude94" src="1f694.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_bus: { - keywords: [ "vehicle", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8d" src="1f68d.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_automobile: { - keywords: [ "car", "vehicle", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude98" src="1f698.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_taxi: { - keywords: [ "vehicle", "cars", "uber" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude96" src="1f696.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - aerial_tramway: { - keywords: [ "transportation", "vehicle", "ski" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea1" src="1f6a1.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_cableway: { - keywords: [ "transportation", "vehicle", "ski" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea0" src="1f6a0.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - suspension_railway: { - keywords: [ "vehicle", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9f" src="1f69f.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_car: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude83" src="1f683.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train: { - keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8b" src="1f68b.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - monorail: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9d" src="1f69d.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_side: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude84" src="1f684.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_front: { - keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude85" src="1f685.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - light_rail: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude88" src="1f688.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_railway: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9e" src="1f69e.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - steam_locomotive: { - keywords: [ "transportation", "vehicle", "train" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude82" src="1f682.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train2: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude86" src="1f686.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - metro: { - keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude87" src="1f687.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tram: { - keywords: [ "transportation", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8a" src="1f68a.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - station: { - keywords: [ "transportation", "vehicle", "public" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude89" src="1f689.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flying_saucer: { - keywords: [ "transportation", "vehicle", "ufo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef8" src="1f6f8.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - helicopter: { - keywords: [ "transportation", "vehicle", "fly" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude81" src="1f681.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - small_airplane: { - keywords: [ "flight", "transportation", "fly", "vehicle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee9" src="1f6e9.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - airplane: { - keywords: [ "vehicle", "transportation", "flight", "fly" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2708\ufe0f" src="2708.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_departure: { - keywords: [ "airport", "flight", "landing" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeeb" src="1f6eb.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_arrival: { - keywords: [ "airport", "flight", "boarding" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeec" src="1f6ec.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sailboat: { - keywords: [ "ship", "summer", "transportation", "water", "sailing" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f5" src="26f5.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_boat: { - keywords: [ "ship" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee5" src="1f6e5.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - speedboat: { - keywords: [ "ship", "transportation", "vehicle", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea4" src="1f6a4.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferry: { - keywords: [ "boat", "ship", "yacht" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f4" src="26f4.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - passenger_ship: { - keywords: [ "yacht", "cruise", "ferry" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef3" src="1f6f3.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rocket: { - keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude80" src="1f680.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - artificial_satellite: { - keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef0" src="1f6f0.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - seat: { - keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcba" src="1f4ba.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - canoe: { - keywords: [ "boat", "paddle", "water", "ship" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef6" src="1f6f6.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - anchor: { - keywords: [ "ship", "ferry", "sea", "boat" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2693" src="2693.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - construction: { - keywords: [ "wip", "progress", "caution", "warning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea7" src="1f6a7.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fuelpump: { - keywords: [ "gas station", "petroleum" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fd" src="26fd.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - busstop: { - keywords: [ "transportation", "wait" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8f" src="1f68f.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - vertical_traffic_light: { - keywords: [ "transportation", "driving" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea6" src="1f6a6.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - traffic_light: { - keywords: [ "transportation", "signal" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea5" src="1f6a5.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - checkered_flag: { - keywords: [ "contest", "finishline", "race", "gokart" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc1" src="1f3c1.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ship: { - keywords: [ "transportation", "titanic", "deploy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea2" src="1f6a2.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferris_wheel: { - keywords: [ "photo", "carnival", "londoneye" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa1" src="1f3a1.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - roller_coaster: { - keywords: [ "carnival", "playground", "photo", "fun" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa2" src="1f3a2.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - carousel_horse: { - keywords: [ "photo", "carnival" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa0" src="1f3a0.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - building_construction: { - keywords: [ "wip", "working", "progress" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd7" src="1f3d7.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - foggy: { - keywords: [ "photo", "mountain" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf01" src="1f301.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tokyo_tower: { - keywords: [ "photo", "japanese" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfc" src="1f5fc.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - factory: { - keywords: [ "building", "industry", "pollution", "smoke" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfed" src="1f3ed.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fountain: { - keywords: [ "photo", "summer", "water", "fresh" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f2" src="26f2.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rice_scene: { - keywords: [ "photo", "japan", "asia", "tsukimi" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf91" src="1f391.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain: { - keywords: [ "photo", "nature", "environment" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f0" src="26f0.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_snow: { - keywords: [ "photo", "nature", "environment", "winter", "cold" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd4" src="1f3d4.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mount_fuji: { - keywords: [ "photo", "mountain", "nature", "japanese" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfb" src="1f5fb.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - volcano: { - keywords: [ "photo", "nature", "disaster" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0b" src="1f30b.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japan: { - keywords: [ "nation", "country", "japanese", "asia" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfe" src="1f5fe.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - camping: { - keywords: [ "photo", "outdoors", "tent" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd5" src="1f3d5.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tent: { - keywords: [ "photo", "camping", "outdoors" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fa" src="26fa.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - national_park: { - keywords: [ "photo", "environment", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfde" src="1f3de.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorway: { - keywords: [ "road", "cupertino", "interstate", "highway" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee3" src="1f6e3.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_track: { - keywords: [ "train", "transportation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee4" src="1f6e4.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise: { - keywords: [ "morning", "view", "vacation", "photo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf05" src="1f305.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise_over_mountains: { - keywords: [ "view", "vacation", "photo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf04" src="1f304.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert: { - keywords: [ "photo", "warm", "saharah" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdc" src="1f3dc.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - beach_umbrella: { - keywords: [ "weather", "summer", "sunny", "sand", "mojito" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd6" src="1f3d6.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert_island: { - keywords: [ "photo", "tropical", "mojito" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdd" src="1f3dd.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunrise: { - keywords: [ "photo", "good morning", "dawn" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf07" src="1f307.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunset: { - keywords: [ "photo", "evening", "sky", "buildings" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf06" src="1f306.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - cityscape: { - keywords: [ "photo", "night life", "urban" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd9" src="1f3d9.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - night_with_stars: { - keywords: [ "evening", "city", "downtown" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf03" src="1f303.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bridge_at_night: { - keywords: [ "photo", "sanfrancisco" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf09" src="1f309.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - milky_way: { - keywords: [ "photo", "space", "stars" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0c" src="1f30c.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stars: { - keywords: [ "night", "photo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf20" src="1f320.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sparkler: { - keywords: [ "stars", "night", "shine" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf87" src="1f387.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fireworks: { - keywords: [ "photo", "festival", "carnival", "congratulations" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf86" src="1f386.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rainbow: { - keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf08" src="1f308.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - houses: { - keywords: [ "buildings", "photo" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd8" src="1f3d8.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_castle: { - keywords: [ "building", "royalty", "history" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff0" src="1f3f0.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japanese_castle: { - keywords: [ "photo", "building" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfef" src="1f3ef.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stadium: { - keywords: [ "photo", "place", "sports", "concert", "venue" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdf" src="1f3df.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - statue_of_liberty: { - keywords: [ "american", "newyork" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfd" src="1f5fd.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house: { - keywords: [ "building", "home" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe0" src="1f3e0.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house_with_garden: { - keywords: [ "home", "plant", "nature" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe1" src="1f3e1.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - derelict_house: { - keywords: [ "abandon", "evict", "broken", "building" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfda" src="1f3da.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - office: { - keywords: [ "building", "bureau", "work" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe2" src="1f3e2.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - department_store: { - keywords: [ "building", "shopping", "mall" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfec" src="1f3ec.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - post_office: { - keywords: [ "building", "envelope", "communication" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe3" src="1f3e3.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_post_office: { - keywords: [ "building", "email" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe4" src="1f3e4.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hospital: { - keywords: [ "building", "health", "surgery", "doctor" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe5" src="1f3e5.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bank: { - keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe6" src="1f3e6.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hotel: { - keywords: [ "building", "accomodation", "checkin" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe8" src="1f3e8.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - convenience_store: { - keywords: [ "building", "shopping", "groceries" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfea" src="1f3ea.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - school: { - keywords: [ "building", "student", "education", "learn", "teach" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfeb" src="1f3eb.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - love_hotel: { - keywords: [ "like", "affection", "dating" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe9" src="1f3e9.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - wedding: { - keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc92" src="1f492.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - classical_building: { - keywords: [ "art", "culture", "history" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdb" src="1f3db.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - church: { - keywords: [ "building", "religion", "christ" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ea" src="26ea.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mosque: { - keywords: [ "islam", "worship", "minaret" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4c" src="1f54c.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - synagogue: { - keywords: [ "judaism", "worship", "temple", "jewish" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4d" src="1f54d.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kaaba: { - keywords: [ "mecca", "mosque", "islam" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4b" src="1f54b.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - shinto_shrine: { - keywords: [ "temple", "japan", "kyoto" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26e9" src="26e9.png"/>', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - watch: { - keywords: [ "time", "accessories" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231a" src="231a.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - iphone: { - keywords: [ "technology", "apple", "gadgets", "dial" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf1" src="1f4f1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - calling: { - keywords: [ "iphone", "incoming" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf2" src="1f4f2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - computer: { - keywords: [ "technology", "laptop", "screen", "display", "monitor" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbb" src="1f4bb.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - keyboard: { - keywords: [ "technology", "computer", "type", "input", "text" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2328" src="2328.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - desktop_computer: { - keywords: [ "technology", "computing", "screen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda5" src="1f5a5.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - printer: { - keywords: [ "paper", "ink" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda8" src="1f5a8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - computer_mouse: { - keywords: [ "click" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb1" src="1f5b1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - trackball: { - keywords: [ "technology", "trackpad" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb2" src="1f5b2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - joystick: { - keywords: [ "game", "play" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd79" src="1f579.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - clamp: { - keywords: [ "tool" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddc" src="1f5dc.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - minidisc: { - keywords: [ "technology", "record", "data", "disk", "90s" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbd" src="1f4bd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - floppy_disk: { - keywords: [ "oldschool", "technology", "save", "90s", "80s" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbe" src="1f4be.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - cd: { - keywords: [ "technology", "dvd", "disk", "disc", "90s" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbf" src="1f4bf.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - dvd: { - keywords: [ "cd", "disk", "disc" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc0" src="1f4c0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - vhs: { - keywords: [ "record", "video", "oldschool", "90s", "80s" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfc" src="1f4fc.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - camera: { - keywords: [ "gadgets", "photography" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf7" src="1f4f7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - camera_flash: { - keywords: [ "photography", "gadgets" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf8" src="1f4f8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - video_camera: { - keywords: [ "film", "record" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf9" src="1f4f9.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - movie_camera: { - keywords: [ "film", "record" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa5" src="1f3a5.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - film_projector: { - keywords: [ "video", "tape", "record", "movie" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfd" src="1f4fd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - film_strip: { - keywords: [ "movie" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9e" src="1f39e.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - telephone_receiver: { - keywords: [ "technology", "communication", "dial" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcde" src="1f4de.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - phone: { - keywords: [ "technology", "communication", "dial", "telephone" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u260e\ufe0f" src="260e.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - pager: { - keywords: [ "bbcall", "oldschool", "90s" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdf" src="1f4df.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - fax: { - keywords: [ "communication", "technology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce0" src="1f4e0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - tv: { - keywords: [ "technology", "program", "oldschool", "show", "television" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfa" src="1f4fa.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - radio: { - keywords: [ "communication", "music", "podcast", "program" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfb" src="1f4fb.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - studio_microphone: { - keywords: [ "sing", "recording", "artist", "talkshow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf99" src="1f399.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - level_slider: { - keywords: [ "scale" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9a" src="1f39a.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - control_knobs: { - keywords: [ "dial" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9b" src="1f39b.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - compass: { - keywords: [ "magnetic", "navigation", "orienteering" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udded" src="1f9ed.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - stopwatch: { - keywords: [ "time", "deadline" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f1" src="23f1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - timer_clock: { - keywords: [ "alarm" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f2" src="23f2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - alarm_clock: { - keywords: [ "time", "wake" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f0" src="23f0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - mantelpiece_clock: { - keywords: [ "time" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd70" src="1f570.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - hourglass_flowing_sand: { - keywords: [ "oldschool", "time", "countdown" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f3" src="23f3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - hourglass: { - keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231b" src="231b.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - satellite: { - keywords: [ "communication", "future", "radio", "space" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce1" src="1f4e1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - battery: { - keywords: [ "power", "energy", "sustain" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0b" src="1f50b.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - electric_plug: { - keywords: [ "charger", "power" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0c" src="1f50c.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - bulb: { - keywords: [ "light", "electricity", "idea" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca1" src="1f4a1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - flashlight: { - keywords: [ "dark", "camping", "sight", "night" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd26" src="1f526.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - candle: { - keywords: [ "fire", "wax" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd6f" src="1f56f.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - fire_extinguisher: { - keywords: [ "quench" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddef" src="1f9ef.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - wastebasket: { - keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd1" src="1f5d1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - oil_drum: { - keywords: [ "barrell" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee2" src="1f6e2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - money_with_wings: { - keywords: [ "dollar", "bills", "payment", "sale" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb8" src="1f4b8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - dollar: { - keywords: [ "money", "sales", "bill", "currency" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb5" src="1f4b5.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - yen: { - keywords: [ "money", "sales", "japanese", "dollar", "currency" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb4" src="1f4b4.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - euro: { - keywords: [ "money", "sales", "dollar", "currency" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb6" src="1f4b6.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - pound: { - keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb7" src="1f4b7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - moneybag: { - keywords: [ "dollar", "payment", "coins", "sale" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb0" src="1f4b0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - credit_card: { - keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb3" src="1f4b3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - gem: { - keywords: [ "blue", "ruby", "diamond", "jewelry" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8e" src="1f48e.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - balance_scale: { - keywords: [ "law", "fairness", "weight" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2696" src="2696.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - toolbox: { - keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf0" src="1f9f0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - wrench: { - keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd27" src="1f527.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - hammer: { - keywords: [ "tools", "build", "create" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd28" src="1f528.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_pick: { - keywords: [ "tools", "build", "create" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2692" src="2692.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_wrench: { - keywords: [ "tools", "build", "create" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee0" src="1f6e0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - pick: { - keywords: [ "tools", "dig" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26cf" src="26cf.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - nut_and_bolt: { - keywords: [ "handy", "tools", "fix" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd29" src="1f529.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - gear: { - keywords: [ "cog" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2699" src="2699.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - brick: { - keywords: [ "bricks" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf1" src="1f9f1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - chains: { - keywords: [ "lock", "arrest" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d3" src="26d3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - magnet: { - keywords: [ "attraction", "magnetic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf2" src="1f9f2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - gun: { - keywords: [ "violence", "weapon", "pistol", "revolver" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2b" src="1f52b.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - bomb: { - keywords: [ "boom", "explode", "explosion", "terrorism" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca3" src="1f4a3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - firecracker: { - keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde8" src="1f9e8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - hocho: { - keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2a" src="1f52a.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - dagger: { - keywords: [ "weapon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde1" src="1f5e1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - crossed_swords: { - keywords: [ "weapon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2694" src="2694.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - shield: { - keywords: [ "protection", "security" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee1" src="1f6e1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - smoking: { - keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeac" src="1f6ac.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - skull_and_crossbones: { - keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2620" src="2620.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - coffin: { - keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b0" src="26b0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - funeral_urn: { - keywords: [ "dead", "die", "death", "rip", "ashes" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b1" src="26b1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - amphora: { - keywords: [ "vase", "jar" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udffa" src="1f3fa.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - crystal_ball: { - keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2e" src="1f52e.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - prayer_beads: { - keywords: [ "dhikr", "religious" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcff" src="1f4ff.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - nazar_amulet: { - keywords: [ "bead", "charm" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddff" src="1f9ff.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - barber: { - keywords: [ "hair", "salon", "style" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc88" src="1f488.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - alembic: { - keywords: [ "distilling", "science", "experiment", "chemistry" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2697" src="2697.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - telescope: { - keywords: [ "stars", "space", "zoom", "science", "astronomy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2d" src="1f52d.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - microscope: { - keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2c" src="1f52c.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - hole: { - keywords: [ "embarrassing" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd73" src="1f573.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - pill: { - keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8a" src="1f48a.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - syringe: { - keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc89" src="1f489.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - dna: { - keywords: [ "biologist", "genetics", "life" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddec" src="1f9ec.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - microbe: { - keywords: [ "amoeba", "bacteria", "germs" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda0" src="1f9a0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - petri_dish: { - keywords: [ "bacteria", "biology", "culture", "lab" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddeb" src="1f9eb.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - test_tube: { - keywords: [ "chemistry", "experiment", "lab", "science" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddea" src="1f9ea.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - thermometer: { - keywords: [ "weather", "temperature", "hot", "cold" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf21" src="1f321.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - broom: { - keywords: [ "cleaning", "sweeping", "witch" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf9" src="1f9f9.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - basket: { - keywords: [ "laundry" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfa" src="1f9fa.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - toilet_paper: { - keywords: [ "roll" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfb" src="1f9fb.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - label: { - keywords: [ "sale", "tag" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff7" src="1f3f7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - bookmark: { - keywords: [ "favorite", "label", "save" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd16" src="1f516.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - toilet: { - keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebd" src="1f6bd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - shower: { - keywords: [ "clean", "water", "bathroom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebf" src="1f6bf.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - bathtub: { - keywords: [ "clean", "shower", "bathroom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec1" src="1f6c1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - soap: { - keywords: [ "bar", "bathing", "cleaning", "lather" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfc" src="1f9fc.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - sponge: { - keywords: [ "absorbing", "cleaning", "porous" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfd" src="1f9fd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - lotion_bottle: { - keywords: [ "moisturizer", "sunscreen" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf4" src="1f9f4.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - key: { - keywords: [ "lock", "door", "password" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd11" src="1f511.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - old_key: { - keywords: [ "lock", "door", "password" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddd" src="1f5dd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - couch_and_lamp: { - keywords: [ "read", "chill" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecb" src="1f6cb.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - sleeping_bed: { - keywords: [ "bed", "rest" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecc" src="1f6cc.png"/>', - fitzpatrick_scale: true, - category: "objects" - }, - bed: { - keywords: [ "sleep", "rest" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecf" src="1f6cf.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - door: { - keywords: [ "house", "entry", "exit" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaa" src="1f6aa.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - bellhop_bell: { - keywords: [ "service" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udece" src="1f6ce.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - teddy_bear: { - keywords: [ "plush", "stuffed" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf8" src="1f9f8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - framed_picture: { - keywords: [ "photography" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddbc" src="1f5bc.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - world_map: { - keywords: [ "location", "direction" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfa" src="1f5fa.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - parasol_on_ground: { - keywords: [ "weather", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f1" src="26f1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - moyai: { - keywords: [ "rock", "easter island", "moai" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddff" src="1f5ff.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - shopping: { - keywords: [ "mall", "buy", "purchase" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecd" src="1f6cd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - shopping_cart: { - keywords: [ "trolley" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded2" src="1f6d2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - balloon: { - keywords: [ "party", "celebration", "birthday", "circus" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf88" src="1f388.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - flags: { - keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8f" src="1f38f.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - ribbon: { - keywords: [ "decoration", "pink", "girl", "bowtie" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf80" src="1f380.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - gift: { - keywords: [ "present", "birthday", "christmas", "xmas" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf81" src="1f381.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - confetti_ball: { - keywords: [ "festival", "party", "birthday", "circus" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8a" src="1f38a.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - tada: { - keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf89" src="1f389.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - dolls: { - keywords: [ "japanese", "toy", "kimono" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8e" src="1f38e.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - wind_chime: { - keywords: [ "nature", "ding", "spring", "bell" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf90" src="1f390.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - crossed_flags: { - keywords: [ "japanese", "nation", "country", "border" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8c" src="1f38c.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - izakaya_lantern: { - keywords: [ "light", "paper", "halloween", "spooky" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfee" src="1f3ee.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - red_envelope: { - keywords: [ "gift" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde7" src="1f9e7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - email: { - keywords: [ "letter", "postal", "inbox", "communication" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2709\ufe0f" src="2709.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - envelope_with_arrow: { - keywords: [ "email", "communication" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce9" src="1f4e9.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - incoming_envelope: { - keywords: [ "email", "inbox" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce8" src="1f4e8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - "e-mail": { - keywords: [ "communication", "inbox" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce7" src="1f4e7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - love_letter: { - keywords: [ "email", "like", "affection", "envelope", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8c" src="1f48c.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - postbox: { - keywords: [ "email", "letter", "envelope" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcee" src="1f4ee.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_closed: { - keywords: [ "email", "communication", "inbox" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcea" src="1f4ea.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox: { - keywords: [ "email", "inbox", "communication" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udceb" src="1f4eb.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_mail: { - keywords: [ "email", "inbox", "communication" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcec" src="1f4ec.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_no_mail: { - keywords: [ "email", "inbox" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udced" src="1f4ed.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - package: { - keywords: [ "mail", "gift", "cardboard", "box", "moving" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce6" src="1f4e6.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - postal_horn: { - keywords: [ "instrument", "music" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcef" src="1f4ef.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - inbox_tray: { - keywords: [ "email", "documents" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce5" src="1f4e5.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - outbox_tray: { - keywords: [ "inbox", "email" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce4" src="1f4e4.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - scroll: { - keywords: [ "documents", "ancient", "history", "paper" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdc" src="1f4dc.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - page_with_curl: { - keywords: [ "documents", "office", "paper" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc3" src="1f4c3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - bookmark_tabs: { - keywords: [ "favorite", "save", "order", "tidy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd1" src="1f4d1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - receipt: { - keywords: [ "accounting", "expenses" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfe" src="1f9fe.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - bar_chart: { - keywords: [ "graph", "presentation", "stats" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcca" src="1f4ca.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_upwards_trend: { - keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc8" src="1f4c8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_downwards_trend: { - keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc9" src="1f4c9.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - page_facing_up: { - keywords: [ "documents", "office", "paper", "information" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc4" src="1f4c4.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - date: { - keywords: [ "calendar", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc5" src="1f4c5.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - calendar: { - keywords: [ "schedule", "date", "planning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc6" src="1f4c6.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - spiral_calendar: { - keywords: [ "date", "schedule", "planning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd3" src="1f5d3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - card_index: { - keywords: [ "business", "stationery" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc7" src="1f4c7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - card_file_box: { - keywords: [ "business", "stationery" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc3" src="1f5c3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - ballot_box: { - keywords: [ "election", "vote" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddf3" src="1f5f3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - file_cabinet: { - keywords: [ "filing", "organizing" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc4" src="1f5c4.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - clipboard: { - keywords: [ "stationery", "documents" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccb" src="1f4cb.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - spiral_notepad: { - keywords: [ "memo", "stationery" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd2" src="1f5d2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - file_folder: { - keywords: [ "documents", "business", "office" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc1" src="1f4c1.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - open_file_folder: { - keywords: [ "documents", "load" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc2" src="1f4c2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - card_index_dividers: { - keywords: [ "organizing", "business", "stationery" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc2" src="1f5c2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - newspaper_roll: { - keywords: [ "press", "headline" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddde" src="1f5de.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - newspaper: { - keywords: [ "press", "headline" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf0" src="1f4f0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - notebook: { - keywords: [ "stationery", "record", "notes", "paper", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd3" src="1f4d3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - closed_book: { - keywords: [ "read", "library", "knowledge", "textbook", "learn" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd5" src="1f4d5.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - green_book: { - keywords: [ "read", "library", "knowledge", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd7" src="1f4d7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - blue_book: { - keywords: [ "read", "library", "knowledge", "learn", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd8" src="1f4d8.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - orange_book: { - keywords: [ "read", "library", "knowledge", "textbook", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd9" src="1f4d9.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - notebook_with_decorative_cover: { - keywords: [ "classroom", "notes", "record", "paper", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd4" src="1f4d4.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - ledger: { - keywords: [ "notes", "paper" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd2" src="1f4d2.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - books: { - keywords: [ "literature", "library", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcda" src="1f4da.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - open_book: { - keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd6" src="1f4d6.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - safety_pin: { - keywords: [ "diaper" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf7" src="1f9f7.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - link: { - keywords: [ "rings", "url" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd17" src="1f517.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - paperclip: { - keywords: [ "documents", "stationery" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcce" src="1f4ce.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - paperclips: { - keywords: [ "documents", "stationery" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd87" src="1f587.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - scissors: { - keywords: [ "stationery", "cut" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2702\ufe0f" src="2702.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - triangular_ruler: { - keywords: [ "stationery", "math", "architect", "sketch" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd0" src="1f4d0.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - straight_ruler: { - keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccf" src="1f4cf.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - abacus: { - keywords: [ "calculation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddee" src="1f9ee.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - pushpin: { - keywords: [ "stationery", "mark", "here" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccc" src="1f4cc.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - round_pushpin: { - keywords: [ "stationery", "location", "map", "here" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccd" src="1f4cd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - triangular_flag_on_post: { - keywords: [ "mark", "milestone", "place" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea9" src="1f6a9.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - white_flag: { - keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3" src="1f3f3.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - black_flag: { - keywords: [ "pirate" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4" src="1f3f4.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - rainbow_flag: { - keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3\ufe0f\u200d\ud83c\udf08" src="1f3f3-fe0f-200d-1f308.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - closed_lock_with_key: { - keywords: [ "security", "privacy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd10" src="1f510.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - lock: { - keywords: [ "security", "password", "padlock" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd12" src="1f512.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - unlock: { - keywords: [ "privacy", "security" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd13" src="1f513.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - lock_with_ink_pen: { - keywords: [ "security", "secret" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0f" src="1f50f.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - pen: { - keywords: [ "stationery", "writing", "write" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8a" src="1f58a.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - fountain_pen: { - keywords: [ "stationery", "writing", "write" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8b" src="1f58b.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - black_nib: { - keywords: [ "pen", "stationery", "writing", "write" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2712\ufe0f" src="2712.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - memo: { - keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdd" src="1f4dd.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - pencil2: { - keywords: [ "stationery", "write", "paper", "writing", "school", "study" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270f\ufe0f" src="270f.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - crayon: { - keywords: [ "drawing", "creativity" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8d" src="1f58d.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - paintbrush: { - keywords: [ "drawing", "creativity", "art" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8c" src="1f58c.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - mag: { - keywords: [ "search", "zoom", "find", "detective" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0d" src="1f50d.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - mag_right: { - keywords: [ "search", "zoom", "find", "detective" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0e" src="1f50e.png"/>', - fitzpatrick_scale: false, - category: "objects" - }, - heart: { - keywords: [ "love", "like", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2764\ufe0f" src="2764.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - orange_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde1" src="1f9e1.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - yellow_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9b" src="1f49b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - green_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9a" src="1f49a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - blue_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc99" src="1f499.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - purple_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9c" src="1f49c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_heart: { - keywords: [ "evil" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda4" src="1f5a4.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - broken_heart: { - keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc94" src="1f494.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_heart_exclamation: { - keywords: [ "decoration", "love" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2763" src="2763.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - two_hearts: { - keywords: [ "love", "like", "affection", "valentines", "heart" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc95" src="1f495.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - revolving_hearts: { - keywords: [ "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9e" src="1f49e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heartbeat: { - keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc93" src="1f493.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heartpulse: { - keywords: [ "like", "love", "affection", "valentines", "pink" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc97" src="1f497.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - sparkling_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc96" src="1f496.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - cupid: { - keywords: [ "love", "like", "heart", "affection", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc98" src="1f498.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - gift_heart: { - keywords: [ "love", "valentines" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9d" src="1f49d.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heart_decoration: { - keywords: [ "purple-square", "love", "like" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9f" src="1f49f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - peace_symbol: { - keywords: [ "hippie" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262e" src="262e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - latin_cross: { - keywords: [ "christianity" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u271d" src="271d.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - star_and_crescent: { - keywords: [ "islam" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262a" src="262a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - om: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd49" src="1f549.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - wheel_of_dharma: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2638" src="2638.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - star_of_david: { - keywords: [ "judaism" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2721" src="2721.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - six_pointed_star: { - keywords: [ "purple-square", "religion", "jewish", "hexagram" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2f" src="1f52f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - menorah: { - keywords: [ "hanukkah", "candles", "jewish" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4e" src="1f54e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - yin_yang: { - keywords: [ "balance" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262f" src="262f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - orthodox_cross: { - keywords: [ "suppedaneum", "religion" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2626" src="2626.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - place_of_worship: { - keywords: [ "religion", "church", "temple", "prayer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded0" src="1f6d0.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - ophiuchus: { - keywords: [ "sign", "purple-square", "constellation", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ce" src="26ce.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - aries: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2648" src="2648.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - taurus: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2649" src="2649.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - gemini: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264a" src="264a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - cancer: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264b" src="264b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - leo: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264c" src="264c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - virgo: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264d" src="264d.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - libra: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264e" src="264e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - scorpius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264f" src="264f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - sagittarius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2650" src="2650.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - capricorn: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2651" src="2651.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - aquarius: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2652" src="2652.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - pisces: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2653" src="2653.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - id: { - keywords: [ "purple-square", "words" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd94" src="1f194.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - atom_symbol: { - keywords: [ "science", "physics", "chemistry" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269b" src="269b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u7a7a: { - keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude33" src="1f233.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u5272: { - keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude39" src="1f239.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - radioactive: { - keywords: [ "nuclear", "danger" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2622" src="2622.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - biohazard: { - keywords: [ "danger" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2623" src="2623.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - mobile_phone_off: { - keywords: [ "mute", "orange-square", "silence", "quiet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf4" src="1f4f4.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - vibration_mode: { - keywords: [ "orange-square", "phone" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf3" src="1f4f3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u6709: { - keywords: [ "orange-square", "chinese", "have", "kanji" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude36" src="1f236.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u7121: { - keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude1a" src="1f21a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u7533: { - keywords: [ "chinese", "japanese", "kanji", "orange-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude38" src="1f238.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u55b6: { - keywords: [ "japanese", "opening hours", "orange-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude3a" src="1f23a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u6708: { - keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude37\ufe0f" src="1f237.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - eight_pointed_black_star: { - keywords: [ "orange-square", "shape", "polygon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2734\ufe0f" src="2734.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - vs: { - keywords: [ "words", "orange-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd9a" src="1f19a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - accept: { - keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude51" src="1f251.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_flower: { - keywords: [ "japanese", "spring" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcae" src="1f4ae.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - ideograph_advantage: { - keywords: [ "chinese", "kanji", "obtain", "get", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude50" src="1f250.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - secret: { - keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3299\ufe0f" src="3299.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - congratulations: { - keywords: [ "chinese", "kanji", "japanese", "red-circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3297\ufe0f" src="3297.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u5408: { - keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude34" src="1f234.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u6e80: { - keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude35" src="1f235.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u7981: { - keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude32" src="1f232.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - a: { - keywords: [ "red-square", "alphabet", "letter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd70\ufe0f" src="1f170.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - b: { - keywords: [ "red-square", "alphabet", "letter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd71\ufe0f" src="1f171.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - ab: { - keywords: [ "red-square", "alphabet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd8e" src="1f18e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - cl: { - keywords: [ "alphabet", "words", "red-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd91" src="1f191.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - o2: { - keywords: [ "alphabet", "red-square", "letter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7e\ufe0f" src="1f17e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - sos: { - keywords: [ "help", "red-square", "words", "emergency", "911" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd98" src="1f198.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry: { - keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d4" src="26d4.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - name_badge: { - keywords: [ "fire", "forbid" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdb" src="1f4db.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry_sign: { - keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeab" src="1f6ab.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - x: { - keywords: [ "no", "delete", "remove", "cancel", "red" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274c" src="274c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - o: { - keywords: [ "circle", "round" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b55" src="2b55.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - stop_sign: { - keywords: [ "stop" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded1" src="1f6d1.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - anger: { - keywords: [ "angry", "mad" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca2" src="1f4a2.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - hotsprings: { - keywords: [ "bath", "warm", "relax" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2668\ufe0f" src="2668.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - no_pedestrians: { - keywords: [ "rules", "crossing", "walking", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb7" src="1f6b7.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - do_not_litter: { - keywords: [ "trash", "bin", "garbage", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaf" src="1f6af.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - no_bicycles: { - keywords: [ "cyclist", "prohibited", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb3" src="1f6b3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - "non-potable_water": { - keywords: [ "drink", "faucet", "tap", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb1" src="1f6b1.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - underage: { - keywords: [ "18", "drink", "pub", "night", "minor", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1e" src="1f51e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - no_mobile_phones: { - keywords: [ "iphone", "mute", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf5" src="1f4f5.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - exclamation: { - keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2757" src="2757.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - grey_exclamation: { - keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2755" src="2755.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - question: { - keywords: [ "doubt", "confused" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2753" src="2753.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - grey_question: { - keywords: [ "doubts", "gray", "huh", "confused" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2754" src="2754.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - bangbang: { - keywords: [ "exclamation", "surprise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u203c\ufe0f" src="203c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - interrobang: { - keywords: [ "wat", "punctuation", "surprise" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2049\ufe0f" src="2049.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - low_brightness: { - keywords: [ "sun", "afternoon", "warm", "summer" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd05" src="1f505.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - high_brightness: { - keywords: [ "sun", "light" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd06" src="1f506.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - trident: { - keywords: [ "weapon", "spear" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd31" src="1f531.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - fleur_de_lis: { - keywords: [ "decorative", "scout" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269c" src="269c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - part_alternation_mark: { - keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u303d\ufe0f" src="303d.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - warning: { - keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a0\ufe0f" src="26a0.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - children_crossing: { - keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb8" src="1f6b8.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - beginner: { - keywords: [ "badge", "shield" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd30" src="1f530.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - recycle: { - keywords: [ "arrow", "environment", "garbage", "trash" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267b\ufe0f" src="267b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - u6307: { - keywords: [ "chinese", "point", "green-square", "kanji" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude2f" src="1f22f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - chart: { - keywords: [ "green-square", "graph", "presentation", "stats" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb9" src="1f4b9.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - sparkle: { - keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2747\ufe0f" src="2747.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - eight_spoked_asterisk: { - keywords: [ "star", "sparkle", "green-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2733\ufe0f" src="2733.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - negative_squared_cross_mark: { - keywords: [ "x", "green-square", "no", "deny" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274e" src="274e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_check_mark: { - keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2705" src="2705.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - diamond_shape_with_a_dot_inside: { - keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca0" src="1f4a0.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - cyclone: { - keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf00" src="1f300.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - loop: { - keywords: [ "tape", "cassette" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27bf" src="27bf.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - globe_with_meridians: { - keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf10" src="1f310.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - m: { - keywords: [ "alphabet", "blue-circle", "letter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u24c2\ufe0f" src="24c2.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - atm: { - keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe7" src="1f3e7.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - sa: { - keywords: [ "japanese", "blue-square", "katakana" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude02\ufe0f" src="1f202.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - passport_control: { - keywords: [ "custom", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec2" src="1f6c2.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - customs: { - keywords: [ "passport", "border", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec3" src="1f6c3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - baggage_claim: { - keywords: [ "blue-square", "airport", "transport" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec4" src="1f6c4.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - left_luggage: { - keywords: [ "blue-square", "travel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec5" src="1f6c5.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - wheelchair: { - keywords: [ "blue-square", "disabled", "a11y", "accessibility" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267f" src="267f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - no_smoking: { - keywords: [ "cigarette", "blue-square", "smell", "smoke" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udead" src="1f6ad.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - wc: { - keywords: [ "toilet", "restroom", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebe" src="1f6be.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - parking: { - keywords: [ "cars", "blue-square", "alphabet", "letter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7f\ufe0f" src="1f17f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - potable_water: { - keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb0" src="1f6b0.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - mens: { - keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb9" src="1f6b9.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - womens: { - keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeba" src="1f6ba.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - baby_symbol: { - keywords: [ "orange-square", "child" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebc" src="1f6bc.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - restroom: { - keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebb" src="1f6bb.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - put_litter_in_its_place: { - keywords: [ "blue-square", "sign", "human", "info" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeae" src="1f6ae.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - cinema: { - keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa6" src="1f3a6.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - signal_strength: { - keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf6" src="1f4f6.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - koko: { - keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude01" src="1f201.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - ng: { - keywords: [ "blue-square", "words", "shape", "icon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd96" src="1f196.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - ok: { - keywords: [ "good", "agree", "yes", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd97" src="1f197.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - up: { - keywords: [ "blue-square", "above", "high" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd99" src="1f199.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - cool: { - keywords: [ "words", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd92" src="1f192.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - new: { - keywords: [ "blue-square", "words", "start" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd95" src="1f195.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - free: { - keywords: [ "blue-square", "words" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd93" src="1f193.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - zero: { - keywords: [ "0", "numbers", "blue-square", "null" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="0\ufe0f\u20e3" src="30-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - one: { - keywords: [ "blue-square", "numbers", "1" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="1\ufe0f\u20e3" src="31-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - two: { - keywords: [ "numbers", "2", "prime", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="2\ufe0f\u20e3" src="32-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - three: { - keywords: [ "3", "numbers", "prime", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="3\ufe0f\u20e3" src="33-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - four: { - keywords: [ "4", "numbers", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="4\ufe0f\u20e3" src="34-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - five: { - keywords: [ "5", "numbers", "blue-square", "prime" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="5\ufe0f\u20e3" src="35-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - six: { - keywords: [ "6", "numbers", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="6\ufe0f\u20e3" src="36-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - seven: { - keywords: [ "7", "numbers", "blue-square", "prime" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="7\ufe0f\u20e3" src="37-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - eight: { - keywords: [ "8", "blue-square", "numbers" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="8\ufe0f\u20e3" src="38-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - nine: { - keywords: [ "blue-square", "numbers", "9" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="9\ufe0f\u20e3" src="39-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - keycap_ten: { - keywords: [ "numbers", "10", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1f" src="1f51f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - asterisk: { - keywords: [ "star", "keycap" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="*\u20e3" src="2a-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - eject_button: { - keywords: [ "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23cf\ufe0f" src="23cf.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_forward: { - keywords: [ "blue-square", "right", "direction", "play" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25b6\ufe0f" src="25b6.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - pause_button: { - keywords: [ "pause", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f8" src="23f8.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - next_track_button: { - keywords: [ "forward", "next", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ed" src="23ed.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - stop_button: { - keywords: [ "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f9" src="23f9.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - record_button: { - keywords: [ "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23fa" src="23fa.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - play_or_pause_button: { - keywords: [ "blue-square", "play", "pause" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ef" src="23ef.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - previous_track_button: { - keywords: [ "backward" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ee" src="23ee.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - fast_forward: { - keywords: [ "blue-square", "play", "speed", "continue" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23e9" src="23e9.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - rewind: { - keywords: [ "play", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ea" src="23ea.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - twisted_rightwards_arrows: { - keywords: [ "blue-square", "shuffle", "music", "random" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd00" src="1f500.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - repeat: { - keywords: [ "loop", "record" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd01" src="1f501.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - repeat_one: { - keywords: [ "blue-square", "loop" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd02" src="1f502.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_backward: { - keywords: [ "blue-square", "left", "direction" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25c0\ufe0f" src="25c0.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_small: { - keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3c" src="1f53c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down_small: { - keywords: [ "blue-square", "direction", "bottom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3d" src="1f53d.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_up: { - keywords: [ "blue-square", "direction", "top" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23eb" src="23eb.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_down: { - keywords: [ "blue-square", "direction", "bottom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ec" src="23ec.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right: { - keywords: [ "blue-square", "next" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27a1\ufe0f" src="27a1.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_left: { - keywords: [ "blue-square", "previous", "back" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b05\ufe0f" src="2b05.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up: { - keywords: [ "blue-square", "continue", "top", "direction" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b06\ufe0f" src="2b06.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down: { - keywords: [ "blue-square", "direction", "bottom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b07\ufe0f" src="2b07.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_right: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2197\ufe0f" src="2197.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_right: { - keywords: [ "blue-square", "direction", "diagonal", "southeast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2198\ufe0f" src="2198.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_left: { - keywords: [ "blue-square", "direction", "diagonal", "southwest" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2199\ufe0f" src="2199.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_left: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2196\ufe0f" src="2196.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_down: { - keywords: [ "blue-square", "direction", "way", "vertical" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2195\ufe0f" src="2195.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - left_right_arrow: { - keywords: [ "shape", "direction", "horizontal", "sideways" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2194\ufe0f" src="2194.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_counterclockwise: { - keywords: [ "blue-square", "sync", "cycle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd04" src="1f504.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right_hook: { - keywords: [ "blue-square", "return", "rotate", "direction" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21aa\ufe0f" src="21aa.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - leftwards_arrow_with_hook: { - keywords: [ "back", "return", "blue-square", "undo", "enter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21a9\ufe0f" src="21a9.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_up: { - keywords: [ "blue-square", "direction", "top" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2934\ufe0f" src="2934.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_down: { - keywords: [ "blue-square", "direction", "bottom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2935\ufe0f" src="2935.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - hash: { - keywords: [ "symbol", "blue-square", "twitter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="#\ufe0f\u20e3" src="23-20e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - information_source: { - keywords: [ "blue-square", "alphabet", "letter" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2139\ufe0f" src="2139.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - abc: { - keywords: [ "blue-square", "alphabet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd24" src="1f524.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - abcd: { - keywords: [ "blue-square", "alphabet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd21" src="1f521.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - capital_abcd: { - keywords: [ "alphabet", "words", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd20" src="1f520.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - symbols: { - keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd23" src="1f523.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - musical_note: { - keywords: [ "score", "tone", "sound" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb5" src="1f3b5.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - notes: { - keywords: [ "music", "score" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb6" src="1f3b6.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - wavy_dash: { - keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3030\ufe0f" src="3030.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - curly_loop: { - keywords: [ "scribble", "draw", "shape", "squiggle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27b0" src="27b0.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_check_mark: { - keywords: [ "ok", "nike", "answer", "yes", "tick" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2714\ufe0f" src="2714.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_clockwise: { - keywords: [ "sync", "cycle", "round", "repeat" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd03" src="1f503.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_plus_sign: { - keywords: [ "math", "calculation", "addition", "more", "increase" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2795" src="2795.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_minus_sign: { - keywords: [ "math", "calculation", "subtract", "less" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2796" src="2796.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_division_sign: { - keywords: [ "divide", "math", "calculation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2797" src="2797.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_multiplication_x: { - keywords: [ "math", "calculation" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2716\ufe0f" src="2716.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - infinity: { - keywords: [ "forever" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267e" src="267e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_dollar_sign: { - keywords: [ "money", "sales", "payment", "currency", "buck" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb2" src="1f4b2.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - currency_exchange: { - keywords: [ "money", "sales", "dollar", "travel" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb1" src="1f4b1.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - copyright: { - keywords: [ "ip", "license", "circle", "law", "legal" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xa9\ufe0f" src="a9.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - registered: { - keywords: [ "alphabet", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xae\ufe0f" src="ae.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - tm: { - keywords: [ "trademark", "brand", "law", "legal" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2122\ufe0f" src="2122.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - end: { - keywords: [ "words", "arrow" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1a" src="1f51a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - back: { - keywords: [ "arrow", "words", "return" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd19" src="1f519.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - on: { - keywords: [ "arrow", "words" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1b" src="1f51b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - top: { - keywords: [ "words", "blue-square" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1d" src="1f51d.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - soon: { - keywords: [ "arrow", "words" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1c" src="1f51c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - ballot_box_with_check: { - keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2611\ufe0f" src="2611.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - radio_button: { - keywords: [ "input", "old", "music", "circle" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd18" src="1f518.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_circle: { - keywords: [ "shape", "round" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26aa" src="26aa.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_circle: { - keywords: [ "shape", "button", "round" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ab" src="26ab.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - red_circle: { - keywords: [ "shape", "error", "danger" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd34" src="1f534.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_circle: { - keywords: [ "shape", "icon", "button" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd35" src="1f535.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - small_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd38" src="1f538.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - small_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd39" src="1f539.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - large_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd36" src="1f536.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd37" src="1f537.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle: { - keywords: [ "shape", "direction", "up", "top" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3a" src="1f53a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_small_square: { - keywords: [ "shape", "icon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25aa\ufe0f" src="25aa.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_small_square: { - keywords: [ "shape", "icon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25ab\ufe0f" src="25ab.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_large_square: { - keywords: [ "shape", "icon", "button" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1b" src="2b1b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_large_square: { - keywords: [ "shape", "icon", "stone", "button" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1c" src="2b1c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle_down: { - keywords: [ "shape", "direction", "bottom" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3b" src="1f53b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_square: { - keywords: [ "shape", "button", "icon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fc\ufe0f" src="25fc.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_square: { - keywords: [ "shape", "stone", "icon" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fb\ufe0f" src="25fb.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_small_square: { - keywords: [ "icon", "shape", "button" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fe" src="25fe.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_small_square: { - keywords: [ "shape", "stone", "icon", "button" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fd" src="25fd.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_square_button: { - keywords: [ "shape", "input", "frame" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd32" src="1f532.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - white_square_button: { - keywords: [ "shape", "input" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd33" src="1f533.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - speaker: { - keywords: [ "sound", "volume", "silence", "broadcast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd08" src="1f508.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - sound: { - keywords: [ "volume", "speaker", "broadcast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd09" src="1f509.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - loud_sound: { - keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0a" src="1f50a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - mute: { - keywords: [ "sound", "volume", "silence", "quiet" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd07" src="1f507.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - mega: { - keywords: [ "sound", "speaker", "volume" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce3" src="1f4e3.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - loudspeaker: { - keywords: [ "volume", "sound" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce2" src="1f4e2.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - bell: { - keywords: [ "sound", "notification", "christmas", "xmas", "chime" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd14" src="1f514.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - no_bell: { - keywords: [ "sound", "volume", "mute", "quiet", "silent" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd15" src="1f515.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - black_joker: { - keywords: [ "poker", "cards", "game", "play", "magic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udccf" src="1f0cf.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - mahjong: { - keywords: [ "game", "play", "chinese", "kanji" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udc04" src="1f004.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - spades: { - keywords: [ "poker", "cards", "suits", "magic" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2660\ufe0f" src="2660.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clubs: { - keywords: [ "poker", "cards", "magic", "suits" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2663\ufe0f" src="2663.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - hearts: { - keywords: [ "poker", "cards", "magic", "suits" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2665\ufe0f" src="2665.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - diamonds: { - keywords: [ "poker", "cards", "magic", "suits" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2666\ufe0f" src="2666.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - flower_playing_cards: { - keywords: [ "game", "sunset", "red" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb4" src="1f3b4.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - thought_balloon: { - keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcad" src="1f4ad.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - right_anger_bubble: { - keywords: [ "caption", "speech", "thinking", "mad" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddef" src="1f5ef.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - speech_balloon: { - keywords: [ "bubble", "words", "message", "talk", "chatting" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcac" src="1f4ac.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - left_speech_bubble: { - keywords: [ "words", "message", "talk", "chatting" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde8" src="1f5e8.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd50" src="1f550.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock2: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd51" src="1f551.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock3: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd52" src="1f552.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock4: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd53" src="1f553.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock5: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd54" src="1f554.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock6: { - keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd55" src="1f555.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock7: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd56" src="1f556.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock8: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd57" src="1f557.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock9: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd58" src="1f558.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock10: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd59" src="1f559.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock11: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5a" src="1f55a.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock12: { - keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5b" src="1f55b.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock130: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5c" src="1f55c.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock230: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5d" src="1f55d.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock330: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5e" src="1f55e.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock430: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5f" src="1f55f.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock530: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd60" src="1f560.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock630: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd61" src="1f561.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock730: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd62" src="1f562.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock830: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd63" src="1f563.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock930: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd64" src="1f564.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1030: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd65" src="1f565.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1130: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd66" src="1f566.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1230: { - keywords: [ "time", "late", "early", "schedule" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd67" src="1f567.png"/>', - fitzpatrick_scale: false, - category: "symbols" - }, - afghanistan: { - keywords: [ "af", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddeb" src="1f1e6-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - aland_islands: { - keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfd" src="1f1e6-1f1fd.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - albania: { - keywords: [ "al", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf1" src="1f1e6-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - algeria: { - keywords: [ "dz", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddff" src="1f1e9-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - american_samoa: { - keywords: [ "american", "ws", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf8" src="1f1e6-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - andorra: { - keywords: [ "ad", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\udde9" src="1f1e6-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - angola: { - keywords: [ "ao", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf4" src="1f1e6-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - anguilla: { - keywords: [ "ai", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddee" src="1f1e6-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - antarctica: { - keywords: [ "aq", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf6" src="1f1e6-1f1f6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - antigua_barbuda: { - keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddec" src="1f1e6-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - argentina: { - keywords: [ "ar", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf7" src="1f1e6-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - armenia: { - keywords: [ "am", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf2" src="1f1e6-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - aruba: { - keywords: [ "aw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfc" src="1f1e6-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - australia: { - keywords: [ "au", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfa" src="1f1e6-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - austria: { - keywords: [ "at", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf9" src="1f1e6-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - azerbaijan: { - keywords: [ "az", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddff" src="1f1e6-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bahamas: { - keywords: [ "bs", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf8" src="1f1e7-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bahrain: { - keywords: [ "bh", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udded" src="1f1e7-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bangladesh: { - keywords: [ "bd", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde9" src="1f1e7-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - barbados: { - keywords: [ "bb", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde7" src="1f1e7-1f1e7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - belarus: { - keywords: [ "by", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfe" src="1f1e7-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - belgium: { - keywords: [ "be", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddea" src="1f1e7-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - belize: { - keywords: [ "bz", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddff" src="1f1e7-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - benin: { - keywords: [ "bj", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddef" src="1f1e7-1f1ef.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bermuda: { - keywords: [ "bm", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf2" src="1f1e7-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bhutan: { - keywords: [ "bt", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf9" src="1f1e7-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bolivia: { - keywords: [ "bo", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf4" src="1f1e7-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - caribbean_netherlands: { - keywords: [ "bonaire", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf6" src="1f1e7-1f1f6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bosnia_herzegovina: { - keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde6" src="1f1e7-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - botswana: { - keywords: [ "bw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfc" src="1f1e7-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - brazil: { - keywords: [ "br", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf7" src="1f1e7-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - british_indian_ocean_territory: { - keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf4" src="1f1ee-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - british_virgin_islands: { - keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddec" src="1f1fb-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - brunei: { - keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf3" src="1f1e7-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - bulgaria: { - keywords: [ "bg", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddec" src="1f1e7-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - burkina_faso: { - keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddeb" src="1f1e7-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - burundi: { - keywords: [ "bi", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddee" src="1f1e7-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cape_verde: { - keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfb" src="1f1e8-1f1fb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cambodia: { - keywords: [ "kh", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\udded" src="1f1f0-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cameroon: { - keywords: [ "cm", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf2" src="1f1e8-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - canada: { - keywords: [ "ca", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde6" src="1f1e8-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - canary_islands: { - keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde8" src="1f1ee-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cayman_islands: { - keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfe" src="1f1f0-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - central_african_republic: { - keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddeb" src="1f1e8-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - chad: { - keywords: [ "td", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde9" src="1f1f9-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - chile: { - keywords: [ "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf1" src="1f1e8-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cn: { - keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf3" src="1f1e8-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - christmas_island: { - keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfd" src="1f1e8-1f1fd.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cocos_islands: { - keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde8" src="1f1e8-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - colombia: { - keywords: [ "co", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf4" src="1f1e8-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - comoros: { - keywords: [ "km", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf2" src="1f1f0-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - congo_brazzaville: { - keywords: [ "congo", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddec" src="1f1e8-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - congo_kinshasa: { - keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde9" src="1f1e8-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cook_islands: { - keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf0" src="1f1e8-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - costa_rica: { - keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf7" src="1f1e8-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - croatia: { - keywords: [ "hr", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf7" src="1f1ed-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cuba: { - keywords: [ "cu", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfa" src="1f1e8-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - curacao: { - keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfc" src="1f1e8-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cyprus: { - keywords: [ "cy", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfe" src="1f1e8-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - czech_republic: { - keywords: [ "cz", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddff" src="1f1e8-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - denmark: { - keywords: [ "dk", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf0" src="1f1e9-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - djibouti: { - keywords: [ "dj", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddef" src="1f1e9-1f1ef.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - dominica: { - keywords: [ "dm", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf2" src="1f1e9-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - dominican_republic: { - keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf4" src="1f1e9-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - ecuador: { - keywords: [ "ec", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udde8" src="1f1ea-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - egypt: { - keywords: [ "eg", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddec" src="1f1ea-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - el_salvador: { - keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfb" src="1f1f8-1f1fb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - equatorial_guinea: { - keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf6" src="1f1ec-1f1f6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - eritrea: { - keywords: [ "er", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf7" src="1f1ea-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - estonia: { - keywords: [ "ee", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddea" src="1f1ea-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - ethiopia: { - keywords: [ "et", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf9" src="1f1ea-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - eu: { - keywords: [ "european", "union", "flag", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddfa" src="1f1ea-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - falkland_islands: { - keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf0" src="1f1eb-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - faroe_islands: { - keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf4" src="1f1eb-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - fiji: { - keywords: [ "fj", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddef" src="1f1eb-1f1ef.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - finland: { - keywords: [ "fi", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddee" src="1f1eb-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - fr: { - keywords: [ "banner", "flag", "nation", "france", "french", "country" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf7" src="1f1eb-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - french_guiana: { - keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddeb" src="1f1ec-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - french_polynesia: { - keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddeb" src="1f1f5-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - french_southern_territories: { - keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddeb" src="1f1f9-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - gabon: { - keywords: [ "ga", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde6" src="1f1ec-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - gambia: { - keywords: [ "gm", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf2" src="1f1ec-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - georgia: { - keywords: [ "ge", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddea" src="1f1ec-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - de: { - keywords: [ "german", "nation", "flag", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddea" src="1f1e9-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - ghana: { - keywords: [ "gh", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udded" src="1f1ec-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - gibraltar: { - keywords: [ "gi", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddee" src="1f1ec-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - greece: { - keywords: [ "gr", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf7" src="1f1ec-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - greenland: { - keywords: [ "gl", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf1" src="1f1ec-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - grenada: { - keywords: [ "gd", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde9" src="1f1ec-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - guadeloupe: { - keywords: [ "gp", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf5" src="1f1ec-1f1f5.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - guam: { - keywords: [ "gu", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfa" src="1f1ec-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - guatemala: { - keywords: [ "gt", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf9" src="1f1ec-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - guernsey: { - keywords: [ "gg", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddec" src="1f1ec-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - guinea: { - keywords: [ "gn", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf3" src="1f1ec-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - guinea_bissau: { - keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfc" src="1f1ec-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - guyana: { - keywords: [ "gy", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfe" src="1f1ec-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - haiti: { - keywords: [ "ht", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf9" src="1f1ed-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - honduras: { - keywords: [ "hn", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf3" src="1f1ed-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - hong_kong: { - keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf0" src="1f1ed-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - hungary: { - keywords: [ "hu", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddfa" src="1f1ed-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - iceland: { - keywords: [ "is", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf8" src="1f1ee-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - india: { - keywords: [ "in", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf3" src="1f1ee-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - indonesia: { - keywords: [ "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde9" src="1f1ee-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - iran: { - keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf7" src="1f1ee-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - iraq: { - keywords: [ "iq", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf6" src="1f1ee-1f1f6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - ireland: { - keywords: [ "ie", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddea" src="1f1ee-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - isle_of_man: { - keywords: [ "isle", "man", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf2" src="1f1ee-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - israel: { - keywords: [ "il", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf1" src="1f1ee-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - it: { - keywords: [ "italy", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf9" src="1f1ee-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - cote_divoire: { - keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddee" src="1f1e8-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - jamaica: { - keywords: [ "jm", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf2" src="1f1ef-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - jp: { - keywords: [ "japanese", "nation", "flag", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf5" src="1f1ef-1f1f5.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - jersey: { - keywords: [ "je", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddea" src="1f1ef-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - jordan: { - keywords: [ "jo", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf4" src="1f1ef-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - kazakhstan: { - keywords: [ "kz", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddff" src="1f1f0-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - kenya: { - keywords: [ "ke", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddea" src="1f1f0-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - kiribati: { - keywords: [ "ki", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddee" src="1f1f0-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - kosovo: { - keywords: [ "xk", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfd\ud83c\uddf0" src="1f1fd-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - kuwait: { - keywords: [ "kw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfc" src="1f1f0-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - kyrgyzstan: { - keywords: [ "kg", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddec" src="1f1f0-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - laos: { - keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde6" src="1f1f1-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - latvia: { - keywords: [ "lv", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfb" src="1f1f1-1f1fb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - lebanon: { - keywords: [ "lb", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde7" src="1f1f1-1f1e7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - lesotho: { - keywords: [ "ls", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf8" src="1f1f1-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - liberia: { - keywords: [ "lr", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf7" src="1f1f1-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - libya: { - keywords: [ "ly", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfe" src="1f1f1-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - liechtenstein: { - keywords: [ "li", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddee" src="1f1f1-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - lithuania: { - keywords: [ "lt", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf9" src="1f1f1-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - luxembourg: { - keywords: [ "lu", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfa" src="1f1f1-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - macau: { - keywords: [ "macao", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf4" src="1f1f2-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - macedonia: { - keywords: [ "macedonia,", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf0" src="1f1f2-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - madagascar: { - keywords: [ "mg", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddec" src="1f1f2-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - malawi: { - keywords: [ "mw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfc" src="1f1f2-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - malaysia: { - keywords: [ "my", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfe" src="1f1f2-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - maldives: { - keywords: [ "mv", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfb" src="1f1f2-1f1fb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - mali: { - keywords: [ "ml", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf1" src="1f1f2-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - malta: { - keywords: [ "mt", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf9" src="1f1f2-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - marshall_islands: { - keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udded" src="1f1f2-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - martinique: { - keywords: [ "mq", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf6" src="1f1f2-1f1f6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - mauritania: { - keywords: [ "mr", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf7" src="1f1f2-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - mauritius: { - keywords: [ "mu", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfa" src="1f1f2-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - mayotte: { - keywords: [ "yt", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddf9" src="1f1fe-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - mexico: { - keywords: [ "mx", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfd" src="1f1f2-1f1fd.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - micronesia: { - keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf2" src="1f1eb-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - moldova: { - keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde9" src="1f1f2-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - monaco: { - keywords: [ "mc", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde8" src="1f1f2-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - mongolia: { - keywords: [ "mn", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf3" src="1f1f2-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - montenegro: { - keywords: [ "me", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddea" src="1f1f2-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - montserrat: { - keywords: [ "ms", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf8" src="1f1f2-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - morocco: { - keywords: [ "ma", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde6" src="1f1f2-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - mozambique: { - keywords: [ "mz", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddff" src="1f1f2-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - myanmar: { - keywords: [ "mm", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf2" src="1f1f2-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - namibia: { - keywords: [ "na", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde6" src="1f1f3-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - nauru: { - keywords: [ "nr", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf7" src="1f1f3-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - nepal: { - keywords: [ "np", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf5" src="1f1f3-1f1f5.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - netherlands: { - keywords: [ "nl", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf1" src="1f1f3-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - new_caledonia: { - keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde8" src="1f1f3-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - new_zealand: { - keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddff" src="1f1f3-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - nicaragua: { - keywords: [ "ni", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddee" src="1f1f3-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - niger: { - keywords: [ "ne", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddea" src="1f1f3-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - nigeria: { - keywords: [ "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddec" src="1f1f3-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - niue: { - keywords: [ "nu", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddfa" src="1f1f3-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - norfolk_island: { - keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddeb" src="1f1f3-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - northern_mariana_islands: { - keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf5" src="1f1f2-1f1f5.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - north_korea: { - keywords: [ "north", "korea", "nation", "flag", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf5" src="1f1f0-1f1f5.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - norway: { - keywords: [ "no", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf4" src="1f1f3-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - oman: { - keywords: [ "om_symbol", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf4\ud83c\uddf2" src="1f1f4-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - pakistan: { - keywords: [ "pk", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf0" src="1f1f5-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - palau: { - keywords: [ "pw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfc" src="1f1f5-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - palestinian_territories: { - keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf8" src="1f1f5-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - panama: { - keywords: [ "pa", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udde6" src="1f1f5-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - papua_new_guinea: { - keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddec" src="1f1f5-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - paraguay: { - keywords: [ "py", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfe" src="1f1f5-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - peru: { - keywords: [ "pe", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddea" src="1f1f5-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - philippines: { - keywords: [ "ph", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udded" src="1f1f5-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - pitcairn_islands: { - keywords: [ "pitcairn", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf3" src="1f1f5-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - poland: { - keywords: [ "pl", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf1" src="1f1f5-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - portugal: { - keywords: [ "pt", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf9" src="1f1f5-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - puerto_rico: { - keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf7" src="1f1f5-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - qatar: { - keywords: [ "qa", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf6\ud83c\udde6" src="1f1f6-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - reunion: { - keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddea" src="1f1f7-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - romania: { - keywords: [ "ro", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf4" src="1f1f7-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - ru: { - keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfa" src="1f1f7-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - rwanda: { - keywords: [ "rw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfc" src="1f1f7-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - st_barthelemy: { - keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf1" src="1f1e7-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - st_helena: { - keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udded" src="1f1f8-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - st_kitts_nevis: { - keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf3" src="1f1f0-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - st_lucia: { - keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde8" src="1f1f1-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - st_pierre_miquelon: { - keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf2" src="1f1f5-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - st_vincent_grenadines: { - keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde8" src="1f1fb-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - samoa: { - keywords: [ "ws", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddf8" src="1f1fc-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - san_marino: { - keywords: [ "san", "marino", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf2" src="1f1f8-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - sao_tome_principe: { - keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf9" src="1f1f8-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - saudi_arabia: { - keywords: [ "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde6" src="1f1f8-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - senegal: { - keywords: [ "sn", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf3" src="1f1f8-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - serbia: { - keywords: [ "rs", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf8" src="1f1f7-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - seychelles: { - keywords: [ "sc", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde8" src="1f1f8-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - sierra_leone: { - keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf1" src="1f1f8-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - singapore: { - keywords: [ "sg", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddec" src="1f1f8-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - sint_maarten: { - keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfd" src="1f1f8-1f1fd.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - slovakia: { - keywords: [ "sk", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf0" src="1f1f8-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - slovenia: { - keywords: [ "si", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddee" src="1f1f8-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - solomon_islands: { - keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde7" src="1f1f8-1f1e7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - somalia: { - keywords: [ "so", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf4" src="1f1f8-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - south_africa: { - keywords: [ "south", "africa", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\udde6" src="1f1ff-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - south_georgia_south_sandwich_islands: { - keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf8" src="1f1ec-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - kr: { - keywords: [ "south", "korea", "nation", "flag", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf7" src="1f1f0-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - south_sudan: { - keywords: [ "south", "sd", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf8" src="1f1f8-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - es: { - keywords: [ "spain", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf8" src="1f1ea-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - sri_lanka: { - keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf0" src="1f1f1-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - sudan: { - keywords: [ "sd", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde9" src="1f1f8-1f1e9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - suriname: { - keywords: [ "sr", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf7" src="1f1f8-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - swaziland: { - keywords: [ "sz", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddff" src="1f1f8-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - sweden: { - keywords: [ "se", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddea" src="1f1f8-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - switzerland: { - keywords: [ "ch", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udded" src="1f1e8-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - syria: { - keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfe" src="1f1f8-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - taiwan: { - keywords: [ "tw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfc" src="1f1f9-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - tajikistan: { - keywords: [ "tj", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddef" src="1f1f9-1f1ef.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - tanzania: { - keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddff" src="1f1f9-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - thailand: { - keywords: [ "th", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udded" src="1f1f9-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - timor_leste: { - keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf1" src="1f1f9-1f1f1.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - togo: { - keywords: [ "tg", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddec" src="1f1f9-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - tokelau: { - keywords: [ "tk", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf0" src="1f1f9-1f1f0.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - tonga: { - keywords: [ "to", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf4" src="1f1f9-1f1f4.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - trinidad_tobago: { - keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf9" src="1f1f9-1f1f9.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - tunisia: { - keywords: [ "tn", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf3" src="1f1f9-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - tr: { - keywords: [ "turkey", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf7" src="1f1f9-1f1f7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - turkmenistan: { - keywords: [ "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf2" src="1f1f9-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - turks_caicos_islands: { - keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde8" src="1f1f9-1f1e8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - tuvalu: { - keywords: [ "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfb" src="1f1f9-1f1fb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - uganda: { - keywords: [ "ug", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddec" src="1f1fa-1f1ec.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - ukraine: { - keywords: [ "ua", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\udde6" src="1f1fa-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - united_arab_emirates: { - keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddea" src="1f1e6-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - uk: { - keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde7" src="1f1ec-1f1e7.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - england: { - keywords: [ "flag", "english" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f" src="1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - scotland: { - keywords: [ "flag", "scottish" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f" src="1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - wales: { - keywords: [ "flag", "welsh" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f" src="1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - us: { - keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf8" src="1f1fa-1f1f8.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - us_virgin_islands: { - keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddee" src="1f1fb-1f1ee.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - uruguay: { - keywords: [ "uy", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddfe" src="1f1fa-1f1fe.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - uzbekistan: { - keywords: [ "uz", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddff" src="1f1fa-1f1ff.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - vanuatu: { - keywords: [ "vu", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddfa" src="1f1fb-1f1fa.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - vatican_city: { - keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde6" src="1f1fb-1f1e6.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - venezuela: { - keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddea" src="1f1fb-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - vietnam: { - keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddf3" src="1f1fb-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - wallis_futuna: { - keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddeb" src="1f1fc-1f1eb.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - western_sahara: { - keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udded" src="1f1ea-1f1ed.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - yemen: { - keywords: [ "ye", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddea" src="1f1fe-1f1ea.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - zambia: { - keywords: [ "zm", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddf2" src="1f1ff-1f1f2.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - zimbabwe: { - keywords: [ "zw", "flag", "nation", "country", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddfc" src="1f1ff-1f1fc.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - united_nations: { - keywords: [ "un", "flag", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf3" src="1f1fa-1f1f3.png"/>', - fitzpatrick_scale: false, - category: "flags" - }, - pirate_flag: { - keywords: [ "skull", "crossbones", "flag", "banner" ], - char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\u200d\u2620\ufe0f" src="1f3f4-200d-2620-fe0f.png"/>', - fitzpatrick_scale: false, - category: "flags" - } -}); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.min.js b/lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.min.js deleted file mode 100644 index a0451629e5469..0000000000000 --- a/lib/web/tiny_mce_5/plugins/emoticons/js/emojiimages.min.js +++ /dev/null @@ -1,3 +0,0 @@ -// Source: npm package: emojilib -// Images provided by twemoji: https://github.com/twitter/twemoji -window.tinymce.Resource.add("tinymce.plugins.emoticons",{100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaf" src="1f4af.png"/>',fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd22" src="1f522.png"/>',fitzpatrick_scale:!1,category:"symbols"},grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude00" src="1f600.png"/>',fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2c" src="1f62c.png"/>',fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude01" src="1f601.png"/>',fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude02" src="1f602.png"/>',fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd23" src="1f923.png"/>',fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd73" src="1f973.png"/>',fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude03" src="1f603.png"/>',fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude04" src="1f604.png"/>',fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude05" src="1f605.png"/>',fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude06" src="1f606.png"/>',fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude07" src="1f607.png"/>',fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude09" src="1f609.png"/>',fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0a" src="1f60a.png"/>',fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude42" src="1f642.png"/>',fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude43" src="1f643.png"/>',fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u263a\ufe0f" src="263a.png"/>',fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0b" src="1f60b.png"/>',fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0c" src="1f60c.png"/>',fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0d" src="1f60d.png"/>',fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd70" src="1f970.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude18" src="1f618.png"/>',fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude17" src="1f617.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude19" src="1f619.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1a" src="1f61a.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1c" src="1f61c.png"/>',fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2a" src="1f92a.png"/>',fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd28" src="1f928.png"/>',fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd0" src="1f9d0.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1d" src="1f61d.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1b" src="1f61b.png"/>',fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd11" src="1f911.png"/>',fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd13" src="1f913.png"/>',fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0e" src="1f60e.png"/>',fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd29" src="1f929.png"/>',fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd21" src="1f921.png"/>',fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd20" src="1f920.png"/>',fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd17" src="1f917.png"/>',fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0f" src="1f60f.png"/>',fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude36" src="1f636.png"/>',fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude10" src="1f610.png"/>',fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude11" src="1f611.png"/>',fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude12" src="1f612.png"/>',fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude44" src="1f644.png"/>',fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd14" src="1f914.png"/>',fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd25" src="1f925.png"/>',fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2d" src="1f92d.png"/>',fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2b" src="1f92b.png"/>',fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2c" src="1f92c.png"/>',fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2f" src="1f92f.png"/>',fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude33" src="1f633.png"/>',fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1e" src="1f61e.png"/>',fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1f" src="1f61f.png"/>',fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude20" src="1f620.png"/>',fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude21" src="1f621.png"/>',fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude14" src="1f614.png"/>',fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude15" src="1f615.png"/>',fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude41" src="1f641.png"/>',fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2639" src="2639.png"/>',fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude23" src="1f623.png"/>',fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude16" src="1f616.png"/>',fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2b" src="1f62b.png"/>',fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude29" src="1f629.png"/>',fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7a" src="1f97a.png"/>',fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude24" src="1f624.png"/>',fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2e" src="1f62e.png"/>',fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude31" src="1f631.png"/>',fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude28" src="1f628.png"/>',fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude30" src="1f630.png"/>',fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2f" src="1f62f.png"/>',fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude26" src="1f626.png"/>',fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude27" src="1f627.png"/>',fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude22" src="1f622.png"/>',fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude25" src="1f625.png"/>',fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd24" src="1f924.png"/>',fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2a" src="1f62a.png"/>',fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude13" src="1f613.png"/>',fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd75" src="1f975.png"/>',fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd76" src="1f976.png"/>',fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2d" src="1f62d.png"/>',fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude35" src="1f635.png"/>',fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude32" src="1f632.png"/>',fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd10" src="1f910.png"/>',fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd22" src="1f922.png"/>',fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd27" src="1f927.png"/>',fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2e" src="1f92e.png"/>',fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude37" src="1f637.png"/>',fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd12" src="1f912.png"/>',fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd15" src="1f915.png"/>',fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd74" src="1f974.png"/>',fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude34" src="1f634.png"/>',fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca4" src="1f4a4.png"/>',fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca9" src="1f4a9.png"/>',fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude08" src="1f608.png"/>',fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7f" src="1f47f.png"/>',fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc79" src="1f479.png"/>',fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7a" src="1f47a.png"/>',fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc80" src="1f480.png"/>',fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7b" src="1f47b.png"/>',fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7d" src="1f47d.png"/>',fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd16" src="1f916.png"/>',fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3a" src="1f63a.png"/>',fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude38" src="1f638.png"/>',fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude39" src="1f639.png"/>',fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3b" src="1f63b.png"/>',fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3c" src="1f63c.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3d" src="1f63d.png"/>',fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude40" src="1f640.png"/>',fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3f" src="1f63f.png"/>',fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3e" src="1f63e.png"/>',fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd32" src="1f932.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4c" src="1f64c.png"/>',fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4f" src="1f44f.png"/>',fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4b" src="1f44b.png"/>',fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd19" src="1f919.png"/>',fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4d" src="1f44d.png"/>',fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4e" src="1f44e.png"/>',fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4a" src="1f44a.png"/>',fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270a" src="270a.png"/>',fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1b" src="1f91b.png"/>',fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1c" src="1f91c.png"/>',fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270c" src="270c.png"/>',fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4c" src="1f44c.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270b" src="270b.png"/>',fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1a" src="1f91a.png"/>',fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc50" src="1f450.png"/>',fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaa" src="1f4aa.png"/>',fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4f" src="1f64f.png"/>',fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb6" src="1f9b6.png"/>',fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb5" src="1f9b5.png"/>',fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1d" src="1f91d.png"/>',fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u261d" src="261d.png"/>',fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc46" src="1f446.png"/>',fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc47" src="1f447.png"/>',fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc48" src="1f448.png"/>',fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc49" src="1f449.png"/>',fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd95" src="1f595.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd90" src="1f590.png"/>',fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1f" src="1f91f.png"/>',fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd18" src="1f918.png"/>',fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1e" src="1f91e.png"/>',fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd96" src="1f596.png"/>',fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270d" src="270d.png"/>',fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd33" src="1f933.png"/>',fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc85" src="1f485.png"/>',fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc44" src="1f444.png"/>',fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb7" src="1f9b7.png"/>',fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc45" src="1f445.png"/>',fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc42" src="1f442.png"/>',fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc43" src="1f443.png"/>',fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc41" src="1f441.png"/>',fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc40" src="1f440.png"/>',fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde0" src="1f9e0.png"/>',fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc64" src="1f464.png"/>',fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc65" src="1f465.png"/>',fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde3" src="1f5e3.png"/>',fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc76" src="1f476.png"/>',fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd2" src="1f9d2.png"/>',fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc66" src="1f466.png"/>',fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc67" src="1f467.png"/>',fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd1" src="1f9d1.png"/>',fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68" src="1f468.png"/>',fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69" src="1f469.png"/>',fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71\u200d\u2640\ufe0f" src="1f471-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71" src="1f471.png"/>',fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd4" src="1f9d4.png"/>',fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd3" src="1f9d3.png"/>',fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc74" src="1f474.png"/>',fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc75" src="1f475.png"/>',fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc72" src="1f472.png"/>',fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd5" src="1f9d5.png"/>',fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73\u200d\u2640\ufe0f" src="1f473-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73" src="1f473.png"/>',fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e\u200d\u2640\ufe0f" src="1f46e-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e" src="1f46e.png"/>',fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77\u200d\u2640\ufe0f" src="1f477-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77" src="1f477.png"/>',fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82\u200d\u2640\ufe0f" src="1f482-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82" src="1f482.png"/>',fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75\ufe0f\u200d\u2640\ufe0f" src="1f575-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75" src="1f575.png"/>',fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2695\ufe0f" src="1f469-200d-2695-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2695\ufe0f" src="1f468-200d-2695-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf3e" src="1f469-200d-1f33e.png"/>',fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf3e" src="1f468-200d-1f33e.png"/>',fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf73" src="1f469-200d-1f373.png"/>',fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf73" src="1f468-200d-1f373.png"/>',fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf93" src="1f469-200d-1f393.png"/>',fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf93" src="1f468-200d-1f393.png"/>',fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa4" src="1f469-200d-1f3a4.png"/>',fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa4" src="1f468-200d-1f3a4.png"/>',fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfeb" src="1f469-200d-1f3eb.png"/>',fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfeb" src="1f468-200d-1f3eb.png"/>',fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfed" src="1f469-200d-1f3ed.png"/>',fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfed" src="1f468-200d-1f3ed.png"/>',fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbb" src="1f469-200d-1f4bb.png"/>',fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbb" src="1f468-200d-1f4bb.png"/>',fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbc" src="1f469-200d-1f4bc.png"/>',fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbc" src="1f468-200d-1f4bc.png"/>',fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd27" src="1f469-200d-1f527.png"/>',fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd27" src="1f468-200d-1f527.png"/>',fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd2c" src="1f469-200d-1f52c.png"/>',fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd2c" src="1f468-200d-1f52c.png"/>',fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa8" src="1f469-200d-1f3a8.png"/>',fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa8" src="1f468-200d-1f3a8.png"/>',fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude92" src="1f469-200d-1f692.png"/>',fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude92" src="1f468-200d-1f692.png"/>',fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2708\ufe0f" src="1f469-200d-2708-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2708\ufe0f" src="1f468-200d-2708-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude80" src="1f469-200d-1f680.png"/>',fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude80" src="1f468-200d-1f680.png"/>',fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2696\ufe0f" src="1f469-200d-2696-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2696\ufe0f" src="1f468-200d-2696-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2640\ufe0f" src="1f9b8-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2642\ufe0f" src="1f9b8-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2640\ufe0f" src="1f9b9-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2642\ufe0f" src="1f9b9-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd36" src="1f936.png"/>',fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf85" src="1f385.png"/>',fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2640\ufe0f" src="1f9d9-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2642\ufe0f" src="1f9d9-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2640\ufe0f" src="1f9dd-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2642\ufe0f" src="1f9dd-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2640\ufe0f" src="1f9db-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2642\ufe0f" src="1f9db-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2640\ufe0f" src="1f9df-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2642\ufe0f" src="1f9df-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2640\ufe0f" src="1f9de-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2642\ufe0f" src="1f9de-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2640\ufe0f" src="1f9dc-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2642\ufe0f" src="1f9dc-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2640\ufe0f" src="1f9da-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2642\ufe0f" src="1f9da-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7c" src="1f47c.png"/>',fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd30" src="1f930.png"/>',fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd31" src="1f931.png"/>',fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc78" src="1f478.png"/>',fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd34" src="1f934.png"/>',fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc70" src="1f470.png"/>',fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd35" src="1f935.png"/>',fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3\u200d\u2640\ufe0f" src="1f3c3-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3" src="1f3c3.png"/>',fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6\u200d\u2640\ufe0f" src="1f6b6-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6" src="1f6b6.png"/>',fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc83" src="1f483.png"/>',fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd7a" src="1f57a.png"/>',fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f" src="1f46f.png"/>',fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f\u200d\u2642\ufe0f" src="1f46f-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6b" src="1f46b.png"/>',fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6c" src="1f46c.png"/>',fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6d" src="1f46d.png"/>',fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47\u200d\u2640\ufe0f" src="1f647-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47" src="1f647.png"/>',fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2642\ufe0f" src="1f926-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2640\ufe0f" src="1f926-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37" src="1f937.png"/>',fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37\u200d\u2642\ufe0f" src="1f937-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81" src="1f481.png"/>',fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81\u200d\u2642\ufe0f" src="1f481-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45" src="1f645.png"/>',fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45\u200d\u2642\ufe0f" src="1f645-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46" src="1f646.png"/>',fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46\u200d\u2642\ufe0f" src="1f646-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b" src="1f64b.png"/>',fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b\u200d\u2642\ufe0f" src="1f64b-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e" src="1f64e.png"/>',fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e\u200d\u2642\ufe0f" src="1f64e-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d" src="1f64d.png"/>',fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d\u200d\u2642\ufe0f" src="1f64d-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87" src="1f487.png"/>',fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87\u200d\u2642\ufe0f" src="1f487-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86" src="1f486.png"/>',fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86\u200d\u2642\ufe0f" src="1f486-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2640\ufe0f" src="1f9d6-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2642\ufe0f" src="1f9d6-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc91" src="1f491.png"/>',fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f469.png"/>',fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f468.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8f" src="1f48f.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6a" src="1f46a.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf6" src="1f9f6.png"/>',fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf5" src="1f9f5.png"/>',fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde5" src="1f9e5.png"/>',fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7c" src="1f97c.png"/>',fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5a" src="1f45a.png"/>',fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc55" src="1f455.png"/>',fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc56" src="1f456.png"/>',fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc54" src="1f454.png"/>',fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc57" src="1f457.png"/>',fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc59" src="1f459.png"/>',fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc58" src="1f458.png"/>',fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc84" src="1f484.png"/>',fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8b" src="1f48b.png"/>',fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc63" src="1f463.png"/>',fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7f" src="1f97f.png"/>',fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc60" src="1f460.png"/>',fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc61" src="1f461.png"/>',fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc62" src="1f462.png"/>',fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5e" src="1f45e.png"/>',fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5f" src="1f45f.png"/>',fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7e" src="1f97e.png"/>',fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde6" src="1f9e6.png"/>',fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde4" src="1f9e4.png"/>',fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde3" src="1f9e3.png"/>',fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc52" src="1f452.png"/>',fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa9" src="1f3a9.png"/>',fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde2" src="1f9e2.png"/>',fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d1" src="26d1.png"/>',fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf93" src="1f393.png"/>',fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc51" src="1f451.png"/>',fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf92" src="1f392.png"/>',fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf3" src="1f9f3.png"/>',fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5d" src="1f45d.png"/>',fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5b" src="1f45b.png"/>',fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5c" src="1f45c.png"/>',fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbc" src="1f4bc.png"/>',fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc53" src="1f453.png"/>',fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd76" src="1f576.png"/>',fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7d" src="1f97d.png"/>',fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8d" src="1f48d.png"/>',fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf02" src="1f302.png"/>',fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc36" src="1f436.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc31" src="1f431.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2d" src="1f42d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc39" src="1f439.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc30" src="1f430.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8a" src="1f98a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3b" src="1f43b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3c" src="1f43c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc28" src="1f428.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2f" src="1f42f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd81" src="1f981.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2e" src="1f42e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc37" src="1f437.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3d" src="1f43d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc38" src="1f438.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd91" src="1f991.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc19" src="1f419.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd90" src="1f990.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc35" src="1f435.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8d" src="1f98d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude48" src="1f648.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude49" src="1f649.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4a" src="1f64a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc12" src="1f412.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc14" src="1f414.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc27" src="1f427.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc26" src="1f426.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc24" src="1f424.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc23" src="1f423.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc25" src="1f425.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd86" src="1f986.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd85" src="1f985.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd89" src="1f989.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd87" src="1f987.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3a" src="1f43a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc17" src="1f417.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc34" src="1f434.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd84" src="1f984.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1d" src="1f41d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1b" src="1f41b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8b" src="1f98b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0c" src="1f40c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1e" src="1f41e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1c" src="1f41c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd97" src="1f997.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd77" src="1f577.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd82" src="1f982.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd80" src="1f980.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0d" src="1f40d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8e" src="1f98e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd96" src="1f996.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd95" src="1f995.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc22" src="1f422.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc20" src="1f420.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1f" src="1f41f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc21" src="1f421.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2c" src="1f42c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd88" src="1f988.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc33" src="1f433.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0b" src="1f40b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0a" src="1f40a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc06" src="1f406.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd93" src="1f993.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc05" src="1f405.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc03" src="1f403.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc02" src="1f402.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc04" src="1f404.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8c" src="1f98c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2a" src="1f42a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2b" src="1f42b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd92" src="1f992.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc18" src="1f418.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8f" src="1f98f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc10" src="1f410.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0f" src="1f40f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc11" src="1f411.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0e" src="1f40e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc16" src="1f416.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc00" src="1f400.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc01" src="1f401.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc13" src="1f413.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd83" src="1f983.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4a" src="1f54a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc15" src="1f415.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc29" src="1f429.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc08" src="1f408.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc07" src="1f407.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3f" src="1f43f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd94" src="1f994.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9d" src="1f99d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd99" src="1f999.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9b" src="1f99b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd98" src="1f998.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda1" src="1f9a1.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda2" src="1f9a2.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9a" src="1f99a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9c" src="1f99c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9e" src="1f99e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9f" src="1f99f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3e" src="1f43e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc09" src="1f409.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc32" src="1f432.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf35" src="1f335.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf84" src="1f384.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf32" src="1f332.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf33" src="1f333.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf34" src="1f334.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf31" src="1f331.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3f" src="1f33f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2618" src="2618.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf40" src="1f340.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8d" src="1f38d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8b" src="1f38b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf43" src="1f343.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf42" src="1f342.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf41" src="1f341.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3e" src="1f33e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3a" src="1f33a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3b" src="1f33b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf39" src="1f339.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd40" src="1f940.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf37" src="1f337.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3c" src="1f33c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf38" src="1f338.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc90" src="1f490.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf44" src="1f344.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf30" src="1f330.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf83" src="1f383.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1a" src="1f41a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd78" src="1f578.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0e" src="1f30e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0d" src="1f30d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0f" src="1f30f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf15" src="1f315.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf16" src="1f316.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf17" src="1f317.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf18" src="1f318.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf11" src="1f311.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf12" src="1f312.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf13" src="1f313.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf14" src="1f314.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1a" src="1f31a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1d" src="1f31d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1b" src="1f31b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1c" src="1f31c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1e" src="1f31e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf19" src="1f319.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b50" src="2b50.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1f" src="1f31f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcab" src="1f4ab.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2728" src="2728.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2604" src="2604.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2600\ufe0f" src="2600.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf24" src="1f324.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c5" src="26c5.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf25" src="1f325.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf26" src="1f326.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2601\ufe0f" src="2601.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf27" src="1f327.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c8" src="26c8.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf29" src="1f329.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a1" src="26a1.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd25" src="1f525.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca5" src="1f4a5.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2744\ufe0f" src="2744.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf28" src="1f328.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c4" src="26c4.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2603" src="2603.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2c" src="1f32c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca8" src="1f4a8.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2a" src="1f32a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2b" src="1f32b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2602" src="2602.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2614" src="2614.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca7" src="1f4a7.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca6" src="1f4a6.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0a" src="1f30a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4f" src="1f34f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4e" src="1f34e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf50" src="1f350.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4a" src="1f34a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4b" src="1f34b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4c" src="1f34c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf49" src="1f349.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf47" src="1f347.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf53" src="1f353.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf48" src="1f348.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf52" src="1f352.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf51" src="1f351.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4d" src="1f34d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd65" src="1f965.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5d" src="1f95d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6d" src="1f96d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd51" src="1f951.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd66" src="1f966.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf45" src="1f345.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf46" src="1f346.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd52" src="1f952.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd55" src="1f955.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf36" src="1f336.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd54" src="1f954.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3d" src="1f33d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6c" src="1f96c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf60" src="1f360.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5c" src="1f95c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6f" src="1f36f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd50" src="1f950.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5e" src="1f35e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd56" src="1f956.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6f" src="1f96f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd68" src="1f968.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc0" src="1f9c0.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5a" src="1f95a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd53" src="1f953.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd69" src="1f969.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5e" src="1f95e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf57" src="1f357.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf56" src="1f356.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb4" src="1f9b4.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf64" src="1f364.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf73" src="1f373.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf54" src="1f354.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5f" src="1f35f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd59" src="1f959.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2d" src="1f32d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf55" src="1f355.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6a" src="1f96a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6b" src="1f96b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5d" src="1f35d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2e" src="1f32e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2f" src="1f32f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd57" src="1f957.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd58" src="1f958.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5c" src="1f35c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf72" src="1f372.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf65" src="1f365.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd60" src="1f960.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf63" src="1f363.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf71" src="1f371.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5b" src="1f35b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf59" src="1f359.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5a" src="1f35a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf58" src="1f358.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf62" src="1f362.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf61" src="1f361.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf67" src="1f367.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf68" src="1f368.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf66" src="1f366.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd67" src="1f967.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf70" src="1f370.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc1" src="1f9c1.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6e" src="1f96e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf82" src="1f382.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6e" src="1f36e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6c" src="1f36c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6d" src="1f36d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6b" src="1f36b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7f" src="1f37f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5f" src="1f95f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf69" src="1f369.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6a" src="1f36a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5b" src="1f95b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7a" src="1f37a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7b" src="1f37b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd42" src="1f942.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf77" src="1f377.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd43" src="1f943.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf78" src="1f378.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf79" src="1f379.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7e" src="1f37e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf76" src="1f376.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf75" src="1f375.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd64" src="1f964.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2615" src="2615.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7c" src="1f37c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc2" src="1f9c2.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd44" src="1f944.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf74" src="1f374.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7d" src="1f37d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd63" src="1f963.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd61" src="1f961.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd62" src="1f962.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26bd" src="26bd.png"/>',fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc0" src="1f3c0.png"/>',fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc8" src="1f3c8.png"/>',fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26be" src="26be.png"/>',fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4e" src="1f94e.png"/>',fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbe" src="1f3be.png"/>',fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd0" src="1f3d0.png"/>',fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc9" src="1f3c9.png"/>',fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4f" src="1f94f.png"/>',fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb1" src="1f3b1.png"/>',fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f3" src="26f3.png"/>',fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f" src="1f3cc-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc" src="1f3cc.png"/>',fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd3" src="1f3d3.png"/>',fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff8" src="1f3f8.png"/>',fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd45" src="1f945.png"/>',fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd2" src="1f3d2.png"/>',fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd1" src="1f3d1.png"/>',fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4d" src="1f94d.png"/>',fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcf" src="1f3cf.png"/>',fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbf" src="1f3bf.png"/>',fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f7" src="26f7.png"/>',fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc2" src="1f3c2.png"/>',fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3a" src="1f93a.png"/>',fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2640\ufe0f" src="1f93c-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2642\ufe0f" src="1f93c-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2640\ufe0f" src="1f938-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2642\ufe0f" src="1f938-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2640\ufe0f" src="1f93e-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2642\ufe0f" src="1f93e-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f8" src="26f8.png"/>',fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4c" src="1f94c.png"/>',fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef9" src="1f6f9.png"/>',fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef7" src="1f6f7.png"/>',fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff9" src="1f3f9.png"/>',fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa3" src="1f3a3.png"/>',fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4a" src="1f94a.png"/>',fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4b" src="1f94b.png"/>',fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3\u200d\u2640\ufe0f" src="1f6a3-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3" src="1f6a3.png"/>',fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2640\ufe0f" src="1f9d7-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2642\ufe0f" src="1f9d7-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca\u200d\u2640\ufe0f" src="1f3ca-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca" src="1f3ca.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2640\ufe0f" src="1f93d-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2642\ufe0f" src="1f93d-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2640\ufe0f" src="1f9d8-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2642\ufe0f" src="1f9d8-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4\u200d\u2640\ufe0f" src="1f3c4-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4" src="1f3c4.png"/>',fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec0" src="1f6c0.png"/>',fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9\ufe0f\u200d\u2640\ufe0f" src="26f9-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9" src="26f9.png"/>',fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f" src="1f3cb-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb" src="1f3cb.png"/>',fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4\u200d\u2640\ufe0f" src="1f6b4-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4" src="1f6b4.png"/>',fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5\u200d\u2640\ufe0f" src="1f6b5-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5" src="1f6b5.png"/>',fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc7" src="1f3c7.png"/>',fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd74" src="1f574.png"/>',fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc6" src="1f3c6.png"/>',fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbd" src="1f3bd.png"/>',fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc5" src="1f3c5.png"/>',fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf96" src="1f396.png"/>',fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd47" src="1f947.png"/>',fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd48" src="1f948.png"/>',fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd49" src="1f949.png"/>',fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf97" src="1f397.png"/>',fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff5" src="1f3f5.png"/>',fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfab" src="1f3ab.png"/>',fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9f" src="1f39f.png"/>',fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfad" src="1f3ad.png"/>',fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa8" src="1f3a8.png"/>',fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaa" src="1f3aa.png"/>',fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2640\ufe0f" src="1f939-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2642\ufe0f" src="1f939-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa4" src="1f3a4.png"/>',fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa7" src="1f3a7.png"/>',fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbc" src="1f3bc.png"/>',fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb9" src="1f3b9.png"/>',fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd41" src="1f941.png"/>',fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb7" src="1f3b7.png"/>',fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfba" src="1f3ba.png"/>',fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb8" src="1f3b8.png"/>',fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbb" src="1f3bb.png"/>',fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfac" src="1f3ac.png"/>',fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfae" src="1f3ae.png"/>',fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7e" src="1f47e.png"/>',fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaf" src="1f3af.png"/>',fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb2" src="1f3b2.png"/>',fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],char:"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb0" src="1f3b0.png"/>',fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde9" src="1f9e9.png"/>',fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb3" src="1f3b3.png"/>',fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude97" src="1f697.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude95" src="1f695.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude99" src="1f699.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8c" src="1f68c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8e" src="1f68e.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfce" src="1f3ce.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude93" src="1f693.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude91" src="1f691.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude92" src="1f692.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude90" src="1f690.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9a" src="1f69a.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9b" src="1f69b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9c" src="1f69c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef4" src="1f6f4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcd" src="1f3cd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb2" src="1f6b2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef5" src="1f6f5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea8" src="1f6a8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude94" src="1f694.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8d" src="1f68d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude98" src="1f698.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude96" src="1f696.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea1" src="1f6a1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea0" src="1f6a0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9f" src="1f69f.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude83" src="1f683.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8b" src="1f68b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9d" src="1f69d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude84" src="1f684.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude85" src="1f685.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude88" src="1f688.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9e" src="1f69e.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude82" src="1f682.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude86" src="1f686.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude87" src="1f687.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8a" src="1f68a.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude89" src="1f689.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef8" src="1f6f8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude81" src="1f681.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee9" src="1f6e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2708\ufe0f" src="2708.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeeb" src="1f6eb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeec" src="1f6ec.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f5" src="26f5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee5" src="1f6e5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea4" src="1f6a4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f4" src="26f4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef3" src="1f6f3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude80" src="1f680.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef0" src="1f6f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcba" src="1f4ba.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef6" src="1f6f6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2693" src="2693.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea7" src="1f6a7.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fd" src="26fd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8f" src="1f68f.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea6" src="1f6a6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea5" src="1f6a5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc1" src="1f3c1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea2" src="1f6a2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa1" src="1f3a1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa2" src="1f3a2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa0" src="1f3a0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd7" src="1f3d7.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf01" src="1f301.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfc" src="1f5fc.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfed" src="1f3ed.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f2" src="26f2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf91" src="1f391.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f0" src="26f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd4" src="1f3d4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfb" src="1f5fb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0b" src="1f30b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfe" src="1f5fe.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd5" src="1f3d5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fa" src="26fa.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfde" src="1f3de.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee3" src="1f6e3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee4" src="1f6e4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf05" src="1f305.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf04" src="1f304.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdc" src="1f3dc.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd6" src="1f3d6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdd" src="1f3dd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf07" src="1f307.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf06" src="1f306.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd9" src="1f3d9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf03" src="1f303.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf09" src="1f309.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0c" src="1f30c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf20" src="1f320.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf87" src="1f387.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf86" src="1f386.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf08" src="1f308.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd8" src="1f3d8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff0" src="1f3f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfef" src="1f3ef.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdf" src="1f3df.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfd" src="1f5fd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe0" src="1f3e0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe1" src="1f3e1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfda" src="1f3da.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe2" src="1f3e2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfec" src="1f3ec.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe3" src="1f3e3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe4" src="1f3e4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe5" src="1f3e5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe6" src="1f3e6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe8" src="1f3e8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfea" src="1f3ea.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfeb" src="1f3eb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe9" src="1f3e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc92" src="1f492.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdb" src="1f3db.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ea" src="26ea.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4c" src="1f54c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4d" src="1f54d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4b" src="1f54b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26e9" src="26e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231a" src="231a.png"/>',fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf1" src="1f4f1.png"/>',fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf2" src="1f4f2.png"/>',fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbb" src="1f4bb.png"/>',fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2328" src="2328.png"/>',fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda5" src="1f5a5.png"/>',fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda8" src="1f5a8.png"/>',fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb1" src="1f5b1.png"/>',fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb2" src="1f5b2.png"/>',fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd79" src="1f579.png"/>',fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddc" src="1f5dc.png"/>',fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbd" src="1f4bd.png"/>',fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbe" src="1f4be.png"/>',fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbf" src="1f4bf.png"/>',fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc0" src="1f4c0.png"/>',fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfc" src="1f4fc.png"/>',fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf7" src="1f4f7.png"/>',fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf8" src="1f4f8.png"/>',fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf9" src="1f4f9.png"/>',fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa5" src="1f3a5.png"/>',fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfd" src="1f4fd.png"/>',fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9e" src="1f39e.png"/>',fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcde" src="1f4de.png"/>',fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u260e\ufe0f" src="260e.png"/>',fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdf" src="1f4df.png"/>',fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce0" src="1f4e0.png"/>',fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfa" src="1f4fa.png"/>',fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfb" src="1f4fb.png"/>',fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf99" src="1f399.png"/>',fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9a" src="1f39a.png"/>',fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9b" src="1f39b.png"/>',fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udded" src="1f9ed.png"/>',fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f1" src="23f1.png"/>',fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f2" src="23f2.png"/>',fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f0" src="23f0.png"/>',fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd70" src="1f570.png"/>',fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f3" src="23f3.png"/>',fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231b" src="231b.png"/>',fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce1" src="1f4e1.png"/>',fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0b" src="1f50b.png"/>',fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0c" src="1f50c.png"/>',fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca1" src="1f4a1.png"/>',fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd26" src="1f526.png"/>',fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd6f" src="1f56f.png"/>',fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddef" src="1f9ef.png"/>',fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd1" src="1f5d1.png"/>',fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee2" src="1f6e2.png"/>',fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb8" src="1f4b8.png"/>',fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb5" src="1f4b5.png"/>',fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb4" src="1f4b4.png"/>',fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb6" src="1f4b6.png"/>',fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb7" src="1f4b7.png"/>',fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb0" src="1f4b0.png"/>',fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb3" src="1f4b3.png"/>',fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8e" src="1f48e.png"/>',fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2696" src="2696.png"/>',fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf0" src="1f9f0.png"/>',fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd27" src="1f527.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd28" src="1f528.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2692" src="2692.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee0" src="1f6e0.png"/>',fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26cf" src="26cf.png"/>',fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd29" src="1f529.png"/>',fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2699" src="2699.png"/>',fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf1" src="1f9f1.png"/>',fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d3" src="26d3.png"/>',fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf2" src="1f9f2.png"/>',fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2b" src="1f52b.png"/>',fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca3" src="1f4a3.png"/>',fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde8" src="1f9e8.png"/>',fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2a" src="1f52a.png"/>',fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde1" src="1f5e1.png"/>',fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2694" src="2694.png"/>',fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee1" src="1f6e1.png"/>',fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeac" src="1f6ac.png"/>',fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2620" src="2620.png"/>',fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b0" src="26b0.png"/>',fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b1" src="26b1.png"/>',fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udffa" src="1f3fa.png"/>',fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2e" src="1f52e.png"/>',fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcff" src="1f4ff.png"/>',fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddff" src="1f9ff.png"/>',fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc88" src="1f488.png"/>',fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2697" src="2697.png"/>',fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2d" src="1f52d.png"/>',fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2c" src="1f52c.png"/>',fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd73" src="1f573.png"/>',fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8a" src="1f48a.png"/>',fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc89" src="1f489.png"/>',fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddec" src="1f9ec.png"/>',fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda0" src="1f9a0.png"/>',fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddeb" src="1f9eb.png"/>',fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddea" src="1f9ea.png"/>',fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf21" src="1f321.png"/>',fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf9" src="1f9f9.png"/>',fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfa" src="1f9fa.png"/>',fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfb" src="1f9fb.png"/>',fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff7" src="1f3f7.png"/>',fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd16" src="1f516.png"/>',fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebd" src="1f6bd.png"/>',fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebf" src="1f6bf.png"/>',fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec1" src="1f6c1.png"/>',fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfc" src="1f9fc.png"/>',fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfd" src="1f9fd.png"/>',fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf4" src="1f9f4.png"/>',fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd11" src="1f511.png"/>',fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddd" src="1f5dd.png"/>',fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecb" src="1f6cb.png"/>',fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecc" src="1f6cc.png"/>',fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecf" src="1f6cf.png"/>',fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaa" src="1f6aa.png"/>',fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udece" src="1f6ce.png"/>',fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf8" src="1f9f8.png"/>',fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddbc" src="1f5bc.png"/>',fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfa" src="1f5fa.png"/>',fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f1" src="26f1.png"/>',fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddff" src="1f5ff.png"/>',fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecd" src="1f6cd.png"/>',fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded2" src="1f6d2.png"/>',fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf88" src="1f388.png"/>',fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8f" src="1f38f.png"/>',fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf80" src="1f380.png"/>',fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf81" src="1f381.png"/>',fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8a" src="1f38a.png"/>',fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf89" src="1f389.png"/>',fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8e" src="1f38e.png"/>',fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf90" src="1f390.png"/>',fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8c" src="1f38c.png"/>',fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfee" src="1f3ee.png"/>',fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde7" src="1f9e7.png"/>',fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2709\ufe0f" src="2709.png"/>',fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce9" src="1f4e9.png"/>',fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce8" src="1f4e8.png"/>',fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce7" src="1f4e7.png"/>',fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8c" src="1f48c.png"/>',fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcee" src="1f4ee.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcea" src="1f4ea.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udceb" src="1f4eb.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcec" src="1f4ec.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udced" src="1f4ed.png"/>',fitzpatrick_scale:!1,category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce6" src="1f4e6.png"/>',fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcef" src="1f4ef.png"/>',fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce5" src="1f4e5.png"/>',fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce4" src="1f4e4.png"/>',fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdc" src="1f4dc.png"/>',fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc3" src="1f4c3.png"/>',fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd1" src="1f4d1.png"/>',fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfe" src="1f9fe.png"/>',fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcca" src="1f4ca.png"/>',fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc8" src="1f4c8.png"/>',fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc9" src="1f4c9.png"/>',fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc4" src="1f4c4.png"/>',fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc5" src="1f4c5.png"/>',fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc6" src="1f4c6.png"/>',fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd3" src="1f5d3.png"/>',fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc7" src="1f4c7.png"/>',fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc3" src="1f5c3.png"/>',fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddf3" src="1f5f3.png"/>',fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc4" src="1f5c4.png"/>',fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccb" src="1f4cb.png"/>',fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd2" src="1f5d2.png"/>',fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc1" src="1f4c1.png"/>',fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc2" src="1f4c2.png"/>',fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc2" src="1f5c2.png"/>',fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddde" src="1f5de.png"/>',fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf0" src="1f4f0.png"/>',fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd3" src="1f4d3.png"/>',fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd5" src="1f4d5.png"/>',fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd7" src="1f4d7.png"/>',fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd8" src="1f4d8.png"/>',fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd9" src="1f4d9.png"/>',fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd4" src="1f4d4.png"/>',fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd2" src="1f4d2.png"/>',fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcda" src="1f4da.png"/>',fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd6" src="1f4d6.png"/>',fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf7" src="1f9f7.png"/>',fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd17" src="1f517.png"/>',fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcce" src="1f4ce.png"/>',fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd87" src="1f587.png"/>',fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2702\ufe0f" src="2702.png"/>',fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd0" src="1f4d0.png"/>',fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccf" src="1f4cf.png"/>',fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddee" src="1f9ee.png"/>',fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccc" src="1f4cc.png"/>',fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccd" src="1f4cd.png"/>',fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea9" src="1f6a9.png"/>',fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3" src="1f3f3.png"/>',fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4" src="1f3f4.png"/>',fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3\ufe0f\u200d\ud83c\udf08" src="1f3f3-fe0f-200d-1f308.png"/>',fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd10" src="1f510.png"/>',fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd12" src="1f512.png"/>',fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd13" src="1f513.png"/>',fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0f" src="1f50f.png"/>',fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8a" src="1f58a.png"/>',fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8b" src="1f58b.png"/>',fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2712\ufe0f" src="2712.png"/>',fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdd" src="1f4dd.png"/>',fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270f\ufe0f" src="270f.png"/>',fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8d" src="1f58d.png"/>',fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8c" src="1f58c.png"/>',fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0d" src="1f50d.png"/>',fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0e" src="1f50e.png"/>',fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2764\ufe0f" src="2764.png"/>',fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde1" src="1f9e1.png"/>',fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9b" src="1f49b.png"/>',fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9a" src="1f49a.png"/>',fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc99" src="1f499.png"/>',fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9c" src="1f49c.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda4" src="1f5a4.png"/>',fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc94" src="1f494.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2763" src="2763.png"/>',fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc95" src="1f495.png"/>',fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9e" src="1f49e.png"/>',fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc93" src="1f493.png"/>',fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc97" src="1f497.png"/>',fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc96" src="1f496.png"/>',fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc98" src="1f498.png"/>',fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9d" src="1f49d.png"/>',fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9f" src="1f49f.png"/>',fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262e" src="262e.png"/>',fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u271d" src="271d.png"/>',fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262a" src="262a.png"/>',fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd49" src="1f549.png"/>',fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2638" src="2638.png"/>',fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2721" src="2721.png"/>',fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2f" src="1f52f.png"/>',fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4e" src="1f54e.png"/>',fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262f" src="262f.png"/>',fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2626" src="2626.png"/>',fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded0" src="1f6d0.png"/>',fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ce" src="26ce.png"/>',fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2648" src="2648.png"/>',fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2649" src="2649.png"/>',fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264a" src="264a.png"/>',fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264b" src="264b.png"/>',fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264c" src="264c.png"/>',fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264d" src="264d.png"/>',fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264e" src="264e.png"/>',fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264f" src="264f.png"/>',fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2650" src="2650.png"/>',fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2651" src="2651.png"/>',fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2652" src="2652.png"/>',fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2653" src="2653.png"/>',fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd94" src="1f194.png"/>',fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269b" src="269b.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude33" src="1f233.png"/>',fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude39" src="1f239.png"/>',fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2622" src="2622.png"/>',fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2623" src="2623.png"/>',fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf4" src="1f4f4.png"/>',fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf3" src="1f4f3.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude36" src="1f236.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude1a" src="1f21a.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude38" src="1f238.png"/>',fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude3a" src="1f23a.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude37\ufe0f" src="1f237.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2734\ufe0f" src="2734.png"/>',fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd9a" src="1f19a.png"/>',fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude51" src="1f251.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcae" src="1f4ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude50" src="1f250.png"/>',fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3299\ufe0f" src="3299.png"/>',fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3297\ufe0f" src="3297.png"/>',fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude34" src="1f234.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude35" src="1f235.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude32" src="1f232.png"/>',fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd70\ufe0f" src="1f170.png"/>',fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd71\ufe0f" src="1f171.png"/>',fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd8e" src="1f18e.png"/>',fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd91" src="1f191.png"/>',fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7e\ufe0f" src="1f17e.png"/>',fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd98" src="1f198.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d4" src="26d4.png"/>',fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdb" src="1f4db.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeab" src="1f6ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274c" src="274c.png"/>',fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b55" src="2b55.png"/>',fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded1" src="1f6d1.png"/>',fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca2" src="1f4a2.png"/>',fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2668\ufe0f" src="2668.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb7" src="1f6b7.png"/>',fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaf" src="1f6af.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb3" src="1f6b3.png"/>',fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb1" src="1f6b1.png"/>',fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1e" src="1f51e.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf5" src="1f4f5.png"/>',fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2757" src="2757.png"/>',fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2755" src="2755.png"/>',fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2753" src="2753.png"/>',fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2754" src="2754.png"/>',fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u203c\ufe0f" src="203c.png"/>',fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2049\ufe0f" src="2049.png"/>',fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd05" src="1f505.png"/>',fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd06" src="1f506.png"/>',fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd31" src="1f531.png"/>',fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269c" src="269c.png"/>',fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u303d\ufe0f" src="303d.png"/>',fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a0\ufe0f" src="26a0.png"/>',fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb8" src="1f6b8.png"/>',fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd30" src="1f530.png"/>',fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267b\ufe0f" src="267b.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude2f" src="1f22f.png"/>',fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb9" src="1f4b9.png"/>',fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2747\ufe0f" src="2747.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2733\ufe0f" src="2733.png"/>',fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274e" src="274e.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2705" src="2705.png"/>',fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca0" src="1f4a0.png"/>',fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf00" src="1f300.png"/>',fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27bf" src="27bf.png"/>',fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf10" src="1f310.png"/>',fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u24c2\ufe0f" src="24c2.png"/>',fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe7" src="1f3e7.png"/>',fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude02\ufe0f" src="1f202.png"/>',fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec2" src="1f6c2.png"/>',fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec3" src="1f6c3.png"/>',fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec4" src="1f6c4.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec5" src="1f6c5.png"/>',fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267f" src="267f.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udead" src="1f6ad.png"/>',fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebe" src="1f6be.png"/>',fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7f\ufe0f" src="1f17f.png"/>',fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb0" src="1f6b0.png"/>',fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb9" src="1f6b9.png"/>',fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeba" src="1f6ba.png"/>',fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebc" src="1f6bc.png"/>',fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebb" src="1f6bb.png"/>',fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeae" src="1f6ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa6" src="1f3a6.png"/>',fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf6" src="1f4f6.png"/>',fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude01" src="1f201.png"/>',fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd96" src="1f196.png"/>',fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd97" src="1f197.png"/>',fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd99" src="1f199.png"/>',fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd92" src="1f192.png"/>',fitzpatrick_scale:!1,category:"symbols"},new:{keywords:["blue-square","words","start"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd95" src="1f195.png"/>',fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd93" src="1f193.png"/>',fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="0\ufe0f\u20e3" src="30-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="1\ufe0f\u20e3" src="31-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="2\ufe0f\u20e3" src="32-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="3\ufe0f\u20e3" src="33-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="4\ufe0f\u20e3" src="34-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="5\ufe0f\u20e3" src="35-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="6\ufe0f\u20e3" src="36-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="7\ufe0f\u20e3" src="37-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="8\ufe0f\u20e3" src="38-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="9\ufe0f\u20e3" src="39-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1f" src="1f51f.png"/>',fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="*\u20e3" src="2a-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23cf\ufe0f" src="23cf.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25b6\ufe0f" src="25b6.png"/>',fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f8" src="23f8.png"/>',fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ed" src="23ed.png"/>',fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f9" src="23f9.png"/>',fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23fa" src="23fa.png"/>',fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ef" src="23ef.png"/>',fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ee" src="23ee.png"/>',fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23e9" src="23e9.png"/>',fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ea" src="23ea.png"/>',fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd00" src="1f500.png"/>',fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd01" src="1f501.png"/>',fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd02" src="1f502.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25c0\ufe0f" src="25c0.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3c" src="1f53c.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3d" src="1f53d.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23eb" src="23eb.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ec" src="23ec.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27a1\ufe0f" src="27a1.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b05\ufe0f" src="2b05.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b06\ufe0f" src="2b06.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b07\ufe0f" src="2b07.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2197\ufe0f" src="2197.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2198\ufe0f" src="2198.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2199\ufe0f" src="2199.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2196\ufe0f" src="2196.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2195\ufe0f" src="2195.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2194\ufe0f" src="2194.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd04" src="1f504.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21aa\ufe0f" src="21aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21a9\ufe0f" src="21a9.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2934\ufe0f" src="2934.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2935\ufe0f" src="2935.png"/>',fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="#\ufe0f\u20e3" src="23-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2139\ufe0f" src="2139.png"/>',fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd24" src="1f524.png"/>',fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd21" src="1f521.png"/>',fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd20" src="1f520.png"/>',fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd23" src="1f523.png"/>',fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb5" src="1f3b5.png"/>',fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb6" src="1f3b6.png"/>',fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3030\ufe0f" src="3030.png"/>',fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27b0" src="27b0.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2714\ufe0f" src="2714.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd03" src="1f503.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2795" src="2795.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2796" src="2796.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2797" src="2797.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2716\ufe0f" src="2716.png"/>',fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267e" src="267e.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb2" src="1f4b2.png"/>',fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb1" src="1f4b1.png"/>',fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xa9\ufe0f" src="a9.png"/>',fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xae\ufe0f" src="ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2122\ufe0f" src="2122.png"/>',fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1a" src="1f51a.png"/>',fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd19" src="1f519.png"/>',fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1b" src="1f51b.png"/>',fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1d" src="1f51d.png"/>',fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1c" src="1f51c.png"/>',fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2611\ufe0f" src="2611.png"/>',fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd18" src="1f518.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26aa" src="26aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ab" src="26ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd34" src="1f534.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd35" src="1f535.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd38" src="1f538.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd39" src="1f539.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd36" src="1f536.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd37" src="1f537.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3a" src="1f53a.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25aa\ufe0f" src="25aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25ab\ufe0f" src="25ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1b" src="2b1b.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1c" src="2b1c.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3b" src="1f53b.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fc\ufe0f" src="25fc.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fb\ufe0f" src="25fb.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fe" src="25fe.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fd" src="25fd.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd32" src="1f532.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd33" src="1f533.png"/>',fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd08" src="1f508.png"/>',fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd09" src="1f509.png"/>',fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0a" src="1f50a.png"/>',fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd07" src="1f507.png"/>',fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce3" src="1f4e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce2" src="1f4e2.png"/>',fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd14" src="1f514.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd15" src="1f515.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udccf" src="1f0cf.png"/>',fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udc04" src="1f004.png"/>',fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2660\ufe0f" src="2660.png"/>',fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2663\ufe0f" src="2663.png"/>',fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2665\ufe0f" src="2665.png"/>',fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2666\ufe0f" src="2666.png"/>',fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb4" src="1f3b4.png"/>',fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcad" src="1f4ad.png"/>',fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddef" src="1f5ef.png"/>',fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcac" src="1f4ac.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde8" src="1f5e8.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd50" src="1f550.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd51" src="1f551.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd52" src="1f552.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd53" src="1f553.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd54" src="1f554.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd55" src="1f555.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd56" src="1f556.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd57" src="1f557.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd58" src="1f558.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd59" src="1f559.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5a" src="1f55a.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5b" src="1f55b.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5c" src="1f55c.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5d" src="1f55d.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5e" src="1f55e.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5f" src="1f55f.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd60" src="1f560.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd61" src="1f561.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd62" src="1f562.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd63" src="1f563.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd64" src="1f564.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd65" src="1f565.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd66" src="1f566.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd67" src="1f567.png"/>',fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddeb" src="1f1e6-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfd" src="1f1e6-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf1" src="1f1e6-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddff" src="1f1e9-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf8" src="1f1e6-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\udde9" src="1f1e6-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf4" src="1f1e6-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddee" src="1f1e6-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf6" src="1f1e6-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddec" src="1f1e6-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf7" src="1f1e6-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf2" src="1f1e6-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfc" src="1f1e6-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfa" src="1f1e6-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf9" src="1f1e6-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddff" src="1f1e6-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf8" src="1f1e7-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udded" src="1f1e7-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde9" src="1f1e7-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde7" src="1f1e7-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfe" src="1f1e7-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddea" src="1f1e7-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddff" src="1f1e7-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddef" src="1f1e7-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf2" src="1f1e7-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf9" src="1f1e7-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf4" src="1f1e7-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf6" src="1f1e7-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde6" src="1f1e7-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfc" src="1f1e7-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf7" src="1f1e7-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf4" src="1f1ee-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddec" src="1f1fb-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf3" src="1f1e7-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddec" src="1f1e7-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddeb" src="1f1e7-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddee" src="1f1e7-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfb" src="1f1e8-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\udded" src="1f1f0-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf2" src="1f1e8-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde6" src="1f1e8-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde8" src="1f1ee-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfe" src="1f1f0-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddeb" src="1f1e8-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde9" src="1f1f9-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf1" src="1f1e8-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf3" src="1f1e8-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfd" src="1f1e8-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde8" src="1f1e8-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf4" src="1f1e8-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf2" src="1f1f0-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddec" src="1f1e8-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde9" src="1f1e8-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf0" src="1f1e8-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf7" src="1f1e8-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf7" src="1f1ed-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfa" src="1f1e8-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfc" src="1f1e8-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfe" src="1f1e8-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddff" src="1f1e8-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf0" src="1f1e9-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddef" src="1f1e9-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf2" src="1f1e9-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf4" src="1f1e9-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udde8" src="1f1ea-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddec" src="1f1ea-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfb" src="1f1f8-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf6" src="1f1ec-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf7" src="1f1ea-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddea" src="1f1ea-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf9" src="1f1ea-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddfa" src="1f1ea-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf0" src="1f1eb-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf4" src="1f1eb-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddef" src="1f1eb-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddee" src="1f1eb-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf7" src="1f1eb-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddeb" src="1f1ec-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddeb" src="1f1f5-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddeb" src="1f1f9-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde6" src="1f1ec-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf2" src="1f1ec-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddea" src="1f1ec-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddea" src="1f1e9-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udded" src="1f1ec-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddee" src="1f1ec-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf7" src="1f1ec-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf1" src="1f1ec-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde9" src="1f1ec-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf5" src="1f1ec-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfa" src="1f1ec-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf9" src="1f1ec-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddec" src="1f1ec-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf3" src="1f1ec-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfc" src="1f1ec-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfe" src="1f1ec-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf9" src="1f1ed-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf3" src="1f1ed-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf0" src="1f1ed-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddfa" src="1f1ed-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf8" src="1f1ee-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf3" src="1f1ee-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde9" src="1f1ee-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf7" src="1f1ee-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf6" src="1f1ee-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddea" src="1f1ee-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf2" src="1f1ee-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf1" src="1f1ee-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf9" src="1f1ee-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddee" src="1f1e8-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf2" src="1f1ef-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf5" src="1f1ef-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddea" src="1f1ef-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf4" src="1f1ef-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddff" src="1f1f0-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddea" src="1f1f0-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddee" src="1f1f0-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfd\ud83c\uddf0" src="1f1fd-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfc" src="1f1f0-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddec" src="1f1f0-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde6" src="1f1f1-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfb" src="1f1f1-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde7" src="1f1f1-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf8" src="1f1f1-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf7" src="1f1f1-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfe" src="1f1f1-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddee" src="1f1f1-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf9" src="1f1f1-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfa" src="1f1f1-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf4" src="1f1f2-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf0" src="1f1f2-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddec" src="1f1f2-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfc" src="1f1f2-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfe" src="1f1f2-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfb" src="1f1f2-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf1" src="1f1f2-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf9" src="1f1f2-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udded" src="1f1f2-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf6" src="1f1f2-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf7" src="1f1f2-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfa" src="1f1f2-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddf9" src="1f1fe-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfd" src="1f1f2-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf2" src="1f1eb-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde9" src="1f1f2-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde8" src="1f1f2-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf3" src="1f1f2-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddea" src="1f1f2-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf8" src="1f1f2-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde6" src="1f1f2-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddff" src="1f1f2-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf2" src="1f1f2-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde6" src="1f1f3-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf7" src="1f1f3-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf5" src="1f1f3-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf1" src="1f1f3-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde8" src="1f1f3-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddff" src="1f1f3-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddee" src="1f1f3-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddea" src="1f1f3-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddec" src="1f1f3-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddfa" src="1f1f3-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddeb" src="1f1f3-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf5" src="1f1f2-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf5" src="1f1f0-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf4" src="1f1f3-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf4\ud83c\uddf2" src="1f1f4-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf0" src="1f1f5-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfc" src="1f1f5-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf8" src="1f1f5-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udde6" src="1f1f5-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddec" src="1f1f5-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfe" src="1f1f5-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddea" src="1f1f5-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udded" src="1f1f5-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf3" src="1f1f5-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf1" src="1f1f5-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf9" src="1f1f5-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf7" src="1f1f5-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf6\ud83c\udde6" src="1f1f6-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddea" src="1f1f7-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf4" src="1f1f7-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfa" src="1f1f7-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfc" src="1f1f7-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf1" src="1f1e7-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udded" src="1f1f8-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf3" src="1f1f0-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde8" src="1f1f1-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf2" src="1f1f5-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde8" src="1f1fb-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddf8" src="1f1fc-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf2" src="1f1f8-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf9" src="1f1f8-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde6" src="1f1f8-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf3" src="1f1f8-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf8" src="1f1f7-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde8" src="1f1f8-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf1" src="1f1f8-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddec" src="1f1f8-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfd" src="1f1f8-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf0" src="1f1f8-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddee" src="1f1f8-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde7" src="1f1f8-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf4" src="1f1f8-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\udde6" src="1f1ff-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf8" src="1f1ec-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf7" src="1f1f0-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf8" src="1f1f8-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf8" src="1f1ea-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf0" src="1f1f1-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde9" src="1f1f8-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf7" src="1f1f8-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddff" src="1f1f8-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddea" src="1f1f8-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udded" src="1f1e8-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfe" src="1f1f8-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfc" src="1f1f9-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddef" src="1f1f9-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddff" src="1f1f9-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udded" src="1f1f9-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf1" src="1f1f9-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddec" src="1f1f9-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf0" src="1f1f9-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf4" src="1f1f9-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf9" src="1f1f9-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf3" src="1f1f9-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf7" src="1f1f9-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf2" src="1f1f9-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde8" src="1f1f9-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfb" src="1f1f9-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddec" src="1f1fa-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\udde6" src="1f1fa-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddea" src="1f1e6-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde7" src="1f1ec-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f" src="1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f" src="1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f" src="1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf8" src="1f1fa-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddee" src="1f1fb-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddfe" src="1f1fa-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddff" src="1f1fa-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddfa" src="1f1fb-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde6" src="1f1fb-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddea" src="1f1fb-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddf3" src="1f1fb-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddeb" src="1f1fc-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udded" src="1f1ea-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddea" src="1f1fe-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddf2" src="1f1ff-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddfc" src="1f1ff-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf3" src="1f1fa-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\u200d\u2620\ufe0f" src="1f3f4-200d-2620-fe0f.png"/>',fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/emoticons/js/emojis.js b/lib/web/tiny_mce_5/plugins/emoticons/js/emojis.js deleted file mode 100644 index cf7f472bfddc1..0000000000000 --- a/lib/web/tiny_mce_5/plugins/emoticons/js/emojis.js +++ /dev/null @@ -1,9423 +0,0 @@ -// Source: npm package: emojilib, file:emojis.json -window.tinymce.Resource.add("tinymce.plugins.emoticons", { - grinning: { - keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ], - char: "\ud83d\ude00", - fitzpatrick_scale: false, - category: "people" - }, - grimacing: { - keywords: [ "face", "grimace", "teeth" ], - char: "\ud83d\ude2c", - fitzpatrick_scale: false, - category: "people" - }, - grin: { - keywords: [ "face", "happy", "smile", "joy", "kawaii" ], - char: "\ud83d\ude01", - fitzpatrick_scale: false, - category: "people" - }, - joy: { - keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ], - char: "\ud83d\ude02", - fitzpatrick_scale: false, - category: "people" - }, - rofl: { - keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ], - char: "\ud83e\udd23", - fitzpatrick_scale: false, - category: "people" - }, - partying: { - keywords: [ "face", "celebration", "woohoo" ], - char: "\ud83e\udd73", - fitzpatrick_scale: false, - category: "people" - }, - smiley: { - keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ], - char: "\ud83d\ude03", - fitzpatrick_scale: false, - category: "people" - }, - smile: { - keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ], - char: "\ud83d\ude04", - fitzpatrick_scale: false, - category: "people" - }, - sweat_smile: { - keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ], - char: "\ud83d\ude05", - fitzpatrick_scale: false, - category: "people" - }, - laughing: { - keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ], - char: "\ud83d\ude06", - fitzpatrick_scale: false, - category: "people" - }, - innocent: { - keywords: [ "face", "angel", "heaven", "halo" ], - char: "\ud83d\ude07", - fitzpatrick_scale: false, - category: "people" - }, - wink: { - keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ], - char: "\ud83d\ude09", - fitzpatrick_scale: false, - category: "people" - }, - blush: { - keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ], - char: "\ud83d\ude0a", - fitzpatrick_scale: false, - category: "people" - }, - slightly_smiling_face: { - keywords: [ "face", "smile" ], - char: "\ud83d\ude42", - fitzpatrick_scale: false, - category: "people" - }, - upside_down_face: { - keywords: [ "face", "flipped", "silly", "smile" ], - char: "\ud83d\ude43", - fitzpatrick_scale: false, - category: "people" - }, - relaxed: { - keywords: [ "face", "blush", "massage", "happiness" ], - char: "\u263a\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - yum: { - keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ], - char: "\ud83d\ude0b", - fitzpatrick_scale: false, - category: "people" - }, - relieved: { - keywords: [ "face", "relaxed", "phew", "massage", "happiness" ], - char: "\ud83d\ude0c", - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ], - char: "\ud83d\ude0d", - fitzpatrick_scale: false, - category: "people" - }, - smiling_face_with_three_hearts: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ], - char: "\ud83e\udd70", - fitzpatrick_scale: false, - category: "people" - }, - kissing_heart: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - char: "\ud83d\ude18", - fitzpatrick_scale: false, - category: "people" - }, - kissing: { - keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ], - char: "\ud83d\ude17", - fitzpatrick_scale: false, - category: "people" - }, - kissing_smiling_eyes: { - keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ], - char: "\ud83d\ude19", - fitzpatrick_scale: false, - category: "people" - }, - kissing_closed_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - char: "\ud83d\ude1a", - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_winking_eye: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ], - char: "\ud83d\ude1c", - fitzpatrick_scale: false, - category: "people" - }, - zany: { - keywords: [ "face", "goofy", "crazy" ], - char: "\ud83e\udd2a", - fitzpatrick_scale: false, - category: "people" - }, - raised_eyebrow: { - keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ], - char: "\ud83e\udd28", - fitzpatrick_scale: false, - category: "people" - }, - monocle: { - keywords: [ "face", "stuffy", "wealthy" ], - char: "\ud83e\uddd0", - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_closed_eyes: { - keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ], - char: "\ud83d\ude1d", - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ], - char: "\ud83d\ude1b", - fitzpatrick_scale: false, - category: "people" - }, - money_mouth_face: { - keywords: [ "face", "rich", "dollar", "money" ], - char: "\ud83e\udd11", - fitzpatrick_scale: false, - category: "people" - }, - nerd_face: { - keywords: [ "face", "nerdy", "geek", "dork" ], - char: "\ud83e\udd13", - fitzpatrick_scale: false, - category: "people" - }, - sunglasses: { - keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ], - char: "\ud83d\ude0e", - fitzpatrick_scale: false, - category: "people" - }, - star_struck: { - keywords: [ "face", "smile", "starry", "eyes", "grinning" ], - char: "\ud83e\udd29", - fitzpatrick_scale: false, - category: "people" - }, - clown_face: { - keywords: [ "face" ], - char: "\ud83e\udd21", - fitzpatrick_scale: false, - category: "people" - }, - cowboy_hat_face: { - keywords: [ "face", "cowgirl", "hat" ], - char: "\ud83e\udd20", - fitzpatrick_scale: false, - category: "people" - }, - hugs: { - keywords: [ "face", "smile", "hug" ], - char: "\ud83e\udd17", - fitzpatrick_scale: false, - category: "people" - }, - smirk: { - keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ], - char: "\ud83d\ude0f", - fitzpatrick_scale: false, - category: "people" - }, - no_mouth: { - keywords: [ "face", "hellokitty" ], - char: "\ud83d\ude36", - fitzpatrick_scale: false, - category: "people" - }, - neutral_face: { - keywords: [ "indifference", "meh", ":|", "neutral" ], - char: "\ud83d\ude10", - fitzpatrick_scale: false, - category: "people" - }, - expressionless: { - keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ], - char: "\ud83d\ude11", - fitzpatrick_scale: false, - category: "people" - }, - unamused: { - keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ], - char: "\ud83d\ude12", - fitzpatrick_scale: false, - category: "people" - }, - roll_eyes: { - keywords: [ "face", "eyeroll", "frustrated" ], - char: "\ud83d\ude44", - fitzpatrick_scale: false, - category: "people" - }, - thinking: { - keywords: [ "face", "hmmm", "think", "consider" ], - char: "\ud83e\udd14", - fitzpatrick_scale: false, - category: "people" - }, - lying_face: { - keywords: [ "face", "lie", "pinocchio" ], - char: "\ud83e\udd25", - fitzpatrick_scale: false, - category: "people" - }, - hand_over_mouth: { - keywords: [ "face", "whoops", "shock", "surprise" ], - char: "\ud83e\udd2d", - fitzpatrick_scale: false, - category: "people" - }, - shushing: { - keywords: [ "face", "quiet", "shhh" ], - char: "\ud83e\udd2b", - fitzpatrick_scale: false, - category: "people" - }, - symbols_over_mouth: { - keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ], - char: "\ud83e\udd2c", - fitzpatrick_scale: false, - category: "people" - }, - exploding_head: { - keywords: [ "face", "shocked", "mind", "blown" ], - char: "\ud83e\udd2f", - fitzpatrick_scale: false, - category: "people" - }, - flushed: { - keywords: [ "face", "blush", "shy", "flattered" ], - char: "\ud83d\ude33", - fitzpatrick_scale: false, - category: "people" - }, - disappointed: { - keywords: [ "face", "sad", "upset", "depressed", ":(" ], - char: "\ud83d\ude1e", - fitzpatrick_scale: false, - category: "people" - }, - worried: { - keywords: [ "face", "concern", "nervous", ":(" ], - char: "\ud83d\ude1f", - fitzpatrick_scale: false, - category: "people" - }, - angry: { - keywords: [ "mad", "face", "annoyed", "frustrated" ], - char: "\ud83d\ude20", - fitzpatrick_scale: false, - category: "people" - }, - rage: { - keywords: [ "angry", "mad", "hate", "despise" ], - char: "\ud83d\ude21", - fitzpatrick_scale: false, - category: "people" - }, - pensive: { - keywords: [ "face", "sad", "depressed", "upset" ], - char: "\ud83d\ude14", - fitzpatrick_scale: false, - category: "people" - }, - confused: { - keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ], - char: "\ud83d\ude15", - fitzpatrick_scale: false, - category: "people" - }, - slightly_frowning_face: { - keywords: [ "face", "frowning", "disappointed", "sad", "upset" ], - char: "\ud83d\ude41", - fitzpatrick_scale: false, - category: "people" - }, - frowning_face: { - keywords: [ "face", "sad", "upset", "frown" ], - char: "\u2639", - fitzpatrick_scale: false, - category: "people" - }, - persevere: { - keywords: [ "face", "sick", "no", "upset", "oops" ], - char: "\ud83d\ude23", - fitzpatrick_scale: false, - category: "people" - }, - confounded: { - keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ], - char: "\ud83d\ude16", - fitzpatrick_scale: false, - category: "people" - }, - tired_face: { - keywords: [ "sick", "whine", "upset", "frustrated" ], - char: "\ud83d\ude2b", - fitzpatrick_scale: false, - category: "people" - }, - weary: { - keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ], - char: "\ud83d\ude29", - fitzpatrick_scale: false, - category: "people" - }, - pleading: { - keywords: [ "face", "begging", "mercy" ], - char: "\ud83e\udd7a", - fitzpatrick_scale: false, - category: "people" - }, - triumph: { - keywords: [ "face", "gas", "phew", "proud", "pride" ], - char: "\ud83d\ude24", - fitzpatrick_scale: false, - category: "people" - }, - open_mouth: { - keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ], - char: "\ud83d\ude2e", - fitzpatrick_scale: false, - category: "people" - }, - scream: { - keywords: [ "face", "munch", "scared", "omg" ], - char: "\ud83d\ude31", - fitzpatrick_scale: false, - category: "people" - }, - fearful: { - keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ], - char: "\ud83d\ude28", - fitzpatrick_scale: false, - category: "people" - }, - cold_sweat: { - keywords: [ "face", "nervous", "sweat" ], - char: "\ud83d\ude30", - fitzpatrick_scale: false, - category: "people" - }, - hushed: { - keywords: [ "face", "woo", "shh" ], - char: "\ud83d\ude2f", - fitzpatrick_scale: false, - category: "people" - }, - frowning: { - keywords: [ "face", "aw", "what" ], - char: "\ud83d\ude26", - fitzpatrick_scale: false, - category: "people" - }, - anguished: { - keywords: [ "face", "stunned", "nervous" ], - char: "\ud83d\ude27", - fitzpatrick_scale: false, - category: "people" - }, - cry: { - keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ], - char: "\ud83d\ude22", - fitzpatrick_scale: false, - category: "people" - }, - disappointed_relieved: { - keywords: [ "face", "phew", "sweat", "nervous" ], - char: "\ud83d\ude25", - fitzpatrick_scale: false, - category: "people" - }, - drooling_face: { - keywords: [ "face" ], - char: "\ud83e\udd24", - fitzpatrick_scale: false, - category: "people" - }, - sleepy: { - keywords: [ "face", "tired", "rest", "nap" ], - char: "\ud83d\ude2a", - fitzpatrick_scale: false, - category: "people" - }, - sweat: { - keywords: [ "face", "hot", "sad", "tired", "exercise" ], - char: "\ud83d\ude13", - fitzpatrick_scale: false, - category: "people" - }, - hot: { - keywords: [ "face", "feverish", "heat", "red", "sweating" ], - char: "\ud83e\udd75", - fitzpatrick_scale: false, - category: "people" - }, - cold: { - keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ], - char: "\ud83e\udd76", - fitzpatrick_scale: false, - category: "people" - }, - sob: { - keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ], - char: "\ud83d\ude2d", - fitzpatrick_scale: false, - category: "people" - }, - dizzy_face: { - keywords: [ "spent", "unconscious", "xox", "dizzy" ], - char: "\ud83d\ude35", - fitzpatrick_scale: false, - category: "people" - }, - astonished: { - keywords: [ "face", "xox", "surprised", "poisoned" ], - char: "\ud83d\ude32", - fitzpatrick_scale: false, - category: "people" - }, - zipper_mouth_face: { - keywords: [ "face", "sealed", "zipper", "secret" ], - char: "\ud83e\udd10", - fitzpatrick_scale: false, - category: "people" - }, - nauseated_face: { - keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ], - char: "\ud83e\udd22", - fitzpatrick_scale: false, - category: "people" - }, - sneezing_face: { - keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ], - char: "\ud83e\udd27", - fitzpatrick_scale: false, - category: "people" - }, - vomiting: { - keywords: [ "face", "sick" ], - char: "\ud83e\udd2e", - fitzpatrick_scale: false, - category: "people" - }, - mask: { - keywords: [ "face", "sick", "ill", "disease" ], - char: "\ud83d\ude37", - fitzpatrick_scale: false, - category: "people" - }, - face_with_thermometer: { - keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ], - char: "\ud83e\udd12", - fitzpatrick_scale: false, - category: "people" - }, - face_with_head_bandage: { - keywords: [ "injured", "clumsy", "bandage", "hurt" ], - char: "\ud83e\udd15", - fitzpatrick_scale: false, - category: "people" - }, - woozy: { - keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ], - char: "\ud83e\udd74", - fitzpatrick_scale: false, - category: "people" - }, - sleeping: { - keywords: [ "face", "tired", "sleepy", "night", "zzz" ], - char: "\ud83d\ude34", - fitzpatrick_scale: false, - category: "people" - }, - zzz: { - keywords: [ "sleepy", "tired", "dream" ], - char: "\ud83d\udca4", - fitzpatrick_scale: false, - category: "people" - }, - poop: { - keywords: [ "hankey", "shitface", "fail", "turd", "shit" ], - char: "\ud83d\udca9", - fitzpatrick_scale: false, - category: "people" - }, - smiling_imp: { - keywords: [ "devil", "horns" ], - char: "\ud83d\ude08", - fitzpatrick_scale: false, - category: "people" - }, - imp: { - keywords: [ "devil", "angry", "horns" ], - char: "\ud83d\udc7f", - fitzpatrick_scale: false, - category: "people" - }, - japanese_ogre: { - keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ], - char: "\ud83d\udc79", - fitzpatrick_scale: false, - category: "people" - }, - japanese_goblin: { - keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ], - char: "\ud83d\udc7a", - fitzpatrick_scale: false, - category: "people" - }, - skull: { - keywords: [ "dead", "skeleton", "creepy", "death" ], - char: "\ud83d\udc80", - fitzpatrick_scale: false, - category: "people" - }, - ghost: { - keywords: [ "halloween", "spooky", "scary" ], - char: "\ud83d\udc7b", - fitzpatrick_scale: false, - category: "people" - }, - alien: { - keywords: [ "UFO", "paul", "weird", "outer_space" ], - char: "\ud83d\udc7d", - fitzpatrick_scale: false, - category: "people" - }, - robot: { - keywords: [ "computer", "machine", "bot" ], - char: "\ud83e\udd16", - fitzpatrick_scale: false, - category: "people" - }, - smiley_cat: { - keywords: [ "animal", "cats", "happy", "smile" ], - char: "\ud83d\ude3a", - fitzpatrick_scale: false, - category: "people" - }, - smile_cat: { - keywords: [ "animal", "cats", "smile" ], - char: "\ud83d\ude38", - fitzpatrick_scale: false, - category: "people" - }, - joy_cat: { - keywords: [ "animal", "cats", "haha", "happy", "tears" ], - char: "\ud83d\ude39", - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes_cat: { - keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ], - char: "\ud83d\ude3b", - fitzpatrick_scale: false, - category: "people" - }, - smirk_cat: { - keywords: [ "animal", "cats", "smirk" ], - char: "\ud83d\ude3c", - fitzpatrick_scale: false, - category: "people" - }, - kissing_cat: { - keywords: [ "animal", "cats", "kiss" ], - char: "\ud83d\ude3d", - fitzpatrick_scale: false, - category: "people" - }, - scream_cat: { - keywords: [ "animal", "cats", "munch", "scared", "scream" ], - char: "\ud83d\ude40", - fitzpatrick_scale: false, - category: "people" - }, - crying_cat_face: { - keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ], - char: "\ud83d\ude3f", - fitzpatrick_scale: false, - category: "people" - }, - pouting_cat: { - keywords: [ "animal", "cats" ], - char: "\ud83d\ude3e", - fitzpatrick_scale: false, - category: "people" - }, - palms_up: { - keywords: [ "hands", "gesture", "cupped", "prayer" ], - char: "\ud83e\udd32", - fitzpatrick_scale: true, - category: "people" - }, - raised_hands: { - keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ], - char: "\ud83d\ude4c", - fitzpatrick_scale: true, - category: "people" - }, - clap: { - keywords: [ "hands", "praise", "applause", "congrats", "yay" ], - char: "\ud83d\udc4f", - fitzpatrick_scale: true, - category: "people" - }, - wave: { - keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ], - char: "\ud83d\udc4b", - fitzpatrick_scale: true, - category: "people" - }, - call_me_hand: { - keywords: [ "hands", "gesture" ], - char: "\ud83e\udd19", - fitzpatrick_scale: true, - category: "people" - }, - "+1": { - keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ], - char: "\ud83d\udc4d", - fitzpatrick_scale: true, - category: "people" - }, - "-1": { - keywords: [ "thumbsdown", "no", "dislike", "hand" ], - char: "\ud83d\udc4e", - fitzpatrick_scale: true, - category: "people" - }, - facepunch: { - keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ], - char: "\ud83d\udc4a", - fitzpatrick_scale: true, - category: "people" - }, - fist: { - keywords: [ "fingers", "hand", "grasp" ], - char: "\u270a", - fitzpatrick_scale: true, - category: "people" - }, - fist_left: { - keywords: [ "hand", "fistbump" ], - char: "\ud83e\udd1b", - fitzpatrick_scale: true, - category: "people" - }, - fist_right: { - keywords: [ "hand", "fistbump" ], - char: "\ud83e\udd1c", - fitzpatrick_scale: true, - category: "people" - }, - v: { - keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ], - char: "\u270c", - fitzpatrick_scale: true, - category: "people" - }, - ok_hand: { - keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ], - char: "\ud83d\udc4c", - fitzpatrick_scale: true, - category: "people" - }, - raised_hand: { - keywords: [ "fingers", "stop", "highfive", "palm", "ban" ], - char: "\u270b", - fitzpatrick_scale: true, - category: "people" - }, - raised_back_of_hand: { - keywords: [ "fingers", "raised", "backhand" ], - char: "\ud83e\udd1a", - fitzpatrick_scale: true, - category: "people" - }, - open_hands: { - keywords: [ "fingers", "butterfly", "hands", "open" ], - char: "\ud83d\udc50", - fitzpatrick_scale: true, - category: "people" - }, - muscle: { - keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ], - char: "\ud83d\udcaa", - fitzpatrick_scale: true, - category: "people" - }, - pray: { - keywords: [ "please", "hope", "wish", "namaste", "highfive" ], - char: "\ud83d\ude4f", - fitzpatrick_scale: true, - category: "people" - }, - foot: { - keywords: [ "kick", "stomp" ], - char: "\ud83e\uddb6", - fitzpatrick_scale: true, - category: "people" - }, - leg: { - keywords: [ "kick", "limb" ], - char: "\ud83e\uddb5", - fitzpatrick_scale: true, - category: "people" - }, - handshake: { - keywords: [ "agreement", "shake" ], - char: "\ud83e\udd1d", - fitzpatrick_scale: false, - category: "people" - }, - point_up: { - keywords: [ "hand", "fingers", "direction", "up" ], - char: "\u261d", - fitzpatrick_scale: true, - category: "people" - }, - point_up_2: { - keywords: [ "fingers", "hand", "direction", "up" ], - char: "\ud83d\udc46", - fitzpatrick_scale: true, - category: "people" - }, - point_down: { - keywords: [ "fingers", "hand", "direction", "down" ], - char: "\ud83d\udc47", - fitzpatrick_scale: true, - category: "people" - }, - point_left: { - keywords: [ "direction", "fingers", "hand", "left" ], - char: "\ud83d\udc48", - fitzpatrick_scale: true, - category: "people" - }, - point_right: { - keywords: [ "fingers", "hand", "direction", "right" ], - char: "\ud83d\udc49", - fitzpatrick_scale: true, - category: "people" - }, - fu: { - keywords: [ "hand", "fingers", "rude", "middle", "flipping" ], - char: "\ud83d\udd95", - fitzpatrick_scale: true, - category: "people" - }, - raised_hand_with_fingers_splayed: { - keywords: [ "hand", "fingers", "palm" ], - char: "\ud83d\udd90", - fitzpatrick_scale: true, - category: "people" - }, - love_you: { - keywords: [ "hand", "fingers", "gesture" ], - char: "\ud83e\udd1f", - fitzpatrick_scale: true, - category: "people" - }, - metal: { - keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ], - char: "\ud83e\udd18", - fitzpatrick_scale: true, - category: "people" - }, - crossed_fingers: { - keywords: [ "good", "lucky" ], - char: "\ud83e\udd1e", - fitzpatrick_scale: true, - category: "people" - }, - vulcan_salute: { - keywords: [ "hand", "fingers", "spock", "star trek" ], - char: "\ud83d\udd96", - fitzpatrick_scale: true, - category: "people" - }, - writing_hand: { - keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ], - char: "\u270d", - fitzpatrick_scale: true, - category: "people" - }, - selfie: { - keywords: [ "camera", "phone" ], - char: "\ud83e\udd33", - fitzpatrick_scale: true, - category: "people" - }, - nail_care: { - keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ], - char: "\ud83d\udc85", - fitzpatrick_scale: true, - category: "people" - }, - lips: { - keywords: [ "mouth", "kiss" ], - char: "\ud83d\udc44", - fitzpatrick_scale: false, - category: "people" - }, - tooth: { - keywords: [ "teeth", "dentist" ], - char: "\ud83e\uddb7", - fitzpatrick_scale: false, - category: "people" - }, - tongue: { - keywords: [ "mouth", "playful" ], - char: "\ud83d\udc45", - fitzpatrick_scale: false, - category: "people" - }, - ear: { - keywords: [ "face", "hear", "sound", "listen" ], - char: "\ud83d\udc42", - fitzpatrick_scale: true, - category: "people" - }, - nose: { - keywords: [ "smell", "sniff" ], - char: "\ud83d\udc43", - fitzpatrick_scale: true, - category: "people" - }, - eye: { - keywords: [ "face", "look", "see", "watch", "stare" ], - char: "\ud83d\udc41", - fitzpatrick_scale: false, - category: "people" - }, - eyes: { - keywords: [ "look", "watch", "stalk", "peek", "see" ], - char: "\ud83d\udc40", - fitzpatrick_scale: false, - category: "people" - }, - brain: { - keywords: [ "smart", "intelligent" ], - char: "\ud83e\udde0", - fitzpatrick_scale: false, - category: "people" - }, - bust_in_silhouette: { - keywords: [ "user", "person", "human" ], - char: "\ud83d\udc64", - fitzpatrick_scale: false, - category: "people" - }, - busts_in_silhouette: { - keywords: [ "user", "person", "human", "group", "team" ], - char: "\ud83d\udc65", - fitzpatrick_scale: false, - category: "people" - }, - speaking_head: { - keywords: [ "user", "person", "human", "sing", "say", "talk" ], - char: "\ud83d\udde3", - fitzpatrick_scale: false, - category: "people" - }, - baby: { - keywords: [ "child", "boy", "girl", "toddler" ], - char: "\ud83d\udc76", - fitzpatrick_scale: true, - category: "people" - }, - child: { - keywords: [ "gender-neutral", "young" ], - char: "\ud83e\uddd2", - fitzpatrick_scale: true, - category: "people" - }, - boy: { - keywords: [ "man", "male", "guy", "teenager" ], - char: "\ud83d\udc66", - fitzpatrick_scale: true, - category: "people" - }, - girl: { - keywords: [ "female", "woman", "teenager" ], - char: "\ud83d\udc67", - fitzpatrick_scale: true, - category: "people" - }, - adult: { - keywords: [ "gender-neutral", "person" ], - char: "\ud83e\uddd1", - fitzpatrick_scale: true, - category: "people" - }, - man: { - keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ], - char: "\ud83d\udc68", - fitzpatrick_scale: true, - category: "people" - }, - woman: { - keywords: [ "female", "girls", "lady" ], - char: "\ud83d\udc69", - fitzpatrick_scale: true, - category: "people" - }, - blonde_woman: { - keywords: [ "woman", "female", "girl", "blonde", "person" ], - char: "\ud83d\udc71\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - blonde_man: { - keywords: [ "man", "male", "boy", "blonde", "guy", "person" ], - char: "\ud83d\udc71", - fitzpatrick_scale: true, - category: "people" - }, - bearded_person: { - keywords: [ "person", "bewhiskered" ], - char: "\ud83e\uddd4", - fitzpatrick_scale: true, - category: "people" - }, - older_adult: { - keywords: [ "human", "elder", "senior", "gender-neutral" ], - char: "\ud83e\uddd3", - fitzpatrick_scale: true, - category: "people" - }, - older_man: { - keywords: [ "human", "male", "men", "old", "elder", "senior" ], - char: "\ud83d\udc74", - fitzpatrick_scale: true, - category: "people" - }, - older_woman: { - keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ], - char: "\ud83d\udc75", - fitzpatrick_scale: true, - category: "people" - }, - man_with_gua_pi_mao: { - keywords: [ "male", "boy", "chinese" ], - char: "\ud83d\udc72", - fitzpatrick_scale: true, - category: "people" - }, - woman_with_headscarf: { - keywords: [ "female", "hijab", "mantilla", "tichel" ], - char: "\ud83e\uddd5", - fitzpatrick_scale: true, - category: "people" - }, - woman_with_turban: { - keywords: [ "female", "indian", "hinduism", "arabs", "woman" ], - char: "\ud83d\udc73\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_with_turban: { - keywords: [ "male", "indian", "hinduism", "arabs" ], - char: "\ud83d\udc73", - fitzpatrick_scale: true, - category: "people" - }, - policewoman: { - keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ], - char: "\ud83d\udc6e\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - policeman: { - keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ], - char: "\ud83d\udc6e", - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_woman: { - keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ], - char: "\ud83d\udc77\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_man: { - keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ], - char: "\ud83d\udc77", - fitzpatrick_scale: true, - category: "people" - }, - guardswoman: { - keywords: [ "uk", "gb", "british", "female", "royal", "woman" ], - char: "\ud83d\udc82\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - guardsman: { - keywords: [ "uk", "gb", "british", "male", "guy", "royal" ], - char: "\ud83d\udc82", - fitzpatrick_scale: true, - category: "people" - }, - female_detective: { - keywords: [ "human", "spy", "detective", "female", "woman" ], - char: "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - male_detective: { - keywords: [ "human", "spy", "detective" ], - char: "\ud83d\udd75", - fitzpatrick_scale: true, - category: "people" - }, - woman_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ], - char: "\ud83d\udc69\u200d\u2695\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ], - char: "\ud83d\udc68\u200d\u2695\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_farmer: { - keywords: [ "rancher", "gardener", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83c\udf3e", - fitzpatrick_scale: true, - category: "people" - }, - man_farmer: { - keywords: [ "rancher", "gardener", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83c\udf3e", - fitzpatrick_scale: true, - category: "people" - }, - woman_cook: { - keywords: [ "chef", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83c\udf73", - fitzpatrick_scale: true, - category: "people" - }, - man_cook: { - keywords: [ "chef", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83c\udf73", - fitzpatrick_scale: true, - category: "people" - }, - woman_student: { - keywords: [ "graduate", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83c\udf93", - fitzpatrick_scale: true, - category: "people" - }, - man_student: { - keywords: [ "graduate", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83c\udf93", - fitzpatrick_scale: true, - category: "people" - }, - woman_singer: { - keywords: [ "rockstar", "entertainer", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83c\udfa4", - fitzpatrick_scale: true, - category: "people" - }, - man_singer: { - keywords: [ "rockstar", "entertainer", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83c\udfa4", - fitzpatrick_scale: true, - category: "people" - }, - woman_teacher: { - keywords: [ "instructor", "professor", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83c\udfeb", - fitzpatrick_scale: true, - category: "people" - }, - man_teacher: { - keywords: [ "instructor", "professor", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83c\udfeb", - fitzpatrick_scale: true, - category: "people" - }, - woman_factory_worker: { - keywords: [ "assembly", "industrial", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83c\udfed", - fitzpatrick_scale: true, - category: "people" - }, - man_factory_worker: { - keywords: [ "assembly", "industrial", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83c\udfed", - fitzpatrick_scale: true, - category: "people" - }, - woman_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ], - char: "\ud83d\udc69\u200d\ud83d\udcbb", - fitzpatrick_scale: true, - category: "people" - }, - man_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ], - char: "\ud83d\udc68\u200d\ud83d\udcbb", - fitzpatrick_scale: true, - category: "people" - }, - woman_office_worker: { - keywords: [ "business", "manager", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83d\udcbc", - fitzpatrick_scale: true, - category: "people" - }, - man_office_worker: { - keywords: [ "business", "manager", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83d\udcbc", - fitzpatrick_scale: true, - category: "people" - }, - woman_mechanic: { - keywords: [ "plumber", "woman", "human", "wrench" ], - char: "\ud83d\udc69\u200d\ud83d\udd27", - fitzpatrick_scale: true, - category: "people" - }, - man_mechanic: { - keywords: [ "plumber", "man", "human", "wrench" ], - char: "\ud83d\udc68\u200d\ud83d\udd27", - fitzpatrick_scale: true, - category: "people" - }, - woman_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83d\udd2c", - fitzpatrick_scale: true, - category: "people" - }, - man_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83d\udd2c", - fitzpatrick_scale: true, - category: "people" - }, - woman_artist: { - keywords: [ "painter", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83c\udfa8", - fitzpatrick_scale: true, - category: "people" - }, - man_artist: { - keywords: [ "painter", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83c\udfa8", - fitzpatrick_scale: true, - category: "people" - }, - woman_firefighter: { - keywords: [ "fireman", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83d\ude92", - fitzpatrick_scale: true, - category: "people" - }, - man_firefighter: { - keywords: [ "fireman", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83d\ude92", - fitzpatrick_scale: true, - category: "people" - }, - woman_pilot: { - keywords: [ "aviator", "plane", "woman", "human" ], - char: "\ud83d\udc69\u200d\u2708\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_pilot: { - keywords: [ "aviator", "plane", "man", "human" ], - char: "\ud83d\udc68\u200d\u2708\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_astronaut: { - keywords: [ "space", "rocket", "woman", "human" ], - char: "\ud83d\udc69\u200d\ud83d\ude80", - fitzpatrick_scale: true, - category: "people" - }, - man_astronaut: { - keywords: [ "space", "rocket", "man", "human" ], - char: "\ud83d\udc68\u200d\ud83d\ude80", - fitzpatrick_scale: true, - category: "people" - }, - woman_judge: { - keywords: [ "justice", "court", "woman", "human" ], - char: "\ud83d\udc69\u200d\u2696\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_judge: { - keywords: [ "justice", "court", "man", "human" ], - char: "\ud83d\udc68\u200d\u2696\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_superhero: { - keywords: [ "woman", "female", "good", "heroine", "superpowers" ], - char: "\ud83e\uddb8\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_superhero: { - keywords: [ "man", "male", "good", "hero", "superpowers" ], - char: "\ud83e\uddb8\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_supervillain: { - keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ], - char: "\ud83e\uddb9\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_supervillain: { - keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ], - char: "\ud83e\uddb9\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - mrs_claus: { - keywords: [ "woman", "female", "xmas", "mother christmas" ], - char: "\ud83e\udd36", - fitzpatrick_scale: true, - category: "people" - }, - santa: { - keywords: [ "festival", "man", "male", "xmas", "father christmas" ], - char: "\ud83c\udf85", - fitzpatrick_scale: true, - category: "people" - }, - sorceress: { - keywords: [ "woman", "female", "mage", "witch" ], - char: "\ud83e\uddd9\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - wizard: { - keywords: [ "man", "male", "mage", "sorcerer" ], - char: "\ud83e\uddd9\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_elf: { - keywords: [ "woman", "female" ], - char: "\ud83e\udddd\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_elf: { - keywords: [ "man", "male" ], - char: "\ud83e\udddd\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_vampire: { - keywords: [ "woman", "female" ], - char: "\ud83e\udddb\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_vampire: { - keywords: [ "man", "male", "dracula" ], - char: "\ud83e\udddb\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_zombie: { - keywords: [ "woman", "female", "undead", "walking dead" ], - char: "\ud83e\udddf\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - man_zombie: { - keywords: [ "man", "male", "dracula", "undead", "walking dead" ], - char: "\ud83e\udddf\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - woman_genie: { - keywords: [ "woman", "female" ], - char: "\ud83e\uddde\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - man_genie: { - keywords: [ "man", "male" ], - char: "\ud83e\uddde\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - mermaid: { - keywords: [ "woman", "female", "merwoman", "ariel" ], - char: "\ud83e\udddc\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - merman: { - keywords: [ "man", "male", "triton" ], - char: "\ud83e\udddc\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_fairy: { - keywords: [ "woman", "female" ], - char: "\ud83e\uddda\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_fairy: { - keywords: [ "man", "male" ], - char: "\ud83e\uddda\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - angel: { - keywords: [ "heaven", "wings", "halo" ], - char: "\ud83d\udc7c", - fitzpatrick_scale: true, - category: "people" - }, - pregnant_woman: { - keywords: [ "baby" ], - char: "\ud83e\udd30", - fitzpatrick_scale: true, - category: "people" - }, - breastfeeding: { - keywords: [ "nursing", "baby" ], - char: "\ud83e\udd31", - fitzpatrick_scale: true, - category: "people" - }, - princess: { - keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ], - char: "\ud83d\udc78", - fitzpatrick_scale: true, - category: "people" - }, - prince: { - keywords: [ "boy", "man", "male", "crown", "royal", "king" ], - char: "\ud83e\udd34", - fitzpatrick_scale: true, - category: "people" - }, - bride_with_veil: { - keywords: [ "couple", "marriage", "wedding", "woman", "bride" ], - char: "\ud83d\udc70", - fitzpatrick_scale: true, - category: "people" - }, - man_in_tuxedo: { - keywords: [ "couple", "marriage", "wedding", "groom" ], - char: "\ud83e\udd35", - fitzpatrick_scale: true, - category: "people" - }, - running_woman: { - keywords: [ "woman", "walking", "exercise", "race", "running", "female" ], - char: "\ud83c\udfc3\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - running_man: { - keywords: [ "man", "walking", "exercise", "race", "running" ], - char: "\ud83c\udfc3", - fitzpatrick_scale: true, - category: "people" - }, - walking_woman: { - keywords: [ "human", "feet", "steps", "woman", "female" ], - char: "\ud83d\udeb6\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - walking_man: { - keywords: [ "human", "feet", "steps" ], - char: "\ud83d\udeb6", - fitzpatrick_scale: true, - category: "people" - }, - dancer: { - keywords: [ "female", "girl", "woman", "fun" ], - char: "\ud83d\udc83", - fitzpatrick_scale: true, - category: "people" - }, - man_dancing: { - keywords: [ "male", "boy", "fun", "dancer" ], - char: "\ud83d\udd7a", - fitzpatrick_scale: true, - category: "people" - }, - dancing_women: { - keywords: [ "female", "bunny", "women", "girls" ], - char: "\ud83d\udc6f", - fitzpatrick_scale: false, - category: "people" - }, - dancing_men: { - keywords: [ "male", "bunny", "men", "boys" ], - char: "\ud83d\udc6f\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - couple: { - keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ], - char: "\ud83d\udc6b", - fitzpatrick_scale: false, - category: "people" - }, - two_men_holding_hands: { - keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ], - char: "\ud83d\udc6c", - fitzpatrick_scale: false, - category: "people" - }, - two_women_holding_hands: { - keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ], - char: "\ud83d\udc6d", - fitzpatrick_scale: false, - category: "people" - }, - bowing_woman: { - keywords: [ "woman", "female", "girl" ], - char: "\ud83d\ude47\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - bowing_man: { - keywords: [ "man", "male", "boy" ], - char: "\ud83d\ude47", - fitzpatrick_scale: true, - category: "people" - }, - man_facepalming: { - keywords: [ "man", "male", "boy", "disbelief" ], - char: "\ud83e\udd26\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_facepalming: { - keywords: [ "woman", "female", "girl", "disbelief" ], - char: "\ud83e\udd26\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_shrugging: { - keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ], - char: "\ud83e\udd37", - fitzpatrick_scale: true, - category: "people" - }, - man_shrugging: { - keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ], - char: "\ud83e\udd37\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_woman: { - keywords: [ "female", "girl", "woman", "human", "information" ], - char: "\ud83d\udc81", - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_man: { - keywords: [ "male", "boy", "man", "human", "information" ], - char: "\ud83d\udc81\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - no_good_woman: { - keywords: [ "female", "girl", "woman", "nope" ], - char: "\ud83d\ude45", - fitzpatrick_scale: true, - category: "people" - }, - no_good_man: { - keywords: [ "male", "boy", "man", "nope" ], - char: "\ud83d\ude45\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - ok_woman: { - keywords: [ "women", "girl", "female", "pink", "human", "woman" ], - char: "\ud83d\ude46", - fitzpatrick_scale: true, - category: "people" - }, - ok_man: { - keywords: [ "men", "boy", "male", "blue", "human", "man" ], - char: "\ud83d\ude46\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_woman: { - keywords: [ "female", "girl", "woman" ], - char: "\ud83d\ude4b", - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_man: { - keywords: [ "male", "boy", "man" ], - char: "\ud83d\ude4b\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - pouting_woman: { - keywords: [ "female", "girl", "woman" ], - char: "\ud83d\ude4e", - fitzpatrick_scale: true, - category: "people" - }, - pouting_man: { - keywords: [ "male", "boy", "man" ], - char: "\ud83d\ude4e\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - frowning_woman: { - keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ], - char: "\ud83d\ude4d", - fitzpatrick_scale: true, - category: "people" - }, - frowning_man: { - keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ], - char: "\ud83d\ude4d\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - haircut_woman: { - keywords: [ "female", "girl", "woman" ], - char: "\ud83d\udc87", - fitzpatrick_scale: true, - category: "people" - }, - haircut_man: { - keywords: [ "male", "boy", "man" ], - char: "\ud83d\udc87\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - massage_woman: { - keywords: [ "female", "girl", "woman", "head" ], - char: "\ud83d\udc86", - fitzpatrick_scale: true, - category: "people" - }, - massage_man: { - keywords: [ "male", "boy", "man", "head" ], - char: "\ud83d\udc86\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_in_steamy_room: { - keywords: [ "female", "woman", "spa", "steamroom", "sauna" ], - char: "\ud83e\uddd6\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_in_steamy_room: { - keywords: [ "male", "man", "spa", "steamroom", "sauna" ], - char: "\ud83e\uddd6\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - couple_with_heart_woman_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - char: "\ud83d\udc91", - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_woman_woman: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - char: "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69", - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_man_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - char: "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68", - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - char: "\ud83d\udc8f", - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_woman_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - char: "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69", - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_man: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - char: "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy: { - keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ], - char: "\ud83d\udc6a", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl: { - keywords: [ "home", "parents", "people", "human", "child" ], - char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: "\ud83d\udc69\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: "\ud83d\udc69\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: "\ud83d\udc68\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - char: "\ud83d\udc68\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - char: "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - yarn: { - keywords: [ "ball", "crochet", "knit" ], - char: "\ud83e\uddf6", - fitzpatrick_scale: false, - category: "people" - }, - thread: { - keywords: [ "needle", "sewing", "spool", "string" ], - char: "\ud83e\uddf5", - fitzpatrick_scale: false, - category: "people" - }, - coat: { - keywords: [ "jacket" ], - char: "\ud83e\udde5", - fitzpatrick_scale: false, - category: "people" - }, - labcoat: { - keywords: [ "doctor", "experiment", "scientist", "chemist" ], - char: "\ud83e\udd7c", - fitzpatrick_scale: false, - category: "people" - }, - womans_clothes: { - keywords: [ "fashion", "shopping_bags", "female" ], - char: "\ud83d\udc5a", - fitzpatrick_scale: false, - category: "people" - }, - tshirt: { - keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ], - char: "\ud83d\udc55", - fitzpatrick_scale: false, - category: "people" - }, - jeans: { - keywords: [ "fashion", "shopping" ], - char: "\ud83d\udc56", - fitzpatrick_scale: false, - category: "people" - }, - necktie: { - keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ], - char: "\ud83d\udc54", - fitzpatrick_scale: false, - category: "people" - }, - dress: { - keywords: [ "clothes", "fashion", "shopping" ], - char: "\ud83d\udc57", - fitzpatrick_scale: false, - category: "people" - }, - bikini: { - keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ], - char: "\ud83d\udc59", - fitzpatrick_scale: false, - category: "people" - }, - kimono: { - keywords: [ "dress", "fashion", "women", "female", "japanese" ], - char: "\ud83d\udc58", - fitzpatrick_scale: false, - category: "people" - }, - lipstick: { - keywords: [ "female", "girl", "fashion", "woman" ], - char: "\ud83d\udc84", - fitzpatrick_scale: false, - category: "people" - }, - kiss: { - keywords: [ "face", "lips", "love", "like", "affection", "valentines" ], - char: "\ud83d\udc8b", - fitzpatrick_scale: false, - category: "people" - }, - footprints: { - keywords: [ "feet", "tracking", "walking", "beach" ], - char: "\ud83d\udc63", - fitzpatrick_scale: false, - category: "people" - }, - flat_shoe: { - keywords: [ "ballet", "slip-on", "slipper" ], - char: "\ud83e\udd7f", - fitzpatrick_scale: false, - category: "people" - }, - high_heel: { - keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ], - char: "\ud83d\udc60", - fitzpatrick_scale: false, - category: "people" - }, - sandal: { - keywords: [ "shoes", "fashion", "flip flops" ], - char: "\ud83d\udc61", - fitzpatrick_scale: false, - category: "people" - }, - boot: { - keywords: [ "shoes", "fashion" ], - char: "\ud83d\udc62", - fitzpatrick_scale: false, - category: "people" - }, - mans_shoe: { - keywords: [ "fashion", "male" ], - char: "\ud83d\udc5e", - fitzpatrick_scale: false, - category: "people" - }, - athletic_shoe: { - keywords: [ "shoes", "sports", "sneakers" ], - char: "\ud83d\udc5f", - fitzpatrick_scale: false, - category: "people" - }, - hiking_boot: { - keywords: [ "backpacking", "camping", "hiking" ], - char: "\ud83e\udd7e", - fitzpatrick_scale: false, - category: "people" - }, - socks: { - keywords: [ "stockings", "clothes" ], - char: "\ud83e\udde6", - fitzpatrick_scale: false, - category: "people" - }, - gloves: { - keywords: [ "hands", "winter", "clothes" ], - char: "\ud83e\udde4", - fitzpatrick_scale: false, - category: "people" - }, - scarf: { - keywords: [ "neck", "winter", "clothes" ], - char: "\ud83e\udde3", - fitzpatrick_scale: false, - category: "people" - }, - womans_hat: { - keywords: [ "fashion", "accessories", "female", "lady", "spring" ], - char: "\ud83d\udc52", - fitzpatrick_scale: false, - category: "people" - }, - tophat: { - keywords: [ "magic", "gentleman", "classy", "circus" ], - char: "\ud83c\udfa9", - fitzpatrick_scale: false, - category: "people" - }, - billed_hat: { - keywords: [ "cap", "baseball" ], - char: "\ud83e\udde2", - fitzpatrick_scale: false, - category: "people" - }, - rescue_worker_helmet: { - keywords: [ "construction", "build" ], - char: "\u26d1", - fitzpatrick_scale: false, - category: "people" - }, - mortar_board: { - keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ], - char: "\ud83c\udf93", - fitzpatrick_scale: false, - category: "people" - }, - crown: { - keywords: [ "king", "kod", "leader", "royalty", "lord" ], - char: "\ud83d\udc51", - fitzpatrick_scale: false, - category: "people" - }, - school_satchel: { - keywords: [ "student", "education", "bag", "backpack" ], - char: "\ud83c\udf92", - fitzpatrick_scale: false, - category: "people" - }, - luggage: { - keywords: [ "packing", "travel" ], - char: "\ud83e\uddf3", - fitzpatrick_scale: false, - category: "people" - }, - pouch: { - keywords: [ "bag", "accessories", "shopping" ], - char: "\ud83d\udc5d", - fitzpatrick_scale: false, - category: "people" - }, - purse: { - keywords: [ "fashion", "accessories", "money", "sales", "shopping" ], - char: "\ud83d\udc5b", - fitzpatrick_scale: false, - category: "people" - }, - handbag: { - keywords: [ "fashion", "accessory", "accessories", "shopping" ], - char: "\ud83d\udc5c", - fitzpatrick_scale: false, - category: "people" - }, - briefcase: { - keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ], - char: "\ud83d\udcbc", - fitzpatrick_scale: false, - category: "people" - }, - eyeglasses: { - keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ], - char: "\ud83d\udc53", - fitzpatrick_scale: false, - category: "people" - }, - dark_sunglasses: { - keywords: [ "face", "cool", "accessories" ], - char: "\ud83d\udd76", - fitzpatrick_scale: false, - category: "people" - }, - goggles: { - keywords: [ "eyes", "protection", "safety" ], - char: "\ud83e\udd7d", - fitzpatrick_scale: false, - category: "people" - }, - ring: { - keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ], - char: "\ud83d\udc8d", - fitzpatrick_scale: false, - category: "people" - }, - closed_umbrella: { - keywords: [ "weather", "rain", "drizzle" ], - char: "\ud83c\udf02", - fitzpatrick_scale: false, - category: "people" - }, - dog: { - keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ], - char: "\ud83d\udc36", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat: { - keywords: [ "animal", "meow", "nature", "pet", "kitten" ], - char: "\ud83d\udc31", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse: { - keywords: [ "animal", "nature", "cheese_wedge", "rodent" ], - char: "\ud83d\udc2d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hamster: { - keywords: [ "animal", "nature" ], - char: "\ud83d\udc39", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit: { - keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ], - char: "\ud83d\udc30", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fox_face: { - keywords: [ "animal", "nature", "face" ], - char: "\ud83e\udd8a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bear: { - keywords: [ "animal", "nature", "wild" ], - char: "\ud83d\udc3b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - panda_face: { - keywords: [ "animal", "nature", "panda" ], - char: "\ud83d\udc3c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - koala: { - keywords: [ "animal", "nature" ], - char: "\ud83d\udc28", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger: { - keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ], - char: "\ud83d\udc2f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lion: { - keywords: [ "animal", "nature" ], - char: "\ud83e\udd81", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - char: "\ud83d\udc2e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig: { - keywords: [ "animal", "oink", "nature" ], - char: "\ud83d\udc37", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig_nose: { - keywords: [ "animal", "oink" ], - char: "\ud83d\udc3d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - frog: { - keywords: [ "animal", "nature", "croak", "toad" ], - char: "\ud83d\udc38", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - squid: { - keywords: [ "animal", "nature", "ocean", "sea" ], - char: "\ud83e\udd91", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - octopus: { - keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ], - char: "\ud83d\udc19", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shrimp: { - keywords: [ "animal", "ocean", "nature", "seafood" ], - char: "\ud83e\udd90", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey_face: { - keywords: [ "animal", "nature", "circus" ], - char: "\ud83d\udc35", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - gorilla: { - keywords: [ "animal", "nature", "circus" ], - char: "\ud83e\udd8d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - see_no_evil: { - keywords: [ "monkey", "animal", "nature", "haha" ], - char: "\ud83d\ude48", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hear_no_evil: { - keywords: [ "animal", "monkey", "nature" ], - char: "\ud83d\ude49", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - speak_no_evil: { - keywords: [ "monkey", "animal", "nature", "omg" ], - char: "\ud83d\ude4a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey: { - keywords: [ "animal", "nature", "banana", "circus" ], - char: "\ud83d\udc12", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chicken: { - keywords: [ "animal", "cluck", "nature", "bird" ], - char: "\ud83d\udc14", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - penguin: { - keywords: [ "animal", "nature" ], - char: "\ud83d\udc27", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bird: { - keywords: [ "animal", "nature", "fly", "tweet", "spring" ], - char: "\ud83d\udc26", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - baby_chick: { - keywords: [ "animal", "chicken", "bird" ], - char: "\ud83d\udc24", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatching_chick: { - keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ], - char: "\ud83d\udc23", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatched_chick: { - keywords: [ "animal", "chicken", "baby", "bird" ], - char: "\ud83d\udc25", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - duck: { - keywords: [ "animal", "nature", "bird", "mallard" ], - char: "\ud83e\udd86", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - eagle: { - keywords: [ "animal", "nature", "bird" ], - char: "\ud83e\udd85", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - owl: { - keywords: [ "animal", "nature", "bird", "hoot" ], - char: "\ud83e\udd89", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bat: { - keywords: [ "animal", "nature", "blind", "vampire" ], - char: "\ud83e\udd87", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wolf: { - keywords: [ "animal", "nature", "wild" ], - char: "\ud83d\udc3a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boar: { - keywords: [ "animal", "nature" ], - char: "\ud83d\udc17", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - horse: { - keywords: [ "animal", "brown", "nature" ], - char: "\ud83d\udc34", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - unicorn: { - keywords: [ "animal", "nature", "mystical" ], - char: "\ud83e\udd84", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - honeybee: { - keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ], - char: "\ud83d\udc1d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bug: { - keywords: [ "animal", "insect", "nature", "worm" ], - char: "\ud83d\udc1b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - butterfly: { - keywords: [ "animal", "insect", "nature", "caterpillar" ], - char: "\ud83e\udd8b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snail: { - keywords: [ "slow", "animal", "shell" ], - char: "\ud83d\udc0c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - beetle: { - keywords: [ "animal", "insect", "nature", "ladybug" ], - char: "\ud83d\udc1e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ant: { - keywords: [ "animal", "insect", "nature", "bug" ], - char: "\ud83d\udc1c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - grasshopper: { - keywords: [ "animal", "cricket", "chirp" ], - char: "\ud83e\udd97", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider: { - keywords: [ "animal", "arachnid" ], - char: "\ud83d\udd77", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - scorpion: { - keywords: [ "animal", "arachnid" ], - char: "\ud83e\udd82", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crab: { - keywords: [ "animal", "crustacean" ], - char: "\ud83e\udd80", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snake: { - keywords: [ "animal", "evil", "nature", "hiss", "python" ], - char: "\ud83d\udc0d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lizard: { - keywords: [ "animal", "nature", "reptile" ], - char: "\ud83e\udd8e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - "t-rex": { - keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ], - char: "\ud83e\udd96", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sauropod: { - keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ], - char: "\ud83e\udd95", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turtle: { - keywords: [ "animal", "slow", "nature", "tortoise" ], - char: "\ud83d\udc22", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tropical_fish: { - keywords: [ "animal", "swim", "ocean", "beach", "nemo" ], - char: "\ud83d\udc20", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fish: { - keywords: [ "animal", "food", "nature" ], - char: "\ud83d\udc1f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blowfish: { - keywords: [ "animal", "nature", "food", "sea", "ocean" ], - char: "\ud83d\udc21", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dolphin: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ], - char: "\ud83d\udc2c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shark: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ], - char: "\ud83e\udd88", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale: { - keywords: [ "animal", "nature", "sea", "ocean" ], - char: "\ud83d\udc33", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale2: { - keywords: [ "animal", "nature", "sea", "ocean" ], - char: "\ud83d\udc0b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crocodile: { - keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ], - char: "\ud83d\udc0a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leopard: { - keywords: [ "animal", "nature" ], - char: "\ud83d\udc06", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zebra: { - keywords: [ "animal", "nature", "stripes", "safari" ], - char: "\ud83e\udd93", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger2: { - keywords: [ "animal", "nature", "roar" ], - char: "\ud83d\udc05", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - water_buffalo: { - keywords: [ "animal", "nature", "ox", "cow" ], - char: "\ud83d\udc03", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ox: { - keywords: [ "animal", "cow", "beef" ], - char: "\ud83d\udc02", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow2: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - char: "\ud83d\udc04", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deer: { - keywords: [ "animal", "nature", "horns", "venison" ], - char: "\ud83e\udd8c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dromedary_camel: { - keywords: [ "animal", "hot", "desert", "hump" ], - char: "\ud83d\udc2a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - camel: { - keywords: [ "animal", "nature", "hot", "desert", "hump" ], - char: "\ud83d\udc2b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - giraffe: { - keywords: [ "animal", "nature", "spots", "safari" ], - char: "\ud83e\udd92", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - elephant: { - keywords: [ "animal", "nature", "nose", "th", "circus" ], - char: "\ud83d\udc18", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rhinoceros: { - keywords: [ "animal", "nature", "horn" ], - char: "\ud83e\udd8f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - goat: { - keywords: [ "animal", "nature" ], - char: "\ud83d\udc10", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ram: { - keywords: [ "animal", "sheep", "nature" ], - char: "\ud83d\udc0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sheep: { - keywords: [ "animal", "nature", "wool", "shipit" ], - char: "\ud83d\udc11", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - racehorse: { - keywords: [ "animal", "gamble", "luck" ], - char: "\ud83d\udc0e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig2: { - keywords: [ "animal", "nature" ], - char: "\ud83d\udc16", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rat: { - keywords: [ "animal", "mouse", "rodent" ], - char: "\ud83d\udc00", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse2: { - keywords: [ "animal", "nature", "rodent" ], - char: "\ud83d\udc01", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rooster: { - keywords: [ "animal", "nature", "chicken" ], - char: "\ud83d\udc13", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turkey: { - keywords: [ "animal", "bird" ], - char: "\ud83e\udd83", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dove: { - keywords: [ "animal", "bird" ], - char: "\ud83d\udd4a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dog2: { - keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ], - char: "\ud83d\udc15", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - poodle: { - keywords: [ "dog", "animal", "101", "nature", "pet" ], - char: "\ud83d\udc29", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat2: { - keywords: [ "animal", "meow", "pet", "cats" ], - char: "\ud83d\udc08", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit2: { - keywords: [ "animal", "nature", "pet", "magic", "spring" ], - char: "\ud83d\udc07", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chipmunk: { - keywords: [ "animal", "nature", "rodent", "squirrel" ], - char: "\ud83d\udc3f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hedgehog: { - keywords: [ "animal", "nature", "spiny" ], - char: "\ud83e\udd94", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - raccoon: { - keywords: [ "animal", "nature" ], - char: "\ud83e\udd9d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - llama: { - keywords: [ "animal", "nature", "alpaca" ], - char: "\ud83e\udd99", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hippopotamus: { - keywords: [ "animal", "nature" ], - char: "\ud83e\udd9b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - kangaroo: { - keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ], - char: "\ud83e\udd98", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - badger: { - keywords: [ "animal", "nature", "honey" ], - char: "\ud83e\udda1", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - swan: { - keywords: [ "animal", "nature", "bird" ], - char: "\ud83e\udda2", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - peacock: { - keywords: [ "animal", "nature", "peahen", "bird" ], - char: "\ud83e\udd9a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - parrot: { - keywords: [ "animal", "nature", "bird", "pirate", "talk" ], - char: "\ud83e\udd9c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lobster: { - keywords: [ "animal", "nature", "bisque", "claws", "seafood" ], - char: "\ud83e\udd9e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mosquito: { - keywords: [ "animal", "nature", "insect", "malaria" ], - char: "\ud83e\udd9f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - paw_prints: { - keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ], - char: "\ud83d\udc3e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - char: "\ud83d\udc09", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon_face: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - char: "\ud83d\udc32", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cactus: { - keywords: [ "vegetable", "plant", "nature" ], - char: "\ud83c\udf35", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - christmas_tree: { - keywords: [ "festival", "vacation", "december", "xmas", "celebration" ], - char: "\ud83c\udf84", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - evergreen_tree: { - keywords: [ "plant", "nature" ], - char: "\ud83c\udf32", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deciduous_tree: { - keywords: [ "plant", "nature" ], - char: "\ud83c\udf33", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - palm_tree: { - keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ], - char: "\ud83c\udf34", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - seedling: { - keywords: [ "plant", "nature", "grass", "lawn", "spring" ], - char: "\ud83c\udf31", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - herb: { - keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ], - char: "\ud83c\udf3f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shamrock: { - keywords: [ "vegetable", "plant", "nature", "irish", "clover" ], - char: "\u2618", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - four_leaf_clover: { - keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ], - char: "\ud83c\udf40", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bamboo: { - keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ], - char: "\ud83c\udf8d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tanabata_tree: { - keywords: [ "plant", "nature", "branch", "summer" ], - char: "\ud83c\udf8b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leaves: { - keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ], - char: "\ud83c\udf43", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fallen_leaf: { - keywords: [ "nature", "plant", "vegetable", "leaves" ], - char: "\ud83c\udf42", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - maple_leaf: { - keywords: [ "nature", "plant", "vegetable", "ca", "fall" ], - char: "\ud83c\udf41", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ear_of_rice: { - keywords: [ "nature", "plant" ], - char: "\ud83c\udf3e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hibiscus: { - keywords: [ "plant", "vegetable", "flowers", "beach" ], - char: "\ud83c\udf3a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunflower: { - keywords: [ "nature", "plant", "fall" ], - char: "\ud83c\udf3b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rose: { - keywords: [ "flowers", "valentines", "love", "spring" ], - char: "\ud83c\udf39", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wilted_flower: { - keywords: [ "plant", "nature", "flower" ], - char: "\ud83e\udd40", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tulip: { - keywords: [ "flowers", "plant", "nature", "summer", "spring" ], - char: "\ud83c\udf37", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blossom: { - keywords: [ "nature", "flowers", "yellow" ], - char: "\ud83c\udf3c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cherry_blossom: { - keywords: [ "nature", "plant", "spring", "flower" ], - char: "\ud83c\udf38", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bouquet: { - keywords: [ "flowers", "nature", "spring" ], - char: "\ud83d\udc90", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mushroom: { - keywords: [ "plant", "vegetable" ], - char: "\ud83c\udf44", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chestnut: { - keywords: [ "food", "squirrel" ], - char: "\ud83c\udf30", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - jack_o_lantern: { - keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ], - char: "\ud83c\udf83", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shell: { - keywords: [ "nature", "sea", "beach" ], - char: "\ud83d\udc1a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider_web: { - keywords: [ "animal", "insect", "arachnid", "silk" ], - char: "\ud83d\udd78", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_americas: { - keywords: [ "globe", "world", "USA", "international" ], - char: "\ud83c\udf0e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_africa: { - keywords: [ "globe", "world", "international" ], - char: "\ud83c\udf0d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_asia: { - keywords: [ "globe", "world", "east", "international" ], - char: "\ud83c\udf0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon: { - keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf15", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_gibbous_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ], - char: "\ud83c\udf16", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf17", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf18", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf11", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf12", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf13", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_gibbous_moon: { - keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ], - char: "\ud83c\udf14", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf1a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf1d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf1b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - char: "\ud83c\udf1c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_with_face: { - keywords: [ "nature", "morning", "sky" ], - char: "\ud83c\udf1e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crescent_moon: { - keywords: [ "night", "sleep", "sky", "evening", "magic" ], - char: "\ud83c\udf19", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star: { - keywords: [ "night", "yellow" ], - char: "\u2b50", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star2: { - keywords: [ "night", "sparkle", "awesome", "good", "magic" ], - char: "\ud83c\udf1f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dizzy: { - keywords: [ "star", "sparkle", "shoot", "magic" ], - char: "\ud83d\udcab", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sparkles: { - keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ], - char: "\u2728", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - comet: { - keywords: [ "space" ], - char: "\u2604", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunny: { - keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ], - char: "\u2600\ufe0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_small_cloud: { - keywords: [ "weather" ], - char: "\ud83c\udf24", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - partly_sunny: { - keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ], - char: "\u26c5", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_large_cloud: { - keywords: [ "weather" ], - char: "\ud83c\udf25", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_rain_cloud: { - keywords: [ "weather" ], - char: "\ud83c\udf26", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud: { - keywords: [ "weather", "sky" ], - char: "\u2601\ufe0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_rain: { - keywords: [ "weather" ], - char: "\ud83c\udf27", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning_and_rain: { - keywords: [ "weather", "lightning" ], - char: "\u26c8", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning: { - keywords: [ "weather", "thunder" ], - char: "\ud83c\udf29", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zap: { - keywords: [ "thunder", "weather", "lightning bolt", "fast" ], - char: "\u26a1", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fire: { - keywords: [ "hot", "cook", "flame" ], - char: "\ud83d\udd25", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boom: { - keywords: [ "bomb", "explode", "explosion", "collision", "blown" ], - char: "\ud83d\udca5", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowflake: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ], - char: "\u2744\ufe0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_snow: { - keywords: [ "weather" ], - char: "\ud83c\udf28", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ], - char: "\u26c4", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman_with_snow: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ], - char: "\u2603", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wind_face: { - keywords: [ "gust", "air" ], - char: "\ud83c\udf2c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dash: { - keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ], - char: "\ud83d\udca8", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tornado: { - keywords: [ "weather", "cyclone", "twister" ], - char: "\ud83c\udf2a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fog: { - keywords: [ "weather" ], - char: "\ud83c\udf2b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - open_umbrella: { - keywords: [ "weather", "spring" ], - char: "\u2602", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - umbrella: { - keywords: [ "rainy", "weather", "spring" ], - char: "\u2614", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - droplet: { - keywords: [ "water", "drip", "faucet", "spring" ], - char: "\ud83d\udca7", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sweat_drops: { - keywords: [ "water", "drip", "oops" ], - char: "\ud83d\udca6", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ocean: { - keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ], - char: "\ud83c\udf0a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - green_apple: { - keywords: [ "fruit", "nature" ], - char: "\ud83c\udf4f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - apple: { - keywords: [ "fruit", "mac", "school" ], - char: "\ud83c\udf4e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pear: { - keywords: [ "fruit", "nature", "food" ], - char: "\ud83c\udf50", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tangerine: { - keywords: [ "food", "fruit", "nature", "orange" ], - char: "\ud83c\udf4a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lemon: { - keywords: [ "fruit", "nature" ], - char: "\ud83c\udf4b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - banana: { - keywords: [ "fruit", "food", "monkey" ], - char: "\ud83c\udf4c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - watermelon: { - keywords: [ "fruit", "food", "picnic", "summer" ], - char: "\ud83c\udf49", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - grapes: { - keywords: [ "fruit", "food", "wine" ], - char: "\ud83c\udf47", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - strawberry: { - keywords: [ "fruit", "food", "nature" ], - char: "\ud83c\udf53", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - melon: { - keywords: [ "fruit", "nature", "food" ], - char: "\ud83c\udf48", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cherries: { - keywords: [ "food", "fruit" ], - char: "\ud83c\udf52", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peach: { - keywords: [ "fruit", "nature", "food" ], - char: "\ud83c\udf51", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pineapple: { - keywords: [ "fruit", "nature", "food" ], - char: "\ud83c\udf4d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coconut: { - keywords: [ "fruit", "nature", "food", "palm" ], - char: "\ud83e\udd65", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - kiwi_fruit: { - keywords: [ "fruit", "food" ], - char: "\ud83e\udd5d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - mango: { - keywords: [ "fruit", "food", "tropical" ], - char: "\ud83e\udd6d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - avocado: { - keywords: [ "fruit", "food" ], - char: "\ud83e\udd51", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - broccoli: { - keywords: [ "fruit", "food", "vegetable" ], - char: "\ud83e\udd66", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tomato: { - keywords: [ "fruit", "vegetable", "nature", "food" ], - char: "\ud83c\udf45", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - eggplant: { - keywords: [ "vegetable", "nature", "food", "aubergine" ], - char: "\ud83c\udf46", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cucumber: { - keywords: [ "fruit", "food", "pickle" ], - char: "\ud83e\udd52", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - carrot: { - keywords: [ "vegetable", "food", "orange" ], - char: "\ud83e\udd55", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hot_pepper: { - keywords: [ "food", "spicy", "chilli", "chili" ], - char: "\ud83c\udf36", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - potato: { - keywords: [ "food", "tuber", "vegatable", "starch" ], - char: "\ud83e\udd54", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - corn: { - keywords: [ "food", "vegetable", "plant" ], - char: "\ud83c\udf3d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - leafy_greens: { - keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ], - char: "\ud83e\udd6c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sweet_potato: { - keywords: [ "food", "nature" ], - char: "\ud83c\udf60", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peanuts: { - keywords: [ "food", "nut" ], - char: "\ud83e\udd5c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - honey_pot: { - keywords: [ "bees", "sweet", "kitchen" ], - char: "\ud83c\udf6f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - croissant: { - keywords: [ "food", "bread", "french" ], - char: "\ud83e\udd50", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bread: { - keywords: [ "food", "wheat", "breakfast", "toast" ], - char: "\ud83c\udf5e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baguette_bread: { - keywords: [ "food", "bread", "french" ], - char: "\ud83e\udd56", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bagel: { - keywords: [ "food", "bread", "bakery", "schmear" ], - char: "\ud83e\udd6f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pretzel: { - keywords: [ "food", "bread", "twisted" ], - char: "\ud83e\udd68", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cheese: { - keywords: [ "food", "chadder" ], - char: "\ud83e\uddc0", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - egg: { - keywords: [ "food", "chicken", "breakfast" ], - char: "\ud83e\udd5a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bacon: { - keywords: [ "food", "breakfast", "pork", "pig", "meat" ], - char: "\ud83e\udd53", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - steak: { - keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ], - char: "\ud83e\udd69", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pancakes: { - keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ], - char: "\ud83e\udd5e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - poultry_leg: { - keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ], - char: "\ud83c\udf57", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - meat_on_bone: { - keywords: [ "good", "food", "drumstick" ], - char: "\ud83c\udf56", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bone: { - keywords: [ "skeleton" ], - char: "\ud83e\uddb4", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_shrimp: { - keywords: [ "food", "animal", "appetizer", "summer" ], - char: "\ud83c\udf64", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_egg: { - keywords: [ "food", "breakfast", "kitchen", "egg" ], - char: "\ud83c\udf73", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hamburger: { - keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ], - char: "\ud83c\udf54", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fries: { - keywords: [ "chips", "snack", "fast food" ], - char: "\ud83c\udf5f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stuffed_flatbread: { - keywords: [ "food", "flatbread", "stuffed", "gyro" ], - char: "\ud83e\udd59", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hotdog: { - keywords: [ "food", "frankfurter" ], - char: "\ud83c\udf2d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pizza: { - keywords: [ "food", "party" ], - char: "\ud83c\udf55", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sandwich: { - keywords: [ "food", "lunch", "bread" ], - char: "\ud83e\udd6a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - canned_food: { - keywords: [ "food", "soup" ], - char: "\ud83e\udd6b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spaghetti: { - keywords: [ "food", "italian", "noodle" ], - char: "\ud83c\udf5d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - taco: { - keywords: [ "food", "mexican" ], - char: "\ud83c\udf2e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - burrito: { - keywords: [ "food", "mexican" ], - char: "\ud83c\udf2f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - green_salad: { - keywords: [ "food", "healthy", "lettuce" ], - char: "\ud83e\udd57", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shallow_pan_of_food: { - keywords: [ "food", "cooking", "casserole", "paella" ], - char: "\ud83e\udd58", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ramen: { - keywords: [ "food", "japanese", "noodle", "chopsticks" ], - char: "\ud83c\udf5c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stew: { - keywords: [ "food", "meat", "soup" ], - char: "\ud83c\udf72", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fish_cake: { - keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ], - char: "\ud83c\udf65", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fortune_cookie: { - keywords: [ "food", "prophecy" ], - char: "\ud83e\udd60", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sushi: { - keywords: [ "food", "fish", "japanese", "rice" ], - char: "\ud83c\udf63", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bento: { - keywords: [ "food", "japanese", "box" ], - char: "\ud83c\udf71", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - curry: { - keywords: [ "food", "spicy", "hot", "indian" ], - char: "\ud83c\udf5b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_ball: { - keywords: [ "food", "japanese" ], - char: "\ud83c\udf59", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice: { - keywords: [ "food", "china", "asian" ], - char: "\ud83c\udf5a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_cracker: { - keywords: [ "food", "japanese" ], - char: "\ud83c\udf58", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - oden: { - keywords: [ "food", "japanese" ], - char: "\ud83c\udf62", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dango: { - keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ], - char: "\ud83c\udf61", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shaved_ice: { - keywords: [ "hot", "dessert", "summer" ], - char: "\ud83c\udf67", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ice_cream: { - keywords: [ "food", "hot", "dessert" ], - char: "\ud83c\udf68", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - icecream: { - keywords: [ "food", "hot", "dessert", "summer" ], - char: "\ud83c\udf66", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pie: { - keywords: [ "food", "dessert", "pastry" ], - char: "\ud83e\udd67", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cake: { - keywords: [ "food", "dessert" ], - char: "\ud83c\udf70", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cupcake: { - keywords: [ "food", "dessert", "bakery", "sweet" ], - char: "\ud83e\uddc1", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - moon_cake: { - keywords: [ "food", "autumn" ], - char: "\ud83e\udd6e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - birthday: { - keywords: [ "food", "dessert", "cake" ], - char: "\ud83c\udf82", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - custard: { - keywords: [ "dessert", "food" ], - char: "\ud83c\udf6e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - candy: { - keywords: [ "snack", "dessert", "sweet", "lolly" ], - char: "\ud83c\udf6c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lollipop: { - keywords: [ "food", "snack", "candy", "sweet" ], - char: "\ud83c\udf6d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chocolate_bar: { - keywords: [ "food", "snack", "dessert", "sweet" ], - char: "\ud83c\udf6b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - popcorn: { - keywords: [ "food", "movie theater", "films", "snack" ], - char: "\ud83c\udf7f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dumpling: { - keywords: [ "food", "empanada", "pierogi", "potsticker" ], - char: "\ud83e\udd5f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - doughnut: { - keywords: [ "food", "dessert", "snack", "sweet", "donut" ], - char: "\ud83c\udf69", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cookie: { - keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ], - char: "\ud83c\udf6a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - milk_glass: { - keywords: [ "beverage", "drink", "cow" ], - char: "\ud83e\udd5b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beer: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - char: "\ud83c\udf7a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beers: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - char: "\ud83c\udf7b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - clinking_glasses: { - keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ], - char: "\ud83e\udd42", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - wine_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ], - char: "\ud83c\udf77", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tumbler_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ], - char: "\ud83e\udd43", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cocktail: { - keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ], - char: "\ud83c\udf78", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tropical_drink: { - keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ], - char: "\ud83c\udf79", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - champagne: { - keywords: [ "drink", "wine", "bottle", "celebration" ], - char: "\ud83c\udf7e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sake: { - keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ], - char: "\ud83c\udf76", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tea: { - keywords: [ "drink", "bowl", "breakfast", "green", "british" ], - char: "\ud83c\udf75", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cup_with_straw: { - keywords: [ "drink", "soda" ], - char: "\ud83e\udd64", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coffee: { - keywords: [ "beverage", "caffeine", "latte", "espresso" ], - char: "\u2615", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baby_bottle: { - keywords: [ "food", "container", "milk" ], - char: "\ud83c\udf7c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - salt: { - keywords: [ "condiment", "shaker" ], - char: "\ud83e\uddc2", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spoon: { - keywords: [ "cutlery", "kitchen", "tableware" ], - char: "\ud83e\udd44", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fork_and_knife: { - keywords: [ "cutlery", "kitchen" ], - char: "\ud83c\udf74", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - plate_with_cutlery: { - keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ], - char: "\ud83c\udf7d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bowl_with_spoon: { - keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ], - char: "\ud83e\udd63", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - takeout_box: { - keywords: [ "food", "leftovers" ], - char: "\ud83e\udd61", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chopsticks: { - keywords: [ "food" ], - char: "\ud83e\udd62", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - soccer: { - keywords: [ "sports", "football" ], - char: "\u26bd", - fitzpatrick_scale: false, - category: "activity" - }, - basketball: { - keywords: [ "sports", "balls", "NBA" ], - char: "\ud83c\udfc0", - fitzpatrick_scale: false, - category: "activity" - }, - football: { - keywords: [ "sports", "balls", "NFL" ], - char: "\ud83c\udfc8", - fitzpatrick_scale: false, - category: "activity" - }, - baseball: { - keywords: [ "sports", "balls" ], - char: "\u26be", - fitzpatrick_scale: false, - category: "activity" - }, - softball: { - keywords: [ "sports", "balls" ], - char: "\ud83e\udd4e", - fitzpatrick_scale: false, - category: "activity" - }, - tennis: { - keywords: [ "sports", "balls", "green" ], - char: "\ud83c\udfbe", - fitzpatrick_scale: false, - category: "activity" - }, - volleyball: { - keywords: [ "sports", "balls" ], - char: "\ud83c\udfd0", - fitzpatrick_scale: false, - category: "activity" - }, - rugby_football: { - keywords: [ "sports", "team" ], - char: "\ud83c\udfc9", - fitzpatrick_scale: false, - category: "activity" - }, - flying_disc: { - keywords: [ "sports", "frisbee", "ultimate" ], - char: "\ud83e\udd4f", - fitzpatrick_scale: false, - category: "activity" - }, - "8ball": { - keywords: [ "pool", "hobby", "game", "luck", "magic" ], - char: "\ud83c\udfb1", - fitzpatrick_scale: false, - category: "activity" - }, - golf: { - keywords: [ "sports", "business", "flag", "hole", "summer" ], - char: "\u26f3", - fitzpatrick_scale: false, - category: "activity" - }, - golfing_woman: { - keywords: [ "sports", "business", "woman", "female" ], - char: "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "activity" - }, - golfing_man: { - keywords: [ "sports", "business" ], - char: "\ud83c\udfcc", - fitzpatrick_scale: true, - category: "activity" - }, - ping_pong: { - keywords: [ "sports", "pingpong" ], - char: "\ud83c\udfd3", - fitzpatrick_scale: false, - category: "activity" - }, - badminton: { - keywords: [ "sports" ], - char: "\ud83c\udff8", - fitzpatrick_scale: false, - category: "activity" - }, - goal_net: { - keywords: [ "sports" ], - char: "\ud83e\udd45", - fitzpatrick_scale: false, - category: "activity" - }, - ice_hockey: { - keywords: [ "sports" ], - char: "\ud83c\udfd2", - fitzpatrick_scale: false, - category: "activity" - }, - field_hockey: { - keywords: [ "sports" ], - char: "\ud83c\udfd1", - fitzpatrick_scale: false, - category: "activity" - }, - lacrosse: { - keywords: [ "sports", "ball", "stick" ], - char: "\ud83e\udd4d", - fitzpatrick_scale: false, - category: "activity" - }, - cricket: { - keywords: [ "sports" ], - char: "\ud83c\udfcf", - fitzpatrick_scale: false, - category: "activity" - }, - ski: { - keywords: [ "sports", "winter", "cold", "snow" ], - char: "\ud83c\udfbf", - fitzpatrick_scale: false, - category: "activity" - }, - skier: { - keywords: [ "sports", "winter", "snow" ], - char: "\u26f7", - fitzpatrick_scale: false, - category: "activity" - }, - snowboarder: { - keywords: [ "sports", "winter" ], - char: "\ud83c\udfc2", - fitzpatrick_scale: true, - category: "activity" - }, - person_fencing: { - keywords: [ "sports", "fencing", "sword" ], - char: "\ud83e\udd3a", - fitzpatrick_scale: false, - category: "activity" - }, - women_wrestling: { - keywords: [ "sports", "wrestlers" ], - char: "\ud83e\udd3c\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "activity" - }, - men_wrestling: { - keywords: [ "sports", "wrestlers" ], - char: "\ud83e\udd3c\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "activity" - }, - woman_cartwheeling: { - keywords: [ "gymnastics" ], - char: "\ud83e\udd38\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_cartwheeling: { - keywords: [ "gymnastics" ], - char: "\ud83e\udd38\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_handball: { - keywords: [ "sports" ], - char: "\ud83e\udd3e\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_handball: { - keywords: [ "sports" ], - char: "\ud83e\udd3e\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - ice_skate: { - keywords: [ "sports" ], - char: "\u26f8", - fitzpatrick_scale: false, - category: "activity" - }, - curling_stone: { - keywords: [ "sports" ], - char: "\ud83e\udd4c", - fitzpatrick_scale: false, - category: "activity" - }, - skateboard: { - keywords: [ "board" ], - char: "\ud83d\udef9", - fitzpatrick_scale: false, - category: "activity" - }, - sled: { - keywords: [ "sleigh", "luge", "toboggan" ], - char: "\ud83d\udef7", - fitzpatrick_scale: false, - category: "activity" - }, - bow_and_arrow: { - keywords: [ "sports" ], - char: "\ud83c\udff9", - fitzpatrick_scale: false, - category: "activity" - }, - fishing_pole_and_fish: { - keywords: [ "food", "hobby", "summer" ], - char: "\ud83c\udfa3", - fitzpatrick_scale: false, - category: "activity" - }, - boxing_glove: { - keywords: [ "sports", "fighting" ], - char: "\ud83e\udd4a", - fitzpatrick_scale: false, - category: "activity" - }, - martial_arts_uniform: { - keywords: [ "judo", "karate", "taekwondo" ], - char: "\ud83e\udd4b", - fitzpatrick_scale: false, - category: "activity" - }, - rowing_woman: { - keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ], - char: "\ud83d\udea3\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - rowing_man: { - keywords: [ "sports", "hobby", "water", "ship" ], - char: "\ud83d\udea3", - fitzpatrick_scale: true, - category: "activity" - }, - climbing_woman: { - keywords: [ "sports", "hobby", "woman", "female", "rock" ], - char: "\ud83e\uddd7\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - climbing_man: { - keywords: [ "sports", "hobby", "man", "male", "rock" ], - char: "\ud83e\uddd7\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - swimming_woman: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ], - char: "\ud83c\udfca\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - swimming_man: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ], - char: "\ud83c\udfca", - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_water_polo: { - keywords: [ "sports", "pool" ], - char: "\ud83e\udd3d\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_water_polo: { - keywords: [ "sports", "pool" ], - char: "\ud83e\udd3d\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - woman_in_lotus_position: { - keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - char: "\ud83e\uddd8\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_in_lotus_position: { - keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - char: "\ud83e\uddd8\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - surfing_woman: { - keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ], - char: "\ud83c\udfc4\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - surfing_man: { - keywords: [ "sports", "ocean", "sea", "summer", "beach" ], - char: "\ud83c\udfc4", - fitzpatrick_scale: true, - category: "activity" - }, - bath: { - keywords: [ "clean", "shower", "bathroom" ], - char: "\ud83d\udec0", - fitzpatrick_scale: true, - category: "activity" - }, - basketball_woman: { - keywords: [ "sports", "human", "woman", "female" ], - char: "\u26f9\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - basketball_man: { - keywords: [ "sports", "human" ], - char: "\u26f9", - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_woman: { - keywords: [ "sports", "training", "exercise", "woman", "female" ], - char: "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_man: { - keywords: [ "sports", "training", "exercise" ], - char: "\ud83c\udfcb", - fitzpatrick_scale: true, - category: "activity" - }, - biking_woman: { - keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ], - char: "\ud83d\udeb4\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - biking_man: { - keywords: [ "sports", "bike", "exercise", "hipster" ], - char: "\ud83d\udeb4", - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_woman: { - keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ], - char: "\ud83d\udeb5\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_man: { - keywords: [ "transportation", "sports", "human", "race", "bike" ], - char: "\ud83d\udeb5", - fitzpatrick_scale: true, - category: "activity" - }, - horse_racing: { - keywords: [ "animal", "betting", "competition", "gambling", "luck" ], - char: "\ud83c\udfc7", - fitzpatrick_scale: true, - category: "activity" - }, - business_suit_levitating: { - keywords: [ "suit", "business", "levitate", "hover", "jump" ], - char: "\ud83d\udd74", - fitzpatrick_scale: true, - category: "activity" - }, - trophy: { - keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ], - char: "\ud83c\udfc6", - fitzpatrick_scale: false, - category: "activity" - }, - running_shirt_with_sash: { - keywords: [ "play", "pageant" ], - char: "\ud83c\udfbd", - fitzpatrick_scale: false, - category: "activity" - }, - medal_sports: { - keywords: [ "award", "winning" ], - char: "\ud83c\udfc5", - fitzpatrick_scale: false, - category: "activity" - }, - medal_military: { - keywords: [ "award", "winning", "army" ], - char: "\ud83c\udf96", - fitzpatrick_scale: false, - category: "activity" - }, - "1st_place_medal": { - keywords: [ "award", "winning", "first" ], - char: "\ud83e\udd47", - fitzpatrick_scale: false, - category: "activity" - }, - "2nd_place_medal": { - keywords: [ "award", "second" ], - char: "\ud83e\udd48", - fitzpatrick_scale: false, - category: "activity" - }, - "3rd_place_medal": { - keywords: [ "award", "third" ], - char: "\ud83e\udd49", - fitzpatrick_scale: false, - category: "activity" - }, - reminder_ribbon: { - keywords: [ "sports", "cause", "support", "awareness" ], - char: "\ud83c\udf97", - fitzpatrick_scale: false, - category: "activity" - }, - rosette: { - keywords: [ "flower", "decoration", "military" ], - char: "\ud83c\udff5", - fitzpatrick_scale: false, - category: "activity" - }, - ticket: { - keywords: [ "event", "concert", "pass" ], - char: "\ud83c\udfab", - fitzpatrick_scale: false, - category: "activity" - }, - tickets: { - keywords: [ "sports", "concert", "entrance" ], - char: "\ud83c\udf9f", - fitzpatrick_scale: false, - category: "activity" - }, - performing_arts: { - keywords: [ "acting", "theater", "drama" ], - char: "\ud83c\udfad", - fitzpatrick_scale: false, - category: "activity" - }, - art: { - keywords: [ "design", "paint", "draw", "colors" ], - char: "\ud83c\udfa8", - fitzpatrick_scale: false, - category: "activity" - }, - circus_tent: { - keywords: [ "festival", "carnival", "party" ], - char: "\ud83c\udfaa", - fitzpatrick_scale: false, - category: "activity" - }, - woman_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - char: "\ud83e\udd39\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - char: "\ud83e\udd39\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - microphone: { - keywords: [ "sound", "music", "PA", "sing", "talkshow" ], - char: "\ud83c\udfa4", - fitzpatrick_scale: false, - category: "activity" - }, - headphones: { - keywords: [ "music", "score", "gadgets" ], - char: "\ud83c\udfa7", - fitzpatrick_scale: false, - category: "activity" - }, - musical_score: { - keywords: [ "treble", "clef", "compose" ], - char: "\ud83c\udfbc", - fitzpatrick_scale: false, - category: "activity" - }, - musical_keyboard: { - keywords: [ "piano", "instrument", "compose" ], - char: "\ud83c\udfb9", - fitzpatrick_scale: false, - category: "activity" - }, - drum: { - keywords: [ "music", "instrument", "drumsticks", "snare" ], - char: "\ud83e\udd41", - fitzpatrick_scale: false, - category: "activity" - }, - saxophone: { - keywords: [ "music", "instrument", "jazz", "blues" ], - char: "\ud83c\udfb7", - fitzpatrick_scale: false, - category: "activity" - }, - trumpet: { - keywords: [ "music", "brass" ], - char: "\ud83c\udfba", - fitzpatrick_scale: false, - category: "activity" - }, - guitar: { - keywords: [ "music", "instrument" ], - char: "\ud83c\udfb8", - fitzpatrick_scale: false, - category: "activity" - }, - violin: { - keywords: [ "music", "instrument", "orchestra", "symphony" ], - char: "\ud83c\udfbb", - fitzpatrick_scale: false, - category: "activity" - }, - clapper: { - keywords: [ "movie", "film", "record" ], - char: "\ud83c\udfac", - fitzpatrick_scale: false, - category: "activity" - }, - video_game: { - keywords: [ "play", "console", "PS4", "controller" ], - char: "\ud83c\udfae", - fitzpatrick_scale: false, - category: "activity" - }, - space_invader: { - keywords: [ "game", "arcade", "play" ], - char: "\ud83d\udc7e", - fitzpatrick_scale: false, - category: "activity" - }, - dart: { - keywords: [ "game", "play", "bar", "target", "bullseye" ], - char: "\ud83c\udfaf", - fitzpatrick_scale: false, - category: "activity" - }, - game_die: { - keywords: [ "dice", "random", "tabletop", "play", "luck" ], - char: "\ud83c\udfb2", - fitzpatrick_scale: false, - category: "activity" - }, - chess_pawn: { - keywords: [ "expendable" ], - char: "\u265f", - fitzpatrick_scale: false, - category: "activity" - }, - slot_machine: { - keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ], - char: "\ud83c\udfb0", - fitzpatrick_scale: false, - category: "activity" - }, - jigsaw: { - keywords: [ "interlocking", "puzzle", "piece" ], - char: "\ud83e\udde9", - fitzpatrick_scale: false, - category: "activity" - }, - bowling: { - keywords: [ "sports", "fun", "play" ], - char: "\ud83c\udfb3", - fitzpatrick_scale: false, - category: "activity" - }, - red_car: { - keywords: [ "red", "transportation", "vehicle" ], - char: "\ud83d\ude97", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - taxi: { - keywords: [ "uber", "vehicle", "cars", "transportation" ], - char: "\ud83d\ude95", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - blue_car: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude99", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bus: { - keywords: [ "car", "vehicle", "transportation" ], - char: "\ud83d\ude8c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - trolleybus: { - keywords: [ "bart", "transportation", "vehicle" ], - char: "\ud83d\ude8e", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - racing_car: { - keywords: [ "sports", "race", "fast", "formula", "f1" ], - char: "\ud83c\udfce", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - police_car: { - keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ], - char: "\ud83d\ude93", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ambulance: { - keywords: [ "health", "911", "hospital" ], - char: "\ud83d\ude91", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fire_engine: { - keywords: [ "transportation", "cars", "vehicle" ], - char: "\ud83d\ude92", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - minibus: { - keywords: [ "vehicle", "car", "transportation" ], - char: "\ud83d\ude90", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - truck: { - keywords: [ "cars", "transportation" ], - char: "\ud83d\ude9a", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - articulated_lorry: { - keywords: [ "vehicle", "cars", "transportation", "express" ], - char: "\ud83d\ude9b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tractor: { - keywords: [ "vehicle", "car", "farming", "agriculture" ], - char: "\ud83d\ude9c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kick_scooter: { - keywords: [ "vehicle", "kick", "razor" ], - char: "\ud83d\udef4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorcycle: { - keywords: [ "race", "sports", "fast" ], - char: "\ud83c\udfcd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bike: { - keywords: [ "sports", "bicycle", "exercise", "hipster" ], - char: "\ud83d\udeb2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_scooter: { - keywords: [ "vehicle", "vespa", "sasha" ], - char: "\ud83d\udef5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rotating_light: { - keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ], - char: "\ud83d\udea8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_police_car: { - keywords: [ "vehicle", "law", "legal", "enforcement", "911" ], - char: "\ud83d\ude94", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_bus: { - keywords: [ "vehicle", "transportation" ], - char: "\ud83d\ude8d", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_automobile: { - keywords: [ "car", "vehicle", "transportation" ], - char: "\ud83d\ude98", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_taxi: { - keywords: [ "vehicle", "cars", "uber" ], - char: "\ud83d\ude96", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - aerial_tramway: { - keywords: [ "transportation", "vehicle", "ski" ], - char: "\ud83d\udea1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_cableway: { - keywords: [ "transportation", "vehicle", "ski" ], - char: "\ud83d\udea0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - suspension_railway: { - keywords: [ "vehicle", "transportation" ], - char: "\ud83d\ude9f", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_car: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude83", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train: { - keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ], - char: "\ud83d\ude8b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - monorail: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude9d", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_side: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude84", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_front: { - keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ], - char: "\ud83d\ude85", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - light_rail: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude88", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_railway: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude9e", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - steam_locomotive: { - keywords: [ "transportation", "vehicle", "train" ], - char: "\ud83d\ude82", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train2: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude86", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - metro: { - keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ], - char: "\ud83d\ude87", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tram: { - keywords: [ "transportation", "vehicle" ], - char: "\ud83d\ude8a", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - station: { - keywords: [ "transportation", "vehicle", "public" ], - char: "\ud83d\ude89", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flying_saucer: { - keywords: [ "transportation", "vehicle", "ufo" ], - char: "\ud83d\udef8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - helicopter: { - keywords: [ "transportation", "vehicle", "fly" ], - char: "\ud83d\ude81", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - small_airplane: { - keywords: [ "flight", "transportation", "fly", "vehicle" ], - char: "\ud83d\udee9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - airplane: { - keywords: [ "vehicle", "transportation", "flight", "fly" ], - char: "\u2708\ufe0f", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_departure: { - keywords: [ "airport", "flight", "landing" ], - char: "\ud83d\udeeb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_arrival: { - keywords: [ "airport", "flight", "boarding" ], - char: "\ud83d\udeec", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sailboat: { - keywords: [ "ship", "summer", "transportation", "water", "sailing" ], - char: "\u26f5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_boat: { - keywords: [ "ship" ], - char: "\ud83d\udee5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - speedboat: { - keywords: [ "ship", "transportation", "vehicle", "summer" ], - char: "\ud83d\udea4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferry: { - keywords: [ "boat", "ship", "yacht" ], - char: "\u26f4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - passenger_ship: { - keywords: [ "yacht", "cruise", "ferry" ], - char: "\ud83d\udef3", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rocket: { - keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ], - char: "\ud83d\ude80", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - artificial_satellite: { - keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ], - char: "\ud83d\udef0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - seat: { - keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ], - char: "\ud83d\udcba", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - canoe: { - keywords: [ "boat", "paddle", "water", "ship" ], - char: "\ud83d\udef6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - anchor: { - keywords: [ "ship", "ferry", "sea", "boat" ], - char: "\u2693", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - construction: { - keywords: [ "wip", "progress", "caution", "warning" ], - char: "\ud83d\udea7", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fuelpump: { - keywords: [ "gas station", "petroleum" ], - char: "\u26fd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - busstop: { - keywords: [ "transportation", "wait" ], - char: "\ud83d\ude8f", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - vertical_traffic_light: { - keywords: [ "transportation", "driving" ], - char: "\ud83d\udea6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - traffic_light: { - keywords: [ "transportation", "signal" ], - char: "\ud83d\udea5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - checkered_flag: { - keywords: [ "contest", "finishline", "race", "gokart" ], - char: "\ud83c\udfc1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ship: { - keywords: [ "transportation", "titanic", "deploy" ], - char: "\ud83d\udea2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferris_wheel: { - keywords: [ "photo", "carnival", "londoneye" ], - char: "\ud83c\udfa1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - roller_coaster: { - keywords: [ "carnival", "playground", "photo", "fun" ], - char: "\ud83c\udfa2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - carousel_horse: { - keywords: [ "photo", "carnival" ], - char: "\ud83c\udfa0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - building_construction: { - keywords: [ "wip", "working", "progress" ], - char: "\ud83c\udfd7", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - foggy: { - keywords: [ "photo", "mountain" ], - char: "\ud83c\udf01", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tokyo_tower: { - keywords: [ "photo", "japanese" ], - char: "\ud83d\uddfc", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - factory: { - keywords: [ "building", "industry", "pollution", "smoke" ], - char: "\ud83c\udfed", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fountain: { - keywords: [ "photo", "summer", "water", "fresh" ], - char: "\u26f2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rice_scene: { - keywords: [ "photo", "japan", "asia", "tsukimi" ], - char: "\ud83c\udf91", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain: { - keywords: [ "photo", "nature", "environment" ], - char: "\u26f0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_snow: { - keywords: [ "photo", "nature", "environment", "winter", "cold" ], - char: "\ud83c\udfd4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mount_fuji: { - keywords: [ "photo", "mountain", "nature", "japanese" ], - char: "\ud83d\uddfb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - volcano: { - keywords: [ "photo", "nature", "disaster" ], - char: "\ud83c\udf0b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japan: { - keywords: [ "nation", "country", "japanese", "asia" ], - char: "\ud83d\uddfe", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - camping: { - keywords: [ "photo", "outdoors", "tent" ], - char: "\ud83c\udfd5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tent: { - keywords: [ "photo", "camping", "outdoors" ], - char: "\u26fa", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - national_park: { - keywords: [ "photo", "environment", "nature" ], - char: "\ud83c\udfde", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorway: { - keywords: [ "road", "cupertino", "interstate", "highway" ], - char: "\ud83d\udee3", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_track: { - keywords: [ "train", "transportation" ], - char: "\ud83d\udee4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise: { - keywords: [ "morning", "view", "vacation", "photo" ], - char: "\ud83c\udf05", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise_over_mountains: { - keywords: [ "view", "vacation", "photo" ], - char: "\ud83c\udf04", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert: { - keywords: [ "photo", "warm", "saharah" ], - char: "\ud83c\udfdc", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - beach_umbrella: { - keywords: [ "weather", "summer", "sunny", "sand", "mojito" ], - char: "\ud83c\udfd6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert_island: { - keywords: [ "photo", "tropical", "mojito" ], - char: "\ud83c\udfdd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunrise: { - keywords: [ "photo", "good morning", "dawn" ], - char: "\ud83c\udf07", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunset: { - keywords: [ "photo", "evening", "sky", "buildings" ], - char: "\ud83c\udf06", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - cityscape: { - keywords: [ "photo", "night life", "urban" ], - char: "\ud83c\udfd9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - night_with_stars: { - keywords: [ "evening", "city", "downtown" ], - char: "\ud83c\udf03", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bridge_at_night: { - keywords: [ "photo", "sanfrancisco" ], - char: "\ud83c\udf09", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - milky_way: { - keywords: [ "photo", "space", "stars" ], - char: "\ud83c\udf0c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stars: { - keywords: [ "night", "photo" ], - char: "\ud83c\udf20", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sparkler: { - keywords: [ "stars", "night", "shine" ], - char: "\ud83c\udf87", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fireworks: { - keywords: [ "photo", "festival", "carnival", "congratulations" ], - char: "\ud83c\udf86", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rainbow: { - keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ], - char: "\ud83c\udf08", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - houses: { - keywords: [ "buildings", "photo" ], - char: "\ud83c\udfd8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_castle: { - keywords: [ "building", "royalty", "history" ], - char: "\ud83c\udff0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japanese_castle: { - keywords: [ "photo", "building" ], - char: "\ud83c\udfef", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stadium: { - keywords: [ "photo", "place", "sports", "concert", "venue" ], - char: "\ud83c\udfdf", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - statue_of_liberty: { - keywords: [ "american", "newyork" ], - char: "\ud83d\uddfd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house: { - keywords: [ "building", "home" ], - char: "\ud83c\udfe0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house_with_garden: { - keywords: [ "home", "plant", "nature" ], - char: "\ud83c\udfe1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - derelict_house: { - keywords: [ "abandon", "evict", "broken", "building" ], - char: "\ud83c\udfda", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - office: { - keywords: [ "building", "bureau", "work" ], - char: "\ud83c\udfe2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - department_store: { - keywords: [ "building", "shopping", "mall" ], - char: "\ud83c\udfec", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - post_office: { - keywords: [ "building", "envelope", "communication" ], - char: "\ud83c\udfe3", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_post_office: { - keywords: [ "building", "email" ], - char: "\ud83c\udfe4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hospital: { - keywords: [ "building", "health", "surgery", "doctor" ], - char: "\ud83c\udfe5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bank: { - keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ], - char: "\ud83c\udfe6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hotel: { - keywords: [ "building", "accomodation", "checkin" ], - char: "\ud83c\udfe8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - convenience_store: { - keywords: [ "building", "shopping", "groceries" ], - char: "\ud83c\udfea", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - school: { - keywords: [ "building", "student", "education", "learn", "teach" ], - char: "\ud83c\udfeb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - love_hotel: { - keywords: [ "like", "affection", "dating" ], - char: "\ud83c\udfe9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - wedding: { - keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ], - char: "\ud83d\udc92", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - classical_building: { - keywords: [ "art", "culture", "history" ], - char: "\ud83c\udfdb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - church: { - keywords: [ "building", "religion", "christ" ], - char: "\u26ea", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mosque: { - keywords: [ "islam", "worship", "minaret" ], - char: "\ud83d\udd4c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - synagogue: { - keywords: [ "judaism", "worship", "temple", "jewish" ], - char: "\ud83d\udd4d", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kaaba: { - keywords: [ "mecca", "mosque", "islam" ], - char: "\ud83d\udd4b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - shinto_shrine: { - keywords: [ "temple", "japan", "kyoto" ], - char: "\u26e9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - watch: { - keywords: [ "time", "accessories" ], - char: "\u231a", - fitzpatrick_scale: false, - category: "objects" - }, - iphone: { - keywords: [ "technology", "apple", "gadgets", "dial" ], - char: "\ud83d\udcf1", - fitzpatrick_scale: false, - category: "objects" - }, - calling: { - keywords: [ "iphone", "incoming" ], - char: "\ud83d\udcf2", - fitzpatrick_scale: false, - category: "objects" - }, - computer: { - keywords: [ "technology", "laptop", "screen", "display", "monitor" ], - char: "\ud83d\udcbb", - fitzpatrick_scale: false, - category: "objects" - }, - keyboard: { - keywords: [ "technology", "computer", "type", "input", "text" ], - char: "\u2328", - fitzpatrick_scale: false, - category: "objects" - }, - desktop_computer: { - keywords: [ "technology", "computing", "screen" ], - char: "\ud83d\udda5", - fitzpatrick_scale: false, - category: "objects" - }, - printer: { - keywords: [ "paper", "ink" ], - char: "\ud83d\udda8", - fitzpatrick_scale: false, - category: "objects" - }, - computer_mouse: { - keywords: [ "click" ], - char: "\ud83d\uddb1", - fitzpatrick_scale: false, - category: "objects" - }, - trackball: { - keywords: [ "technology", "trackpad" ], - char: "\ud83d\uddb2", - fitzpatrick_scale: false, - category: "objects" - }, - joystick: { - keywords: [ "game", "play" ], - char: "\ud83d\udd79", - fitzpatrick_scale: false, - category: "objects" - }, - clamp: { - keywords: [ "tool" ], - char: "\ud83d\udddc", - fitzpatrick_scale: false, - category: "objects" - }, - minidisc: { - keywords: [ "technology", "record", "data", "disk", "90s" ], - char: "\ud83d\udcbd", - fitzpatrick_scale: false, - category: "objects" - }, - floppy_disk: { - keywords: [ "oldschool", "technology", "save", "90s", "80s" ], - char: "\ud83d\udcbe", - fitzpatrick_scale: false, - category: "objects" - }, - cd: { - keywords: [ "technology", "dvd", "disk", "disc", "90s" ], - char: "\ud83d\udcbf", - fitzpatrick_scale: false, - category: "objects" - }, - dvd: { - keywords: [ "cd", "disk", "disc" ], - char: "\ud83d\udcc0", - fitzpatrick_scale: false, - category: "objects" - }, - vhs: { - keywords: [ "record", "video", "oldschool", "90s", "80s" ], - char: "\ud83d\udcfc", - fitzpatrick_scale: false, - category: "objects" - }, - camera: { - keywords: [ "gadgets", "photography" ], - char: "\ud83d\udcf7", - fitzpatrick_scale: false, - category: "objects" - }, - camera_flash: { - keywords: [ "photography", "gadgets" ], - char: "\ud83d\udcf8", - fitzpatrick_scale: false, - category: "objects" - }, - video_camera: { - keywords: [ "film", "record" ], - char: "\ud83d\udcf9", - fitzpatrick_scale: false, - category: "objects" - }, - movie_camera: { - keywords: [ "film", "record" ], - char: "\ud83c\udfa5", - fitzpatrick_scale: false, - category: "objects" - }, - film_projector: { - keywords: [ "video", "tape", "record", "movie" ], - char: "\ud83d\udcfd", - fitzpatrick_scale: false, - category: "objects" - }, - film_strip: { - keywords: [ "movie" ], - char: "\ud83c\udf9e", - fitzpatrick_scale: false, - category: "objects" - }, - telephone_receiver: { - keywords: [ "technology", "communication", "dial" ], - char: "\ud83d\udcde", - fitzpatrick_scale: false, - category: "objects" - }, - phone: { - keywords: [ "technology", "communication", "dial", "telephone" ], - char: "\u260e\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - pager: { - keywords: [ "bbcall", "oldschool", "90s" ], - char: "\ud83d\udcdf", - fitzpatrick_scale: false, - category: "objects" - }, - fax: { - keywords: [ "communication", "technology" ], - char: "\ud83d\udce0", - fitzpatrick_scale: false, - category: "objects" - }, - tv: { - keywords: [ "technology", "program", "oldschool", "show", "television" ], - char: "\ud83d\udcfa", - fitzpatrick_scale: false, - category: "objects" - }, - radio: { - keywords: [ "communication", "music", "podcast", "program" ], - char: "\ud83d\udcfb", - fitzpatrick_scale: false, - category: "objects" - }, - studio_microphone: { - keywords: [ "sing", "recording", "artist", "talkshow" ], - char: "\ud83c\udf99", - fitzpatrick_scale: false, - category: "objects" - }, - level_slider: { - keywords: [ "scale" ], - char: "\ud83c\udf9a", - fitzpatrick_scale: false, - category: "objects" - }, - control_knobs: { - keywords: [ "dial" ], - char: "\ud83c\udf9b", - fitzpatrick_scale: false, - category: "objects" - }, - compass: { - keywords: [ "magnetic", "navigation", "orienteering" ], - char: "\ud83e\udded", - fitzpatrick_scale: false, - category: "objects" - }, - stopwatch: { - keywords: [ "time", "deadline" ], - char: "\u23f1", - fitzpatrick_scale: false, - category: "objects" - }, - timer_clock: { - keywords: [ "alarm" ], - char: "\u23f2", - fitzpatrick_scale: false, - category: "objects" - }, - alarm_clock: { - keywords: [ "time", "wake" ], - char: "\u23f0", - fitzpatrick_scale: false, - category: "objects" - }, - mantelpiece_clock: { - keywords: [ "time" ], - char: "\ud83d\udd70", - fitzpatrick_scale: false, - category: "objects" - }, - hourglass_flowing_sand: { - keywords: [ "oldschool", "time", "countdown" ], - char: "\u23f3", - fitzpatrick_scale: false, - category: "objects" - }, - hourglass: { - keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ], - char: "\u231b", - fitzpatrick_scale: false, - category: "objects" - }, - satellite: { - keywords: [ "communication", "future", "radio", "space" ], - char: "\ud83d\udce1", - fitzpatrick_scale: false, - category: "objects" - }, - battery: { - keywords: [ "power", "energy", "sustain" ], - char: "\ud83d\udd0b", - fitzpatrick_scale: false, - category: "objects" - }, - electric_plug: { - keywords: [ "charger", "power" ], - char: "\ud83d\udd0c", - fitzpatrick_scale: false, - category: "objects" - }, - bulb: { - keywords: [ "light", "electricity", "idea" ], - char: "\ud83d\udca1", - fitzpatrick_scale: false, - category: "objects" - }, - flashlight: { - keywords: [ "dark", "camping", "sight", "night" ], - char: "\ud83d\udd26", - fitzpatrick_scale: false, - category: "objects" - }, - candle: { - keywords: [ "fire", "wax" ], - char: "\ud83d\udd6f", - fitzpatrick_scale: false, - category: "objects" - }, - fire_extinguisher: { - keywords: [ "quench" ], - char: "\ud83e\uddef", - fitzpatrick_scale: false, - category: "objects" - }, - wastebasket: { - keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ], - char: "\ud83d\uddd1", - fitzpatrick_scale: false, - category: "objects" - }, - oil_drum: { - keywords: [ "barrell" ], - char: "\ud83d\udee2", - fitzpatrick_scale: false, - category: "objects" - }, - money_with_wings: { - keywords: [ "dollar", "bills", "payment", "sale" ], - char: "\ud83d\udcb8", - fitzpatrick_scale: false, - category: "objects" - }, - dollar: { - keywords: [ "money", "sales", "bill", "currency" ], - char: "\ud83d\udcb5", - fitzpatrick_scale: false, - category: "objects" - }, - yen: { - keywords: [ "money", "sales", "japanese", "dollar", "currency" ], - char: "\ud83d\udcb4", - fitzpatrick_scale: false, - category: "objects" - }, - euro: { - keywords: [ "money", "sales", "dollar", "currency" ], - char: "\ud83d\udcb6", - fitzpatrick_scale: false, - category: "objects" - }, - pound: { - keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ], - char: "\ud83d\udcb7", - fitzpatrick_scale: false, - category: "objects" - }, - moneybag: { - keywords: [ "dollar", "payment", "coins", "sale" ], - char: "\ud83d\udcb0", - fitzpatrick_scale: false, - category: "objects" - }, - credit_card: { - keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ], - char: "\ud83d\udcb3", - fitzpatrick_scale: false, - category: "objects" - }, - gem: { - keywords: [ "blue", "ruby", "diamond", "jewelry" ], - char: "\ud83d\udc8e", - fitzpatrick_scale: false, - category: "objects" - }, - balance_scale: { - keywords: [ "law", "fairness", "weight" ], - char: "\u2696", - fitzpatrick_scale: false, - category: "objects" - }, - toolbox: { - keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ], - char: "\ud83e\uddf0", - fitzpatrick_scale: false, - category: "objects" - }, - wrench: { - keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ], - char: "\ud83d\udd27", - fitzpatrick_scale: false, - category: "objects" - }, - hammer: { - keywords: [ "tools", "build", "create" ], - char: "\ud83d\udd28", - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_pick: { - keywords: [ "tools", "build", "create" ], - char: "\u2692", - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_wrench: { - keywords: [ "tools", "build", "create" ], - char: "\ud83d\udee0", - fitzpatrick_scale: false, - category: "objects" - }, - pick: { - keywords: [ "tools", "dig" ], - char: "\u26cf", - fitzpatrick_scale: false, - category: "objects" - }, - nut_and_bolt: { - keywords: [ "handy", "tools", "fix" ], - char: "\ud83d\udd29", - fitzpatrick_scale: false, - category: "objects" - }, - gear: { - keywords: [ "cog" ], - char: "\u2699", - fitzpatrick_scale: false, - category: "objects" - }, - brick: { - keywords: [ "bricks" ], - char: "\ud83e\uddf1", - fitzpatrick_scale: false, - category: "objects" - }, - chains: { - keywords: [ "lock", "arrest" ], - char: "\u26d3", - fitzpatrick_scale: false, - category: "objects" - }, - magnet: { - keywords: [ "attraction", "magnetic" ], - char: "\ud83e\uddf2", - fitzpatrick_scale: false, - category: "objects" - }, - gun: { - keywords: [ "violence", "weapon", "pistol", "revolver" ], - char: "\ud83d\udd2b", - fitzpatrick_scale: false, - category: "objects" - }, - bomb: { - keywords: [ "boom", "explode", "explosion", "terrorism" ], - char: "\ud83d\udca3", - fitzpatrick_scale: false, - category: "objects" - }, - firecracker: { - keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ], - char: "\ud83e\udde8", - fitzpatrick_scale: false, - category: "objects" - }, - hocho: { - keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ], - char: "\ud83d\udd2a", - fitzpatrick_scale: false, - category: "objects" - }, - dagger: { - keywords: [ "weapon" ], - char: "\ud83d\udde1", - fitzpatrick_scale: false, - category: "objects" - }, - crossed_swords: { - keywords: [ "weapon" ], - char: "\u2694", - fitzpatrick_scale: false, - category: "objects" - }, - shield: { - keywords: [ "protection", "security" ], - char: "\ud83d\udee1", - fitzpatrick_scale: false, - category: "objects" - }, - smoking: { - keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ], - char: "\ud83d\udeac", - fitzpatrick_scale: false, - category: "objects" - }, - skull_and_crossbones: { - keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ], - char: "\u2620", - fitzpatrick_scale: false, - category: "objects" - }, - coffin: { - keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ], - char: "\u26b0", - fitzpatrick_scale: false, - category: "objects" - }, - funeral_urn: { - keywords: [ "dead", "die", "death", "rip", "ashes" ], - char: "\u26b1", - fitzpatrick_scale: false, - category: "objects" - }, - amphora: { - keywords: [ "vase", "jar" ], - char: "\ud83c\udffa", - fitzpatrick_scale: false, - category: "objects" - }, - crystal_ball: { - keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ], - char: "\ud83d\udd2e", - fitzpatrick_scale: false, - category: "objects" - }, - prayer_beads: { - keywords: [ "dhikr", "religious" ], - char: "\ud83d\udcff", - fitzpatrick_scale: false, - category: "objects" - }, - nazar_amulet: { - keywords: [ "bead", "charm" ], - char: "\ud83e\uddff", - fitzpatrick_scale: false, - category: "objects" - }, - barber: { - keywords: [ "hair", "salon", "style" ], - char: "\ud83d\udc88", - fitzpatrick_scale: false, - category: "objects" - }, - alembic: { - keywords: [ "distilling", "science", "experiment", "chemistry" ], - char: "\u2697", - fitzpatrick_scale: false, - category: "objects" - }, - telescope: { - keywords: [ "stars", "space", "zoom", "science", "astronomy" ], - char: "\ud83d\udd2d", - fitzpatrick_scale: false, - category: "objects" - }, - microscope: { - keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ], - char: "\ud83d\udd2c", - fitzpatrick_scale: false, - category: "objects" - }, - hole: { - keywords: [ "embarrassing" ], - char: "\ud83d\udd73", - fitzpatrick_scale: false, - category: "objects" - }, - pill: { - keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ], - char: "\ud83d\udc8a", - fitzpatrick_scale: false, - category: "objects" - }, - syringe: { - keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ], - char: "\ud83d\udc89", - fitzpatrick_scale: false, - category: "objects" - }, - dna: { - keywords: [ "biologist", "genetics", "life" ], - char: "\ud83e\uddec", - fitzpatrick_scale: false, - category: "objects" - }, - microbe: { - keywords: [ "amoeba", "bacteria", "germs" ], - char: "\ud83e\udda0", - fitzpatrick_scale: false, - category: "objects" - }, - petri_dish: { - keywords: [ "bacteria", "biology", "culture", "lab" ], - char: "\ud83e\uddeb", - fitzpatrick_scale: false, - category: "objects" - }, - test_tube: { - keywords: [ "chemistry", "experiment", "lab", "science" ], - char: "\ud83e\uddea", - fitzpatrick_scale: false, - category: "objects" - }, - thermometer: { - keywords: [ "weather", "temperature", "hot", "cold" ], - char: "\ud83c\udf21", - fitzpatrick_scale: false, - category: "objects" - }, - broom: { - keywords: [ "cleaning", "sweeping", "witch" ], - char: "\ud83e\uddf9", - fitzpatrick_scale: false, - category: "objects" - }, - basket: { - keywords: [ "laundry" ], - char: "\ud83e\uddfa", - fitzpatrick_scale: false, - category: "objects" - }, - toilet_paper: { - keywords: [ "roll" ], - char: "\ud83e\uddfb", - fitzpatrick_scale: false, - category: "objects" - }, - label: { - keywords: [ "sale", "tag" ], - char: "\ud83c\udff7", - fitzpatrick_scale: false, - category: "objects" - }, - bookmark: { - keywords: [ "favorite", "label", "save" ], - char: "\ud83d\udd16", - fitzpatrick_scale: false, - category: "objects" - }, - toilet: { - keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ], - char: "\ud83d\udebd", - fitzpatrick_scale: false, - category: "objects" - }, - shower: { - keywords: [ "clean", "water", "bathroom" ], - char: "\ud83d\udebf", - fitzpatrick_scale: false, - category: "objects" - }, - bathtub: { - keywords: [ "clean", "shower", "bathroom" ], - char: "\ud83d\udec1", - fitzpatrick_scale: false, - category: "objects" - }, - soap: { - keywords: [ "bar", "bathing", "cleaning", "lather" ], - char: "\ud83e\uddfc", - fitzpatrick_scale: false, - category: "objects" - }, - sponge: { - keywords: [ "absorbing", "cleaning", "porous" ], - char: "\ud83e\uddfd", - fitzpatrick_scale: false, - category: "objects" - }, - lotion_bottle: { - keywords: [ "moisturizer", "sunscreen" ], - char: "\ud83e\uddf4", - fitzpatrick_scale: false, - category: "objects" - }, - key: { - keywords: [ "lock", "door", "password" ], - char: "\ud83d\udd11", - fitzpatrick_scale: false, - category: "objects" - }, - old_key: { - keywords: [ "lock", "door", "password" ], - char: "\ud83d\udddd", - fitzpatrick_scale: false, - category: "objects" - }, - couch_and_lamp: { - keywords: [ "read", "chill" ], - char: "\ud83d\udecb", - fitzpatrick_scale: false, - category: "objects" - }, - sleeping_bed: { - keywords: [ "bed", "rest" ], - char: "\ud83d\udecc", - fitzpatrick_scale: true, - category: "objects" - }, - bed: { - keywords: [ "sleep", "rest" ], - char: "\ud83d\udecf", - fitzpatrick_scale: false, - category: "objects" - }, - door: { - keywords: [ "house", "entry", "exit" ], - char: "\ud83d\udeaa", - fitzpatrick_scale: false, - category: "objects" - }, - bellhop_bell: { - keywords: [ "service" ], - char: "\ud83d\udece", - fitzpatrick_scale: false, - category: "objects" - }, - teddy_bear: { - keywords: [ "plush", "stuffed" ], - char: "\ud83e\uddf8", - fitzpatrick_scale: false, - category: "objects" - }, - framed_picture: { - keywords: [ "photography" ], - char: "\ud83d\uddbc", - fitzpatrick_scale: false, - category: "objects" - }, - world_map: { - keywords: [ "location", "direction" ], - char: "\ud83d\uddfa", - fitzpatrick_scale: false, - category: "objects" - }, - parasol_on_ground: { - keywords: [ "weather", "summer" ], - char: "\u26f1", - fitzpatrick_scale: false, - category: "objects" - }, - moyai: { - keywords: [ "rock", "easter island", "moai" ], - char: "\ud83d\uddff", - fitzpatrick_scale: false, - category: "objects" - }, - shopping: { - keywords: [ "mall", "buy", "purchase" ], - char: "\ud83d\udecd", - fitzpatrick_scale: false, - category: "objects" - }, - shopping_cart: { - keywords: [ "trolley" ], - char: "\ud83d\uded2", - fitzpatrick_scale: false, - category: "objects" - }, - balloon: { - keywords: [ "party", "celebration", "birthday", "circus" ], - char: "\ud83c\udf88", - fitzpatrick_scale: false, - category: "objects" - }, - flags: { - keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ], - char: "\ud83c\udf8f", - fitzpatrick_scale: false, - category: "objects" - }, - ribbon: { - keywords: [ "decoration", "pink", "girl", "bowtie" ], - char: "\ud83c\udf80", - fitzpatrick_scale: false, - category: "objects" - }, - gift: { - keywords: [ "present", "birthday", "christmas", "xmas" ], - char: "\ud83c\udf81", - fitzpatrick_scale: false, - category: "objects" - }, - confetti_ball: { - keywords: [ "festival", "party", "birthday", "circus" ], - char: "\ud83c\udf8a", - fitzpatrick_scale: false, - category: "objects" - }, - tada: { - keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ], - char: "\ud83c\udf89", - fitzpatrick_scale: false, - category: "objects" - }, - dolls: { - keywords: [ "japanese", "toy", "kimono" ], - char: "\ud83c\udf8e", - fitzpatrick_scale: false, - category: "objects" - }, - wind_chime: { - keywords: [ "nature", "ding", "spring", "bell" ], - char: "\ud83c\udf90", - fitzpatrick_scale: false, - category: "objects" - }, - crossed_flags: { - keywords: [ "japanese", "nation", "country", "border" ], - char: "\ud83c\udf8c", - fitzpatrick_scale: false, - category: "objects" - }, - izakaya_lantern: { - keywords: [ "light", "paper", "halloween", "spooky" ], - char: "\ud83c\udfee", - fitzpatrick_scale: false, - category: "objects" - }, - red_envelope: { - keywords: [ "gift" ], - char: "\ud83e\udde7", - fitzpatrick_scale: false, - category: "objects" - }, - email: { - keywords: [ "letter", "postal", "inbox", "communication" ], - char: "\u2709\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - envelope_with_arrow: { - keywords: [ "email", "communication" ], - char: "\ud83d\udce9", - fitzpatrick_scale: false, - category: "objects" - }, - incoming_envelope: { - keywords: [ "email", "inbox" ], - char: "\ud83d\udce8", - fitzpatrick_scale: false, - category: "objects" - }, - "e-mail": { - keywords: [ "communication", "inbox" ], - char: "\ud83d\udce7", - fitzpatrick_scale: false, - category: "objects" - }, - love_letter: { - keywords: [ "email", "like", "affection", "envelope", "valentines" ], - char: "\ud83d\udc8c", - fitzpatrick_scale: false, - category: "objects" - }, - postbox: { - keywords: [ "email", "letter", "envelope" ], - char: "\ud83d\udcee", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_closed: { - keywords: [ "email", "communication", "inbox" ], - char: "\ud83d\udcea", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox: { - keywords: [ "email", "inbox", "communication" ], - char: "\ud83d\udceb", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_mail: { - keywords: [ "email", "inbox", "communication" ], - char: "\ud83d\udcec", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_no_mail: { - keywords: [ "email", "inbox" ], - char: "\ud83d\udced", - fitzpatrick_scale: false, - category: "objects" - }, - package: { - keywords: [ "mail", "gift", "cardboard", "box", "moving" ], - char: "\ud83d\udce6", - fitzpatrick_scale: false, - category: "objects" - }, - postal_horn: { - keywords: [ "instrument", "music" ], - char: "\ud83d\udcef", - fitzpatrick_scale: false, - category: "objects" - }, - inbox_tray: { - keywords: [ "email", "documents" ], - char: "\ud83d\udce5", - fitzpatrick_scale: false, - category: "objects" - }, - outbox_tray: { - keywords: [ "inbox", "email" ], - char: "\ud83d\udce4", - fitzpatrick_scale: false, - category: "objects" - }, - scroll: { - keywords: [ "documents", "ancient", "history", "paper" ], - char: "\ud83d\udcdc", - fitzpatrick_scale: false, - category: "objects" - }, - page_with_curl: { - keywords: [ "documents", "office", "paper" ], - char: "\ud83d\udcc3", - fitzpatrick_scale: false, - category: "objects" - }, - bookmark_tabs: { - keywords: [ "favorite", "save", "order", "tidy" ], - char: "\ud83d\udcd1", - fitzpatrick_scale: false, - category: "objects" - }, - receipt: { - keywords: [ "accounting", "expenses" ], - char: "\ud83e\uddfe", - fitzpatrick_scale: false, - category: "objects" - }, - bar_chart: { - keywords: [ "graph", "presentation", "stats" ], - char: "\ud83d\udcca", - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_upwards_trend: { - keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ], - char: "\ud83d\udcc8", - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_downwards_trend: { - keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ], - char: "\ud83d\udcc9", - fitzpatrick_scale: false, - category: "objects" - }, - page_facing_up: { - keywords: [ "documents", "office", "paper", "information" ], - char: "\ud83d\udcc4", - fitzpatrick_scale: false, - category: "objects" - }, - date: { - keywords: [ "calendar", "schedule" ], - char: "\ud83d\udcc5", - fitzpatrick_scale: false, - category: "objects" - }, - calendar: { - keywords: [ "schedule", "date", "planning" ], - char: "\ud83d\udcc6", - fitzpatrick_scale: false, - category: "objects" - }, - spiral_calendar: { - keywords: [ "date", "schedule", "planning" ], - char: "\ud83d\uddd3", - fitzpatrick_scale: false, - category: "objects" - }, - card_index: { - keywords: [ "business", "stationery" ], - char: "\ud83d\udcc7", - fitzpatrick_scale: false, - category: "objects" - }, - card_file_box: { - keywords: [ "business", "stationery" ], - char: "\ud83d\uddc3", - fitzpatrick_scale: false, - category: "objects" - }, - ballot_box: { - keywords: [ "election", "vote" ], - char: "\ud83d\uddf3", - fitzpatrick_scale: false, - category: "objects" - }, - file_cabinet: { - keywords: [ "filing", "organizing" ], - char: "\ud83d\uddc4", - fitzpatrick_scale: false, - category: "objects" - }, - clipboard: { - keywords: [ "stationery", "documents" ], - char: "\ud83d\udccb", - fitzpatrick_scale: false, - category: "objects" - }, - spiral_notepad: { - keywords: [ "memo", "stationery" ], - char: "\ud83d\uddd2", - fitzpatrick_scale: false, - category: "objects" - }, - file_folder: { - keywords: [ "documents", "business", "office" ], - char: "\ud83d\udcc1", - fitzpatrick_scale: false, - category: "objects" - }, - open_file_folder: { - keywords: [ "documents", "load" ], - char: "\ud83d\udcc2", - fitzpatrick_scale: false, - category: "objects" - }, - card_index_dividers: { - keywords: [ "organizing", "business", "stationery" ], - char: "\ud83d\uddc2", - fitzpatrick_scale: false, - category: "objects" - }, - newspaper_roll: { - keywords: [ "press", "headline" ], - char: "\ud83d\uddde", - fitzpatrick_scale: false, - category: "objects" - }, - newspaper: { - keywords: [ "press", "headline" ], - char: "\ud83d\udcf0", - fitzpatrick_scale: false, - category: "objects" - }, - notebook: { - keywords: [ "stationery", "record", "notes", "paper", "study" ], - char: "\ud83d\udcd3", - fitzpatrick_scale: false, - category: "objects" - }, - closed_book: { - keywords: [ "read", "library", "knowledge", "textbook", "learn" ], - char: "\ud83d\udcd5", - fitzpatrick_scale: false, - category: "objects" - }, - green_book: { - keywords: [ "read", "library", "knowledge", "study" ], - char: "\ud83d\udcd7", - fitzpatrick_scale: false, - category: "objects" - }, - blue_book: { - keywords: [ "read", "library", "knowledge", "learn", "study" ], - char: "\ud83d\udcd8", - fitzpatrick_scale: false, - category: "objects" - }, - orange_book: { - keywords: [ "read", "library", "knowledge", "textbook", "study" ], - char: "\ud83d\udcd9", - fitzpatrick_scale: false, - category: "objects" - }, - notebook_with_decorative_cover: { - keywords: [ "classroom", "notes", "record", "paper", "study" ], - char: "\ud83d\udcd4", - fitzpatrick_scale: false, - category: "objects" - }, - ledger: { - keywords: [ "notes", "paper" ], - char: "\ud83d\udcd2", - fitzpatrick_scale: false, - category: "objects" - }, - books: { - keywords: [ "literature", "library", "study" ], - char: "\ud83d\udcda", - fitzpatrick_scale: false, - category: "objects" - }, - open_book: { - keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ], - char: "\ud83d\udcd6", - fitzpatrick_scale: false, - category: "objects" - }, - safety_pin: { - keywords: [ "diaper" ], - char: "\ud83e\uddf7", - fitzpatrick_scale: false, - category: "objects" - }, - link: { - keywords: [ "rings", "url" ], - char: "\ud83d\udd17", - fitzpatrick_scale: false, - category: "objects" - }, - paperclip: { - keywords: [ "documents", "stationery" ], - char: "\ud83d\udcce", - fitzpatrick_scale: false, - category: "objects" - }, - paperclips: { - keywords: [ "documents", "stationery" ], - char: "\ud83d\udd87", - fitzpatrick_scale: false, - category: "objects" - }, - scissors: { - keywords: [ "stationery", "cut" ], - char: "\u2702\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - triangular_ruler: { - keywords: [ "stationery", "math", "architect", "sketch" ], - char: "\ud83d\udcd0", - fitzpatrick_scale: false, - category: "objects" - }, - straight_ruler: { - keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ], - char: "\ud83d\udccf", - fitzpatrick_scale: false, - category: "objects" - }, - abacus: { - keywords: [ "calculation" ], - char: "\ud83e\uddee", - fitzpatrick_scale: false, - category: "objects" - }, - pushpin: { - keywords: [ "stationery", "mark", "here" ], - char: "\ud83d\udccc", - fitzpatrick_scale: false, - category: "objects" - }, - round_pushpin: { - keywords: [ "stationery", "location", "map", "here" ], - char: "\ud83d\udccd", - fitzpatrick_scale: false, - category: "objects" - }, - triangular_flag_on_post: { - keywords: [ "mark", "milestone", "place" ], - char: "\ud83d\udea9", - fitzpatrick_scale: false, - category: "objects" - }, - white_flag: { - keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ], - char: "\ud83c\udff3", - fitzpatrick_scale: false, - category: "objects" - }, - black_flag: { - keywords: [ "pirate" ], - char: "\ud83c\udff4", - fitzpatrick_scale: false, - category: "objects" - }, - rainbow_flag: { - keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ], - char: "\ud83c\udff3\ufe0f\u200d\ud83c\udf08", - fitzpatrick_scale: false, - category: "objects" - }, - closed_lock_with_key: { - keywords: [ "security", "privacy" ], - char: "\ud83d\udd10", - fitzpatrick_scale: false, - category: "objects" - }, - lock: { - keywords: [ "security", "password", "padlock" ], - char: "\ud83d\udd12", - fitzpatrick_scale: false, - category: "objects" - }, - unlock: { - keywords: [ "privacy", "security" ], - char: "\ud83d\udd13", - fitzpatrick_scale: false, - category: "objects" - }, - lock_with_ink_pen: { - keywords: [ "security", "secret" ], - char: "\ud83d\udd0f", - fitzpatrick_scale: false, - category: "objects" - }, - pen: { - keywords: [ "stationery", "writing", "write" ], - char: "\ud83d\udd8a", - fitzpatrick_scale: false, - category: "objects" - }, - fountain_pen: { - keywords: [ "stationery", "writing", "write" ], - char: "\ud83d\udd8b", - fitzpatrick_scale: false, - category: "objects" - }, - black_nib: { - keywords: [ "pen", "stationery", "writing", "write" ], - char: "\u2712\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - memo: { - keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ], - char: "\ud83d\udcdd", - fitzpatrick_scale: false, - category: "objects" - }, - pencil2: { - keywords: [ "stationery", "write", "paper", "writing", "school", "study" ], - char: "\u270f\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - crayon: { - keywords: [ "drawing", "creativity" ], - char: "\ud83d\udd8d", - fitzpatrick_scale: false, - category: "objects" - }, - paintbrush: { - keywords: [ "drawing", "creativity", "art" ], - char: "\ud83d\udd8c", - fitzpatrick_scale: false, - category: "objects" - }, - mag: { - keywords: [ "search", "zoom", "find", "detective" ], - char: "\ud83d\udd0d", - fitzpatrick_scale: false, - category: "objects" - }, - mag_right: { - keywords: [ "search", "zoom", "find", "detective" ], - char: "\ud83d\udd0e", - fitzpatrick_scale: false, - category: "objects" - }, - heart: { - keywords: [ "love", "like", "valentines" ], - char: "\u2764\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - orange_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: "\ud83e\udde1", - fitzpatrick_scale: false, - category: "symbols" - }, - yellow_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: "\ud83d\udc9b", - fitzpatrick_scale: false, - category: "symbols" - }, - green_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: "\ud83d\udc9a", - fitzpatrick_scale: false, - category: "symbols" - }, - blue_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: "\ud83d\udc99", - fitzpatrick_scale: false, - category: "symbols" - }, - purple_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: "\ud83d\udc9c", - fitzpatrick_scale: false, - category: "symbols" - }, - black_heart: { - keywords: [ "evil" ], - char: "\ud83d\udda4", - fitzpatrick_scale: false, - category: "symbols" - }, - broken_heart: { - keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ], - char: "\ud83d\udc94", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_heart_exclamation: { - keywords: [ "decoration", "love" ], - char: "\u2763", - fitzpatrick_scale: false, - category: "symbols" - }, - two_hearts: { - keywords: [ "love", "like", "affection", "valentines", "heart" ], - char: "\ud83d\udc95", - fitzpatrick_scale: false, - category: "symbols" - }, - revolving_hearts: { - keywords: [ "love", "like", "affection", "valentines" ], - char: "\ud83d\udc9e", - fitzpatrick_scale: false, - category: "symbols" - }, - heartbeat: { - keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ], - char: "\ud83d\udc93", - fitzpatrick_scale: false, - category: "symbols" - }, - heartpulse: { - keywords: [ "like", "love", "affection", "valentines", "pink" ], - char: "\ud83d\udc97", - fitzpatrick_scale: false, - category: "symbols" - }, - sparkling_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - char: "\ud83d\udc96", - fitzpatrick_scale: false, - category: "symbols" - }, - cupid: { - keywords: [ "love", "like", "heart", "affection", "valentines" ], - char: "\ud83d\udc98", - fitzpatrick_scale: false, - category: "symbols" - }, - gift_heart: { - keywords: [ "love", "valentines" ], - char: "\ud83d\udc9d", - fitzpatrick_scale: false, - category: "symbols" - }, - heart_decoration: { - keywords: [ "purple-square", "love", "like" ], - char: "\ud83d\udc9f", - fitzpatrick_scale: false, - category: "symbols" - }, - peace_symbol: { - keywords: [ "hippie" ], - char: "\u262e", - fitzpatrick_scale: false, - category: "symbols" - }, - latin_cross: { - keywords: [ "christianity" ], - char: "\u271d", - fitzpatrick_scale: false, - category: "symbols" - }, - star_and_crescent: { - keywords: [ "islam" ], - char: "\u262a", - fitzpatrick_scale: false, - category: "symbols" - }, - om: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - char: "\ud83d\udd49", - fitzpatrick_scale: false, - category: "symbols" - }, - wheel_of_dharma: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - char: "\u2638", - fitzpatrick_scale: false, - category: "symbols" - }, - star_of_david: { - keywords: [ "judaism" ], - char: "\u2721", - fitzpatrick_scale: false, - category: "symbols" - }, - six_pointed_star: { - keywords: [ "purple-square", "religion", "jewish", "hexagram" ], - char: "\ud83d\udd2f", - fitzpatrick_scale: false, - category: "symbols" - }, - menorah: { - keywords: [ "hanukkah", "candles", "jewish" ], - char: "\ud83d\udd4e", - fitzpatrick_scale: false, - category: "symbols" - }, - yin_yang: { - keywords: [ "balance" ], - char: "\u262f", - fitzpatrick_scale: false, - category: "symbols" - }, - orthodox_cross: { - keywords: [ "suppedaneum", "religion" ], - char: "\u2626", - fitzpatrick_scale: false, - category: "symbols" - }, - place_of_worship: { - keywords: [ "religion", "church", "temple", "prayer" ], - char: "\ud83d\uded0", - fitzpatrick_scale: false, - category: "symbols" - }, - ophiuchus: { - keywords: [ "sign", "purple-square", "constellation", "astrology" ], - char: "\u26ce", - fitzpatrick_scale: false, - category: "symbols" - }, - aries: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: "\u2648", - fitzpatrick_scale: false, - category: "symbols" - }, - taurus: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - char: "\u2649", - fitzpatrick_scale: false, - category: "symbols" - }, - gemini: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: "\u264a", - fitzpatrick_scale: false, - category: "symbols" - }, - cancer: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: "\u264b", - fitzpatrick_scale: false, - category: "symbols" - }, - leo: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: "\u264c", - fitzpatrick_scale: false, - category: "symbols" - }, - virgo: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: "\u264d", - fitzpatrick_scale: false, - category: "symbols" - }, - libra: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: "\u264e", - fitzpatrick_scale: false, - category: "symbols" - }, - scorpius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ], - char: "\u264f", - fitzpatrick_scale: false, - category: "symbols" - }, - sagittarius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: "\u2650", - fitzpatrick_scale: false, - category: "symbols" - }, - capricorn: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - char: "\u2651", - fitzpatrick_scale: false, - category: "symbols" - }, - aquarius: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - char: "\u2652", - fitzpatrick_scale: false, - category: "symbols" - }, - pisces: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - char: "\u2653", - fitzpatrick_scale: false, - category: "symbols" - }, - id: { - keywords: [ "purple-square", "words" ], - char: "\ud83c\udd94", - fitzpatrick_scale: false, - category: "symbols" - }, - atom_symbol: { - keywords: [ "science", "physics", "chemistry" ], - char: "\u269b", - fitzpatrick_scale: false, - category: "symbols" - }, - u7a7a: { - keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ], - char: "\ud83c\ude33", - fitzpatrick_scale: false, - category: "symbols" - }, - u5272: { - keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ], - char: "\ud83c\ude39", - fitzpatrick_scale: false, - category: "symbols" - }, - radioactive: { - keywords: [ "nuclear", "danger" ], - char: "\u2622", - fitzpatrick_scale: false, - category: "symbols" - }, - biohazard: { - keywords: [ "danger" ], - char: "\u2623", - fitzpatrick_scale: false, - category: "symbols" - }, - mobile_phone_off: { - keywords: [ "mute", "orange-square", "silence", "quiet" ], - char: "\ud83d\udcf4", - fitzpatrick_scale: false, - category: "symbols" - }, - vibration_mode: { - keywords: [ "orange-square", "phone" ], - char: "\ud83d\udcf3", - fitzpatrick_scale: false, - category: "symbols" - }, - u6709: { - keywords: [ "orange-square", "chinese", "have", "kanji" ], - char: "\ud83c\ude36", - fitzpatrick_scale: false, - category: "symbols" - }, - u7121: { - keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ], - char: "\ud83c\ude1a", - fitzpatrick_scale: false, - category: "symbols" - }, - u7533: { - keywords: [ "chinese", "japanese", "kanji", "orange-square" ], - char: "\ud83c\ude38", - fitzpatrick_scale: false, - category: "symbols" - }, - u55b6: { - keywords: [ "japanese", "opening hours", "orange-square" ], - char: "\ud83c\ude3a", - fitzpatrick_scale: false, - category: "symbols" - }, - u6708: { - keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ], - char: "\ud83c\ude37\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - eight_pointed_black_star: { - keywords: [ "orange-square", "shape", "polygon" ], - char: "\u2734\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - vs: { - keywords: [ "words", "orange-square" ], - char: "\ud83c\udd9a", - fitzpatrick_scale: false, - category: "symbols" - }, - accept: { - keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ], - char: "\ud83c\ude51", - fitzpatrick_scale: false, - category: "symbols" - }, - white_flower: { - keywords: [ "japanese", "spring" ], - char: "\ud83d\udcae", - fitzpatrick_scale: false, - category: "symbols" - }, - ideograph_advantage: { - keywords: [ "chinese", "kanji", "obtain", "get", "circle" ], - char: "\ud83c\ude50", - fitzpatrick_scale: false, - category: "symbols" - }, - secret: { - keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ], - char: "\u3299\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - congratulations: { - keywords: [ "chinese", "kanji", "japanese", "red-circle" ], - char: "\u3297\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - u5408: { - keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ], - char: "\ud83c\ude34", - fitzpatrick_scale: false, - category: "symbols" - }, - u6e80: { - keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ], - char: "\ud83c\ude35", - fitzpatrick_scale: false, - category: "symbols" - }, - u7981: { - keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ], - char: "\ud83c\ude32", - fitzpatrick_scale: false, - category: "symbols" - }, - a: { - keywords: [ "red-square", "alphabet", "letter" ], - char: "\ud83c\udd70\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - b: { - keywords: [ "red-square", "alphabet", "letter" ], - char: "\ud83c\udd71\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - ab: { - keywords: [ "red-square", "alphabet" ], - char: "\ud83c\udd8e", - fitzpatrick_scale: false, - category: "symbols" - }, - cl: { - keywords: [ "alphabet", "words", "red-square" ], - char: "\ud83c\udd91", - fitzpatrick_scale: false, - category: "symbols" - }, - o2: { - keywords: [ "alphabet", "red-square", "letter" ], - char: "\ud83c\udd7e\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - sos: { - keywords: [ "help", "red-square", "words", "emergency", "911" ], - char: "\ud83c\udd98", - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry: { - keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ], - char: "\u26d4", - fitzpatrick_scale: false, - category: "symbols" - }, - name_badge: { - keywords: [ "fire", "forbid" ], - char: "\ud83d\udcdb", - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry_sign: { - keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ], - char: "\ud83d\udeab", - fitzpatrick_scale: false, - category: "symbols" - }, - x: { - keywords: [ "no", "delete", "remove", "cancel", "red" ], - char: "\u274c", - fitzpatrick_scale: false, - category: "symbols" - }, - o: { - keywords: [ "circle", "round" ], - char: "\u2b55", - fitzpatrick_scale: false, - category: "symbols" - }, - stop_sign: { - keywords: [ "stop" ], - char: "\ud83d\uded1", - fitzpatrick_scale: false, - category: "symbols" - }, - anger: { - keywords: [ "angry", "mad" ], - char: "\ud83d\udca2", - fitzpatrick_scale: false, - category: "symbols" - }, - hotsprings: { - keywords: [ "bath", "warm", "relax" ], - char: "\u2668\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - no_pedestrians: { - keywords: [ "rules", "crossing", "walking", "circle" ], - char: "\ud83d\udeb7", - fitzpatrick_scale: false, - category: "symbols" - }, - do_not_litter: { - keywords: [ "trash", "bin", "garbage", "circle" ], - char: "\ud83d\udeaf", - fitzpatrick_scale: false, - category: "symbols" - }, - no_bicycles: { - keywords: [ "cyclist", "prohibited", "circle" ], - char: "\ud83d\udeb3", - fitzpatrick_scale: false, - category: "symbols" - }, - "non-potable_water": { - keywords: [ "drink", "faucet", "tap", "circle" ], - char: "\ud83d\udeb1", - fitzpatrick_scale: false, - category: "symbols" - }, - underage: { - keywords: [ "18", "drink", "pub", "night", "minor", "circle" ], - char: "\ud83d\udd1e", - fitzpatrick_scale: false, - category: "symbols" - }, - no_mobile_phones: { - keywords: [ "iphone", "mute", "circle" ], - char: "\ud83d\udcf5", - fitzpatrick_scale: false, - category: "symbols" - }, - exclamation: { - keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ], - char: "\u2757", - fitzpatrick_scale: false, - category: "symbols" - }, - grey_exclamation: { - keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ], - char: "\u2755", - fitzpatrick_scale: false, - category: "symbols" - }, - question: { - keywords: [ "doubt", "confused" ], - char: "\u2753", - fitzpatrick_scale: false, - category: "symbols" - }, - grey_question: { - keywords: [ "doubts", "gray", "huh", "confused" ], - char: "\u2754", - fitzpatrick_scale: false, - category: "symbols" - }, - bangbang: { - keywords: [ "exclamation", "surprise" ], - char: "\u203c\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - interrobang: { - keywords: [ "wat", "punctuation", "surprise" ], - char: "\u2049\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - 100: { - keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ], - char: "\ud83d\udcaf", - fitzpatrick_scale: false, - category: "symbols" - }, - low_brightness: { - keywords: [ "sun", "afternoon", "warm", "summer" ], - char: "\ud83d\udd05", - fitzpatrick_scale: false, - category: "symbols" - }, - high_brightness: { - keywords: [ "sun", "light" ], - char: "\ud83d\udd06", - fitzpatrick_scale: false, - category: "symbols" - }, - trident: { - keywords: [ "weapon", "spear" ], - char: "\ud83d\udd31", - fitzpatrick_scale: false, - category: "symbols" - }, - fleur_de_lis: { - keywords: [ "decorative", "scout" ], - char: "\u269c", - fitzpatrick_scale: false, - category: "symbols" - }, - part_alternation_mark: { - keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ], - char: "\u303d\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - warning: { - keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ], - char: "\u26a0\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - children_crossing: { - keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ], - char: "\ud83d\udeb8", - fitzpatrick_scale: false, - category: "symbols" - }, - beginner: { - keywords: [ "badge", "shield" ], - char: "\ud83d\udd30", - fitzpatrick_scale: false, - category: "symbols" - }, - recycle: { - keywords: [ "arrow", "environment", "garbage", "trash" ], - char: "\u267b\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - u6307: { - keywords: [ "chinese", "point", "green-square", "kanji" ], - char: "\ud83c\ude2f", - fitzpatrick_scale: false, - category: "symbols" - }, - chart: { - keywords: [ "green-square", "graph", "presentation", "stats" ], - char: "\ud83d\udcb9", - fitzpatrick_scale: false, - category: "symbols" - }, - sparkle: { - keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ], - char: "\u2747\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - eight_spoked_asterisk: { - keywords: [ "star", "sparkle", "green-square" ], - char: "\u2733\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - negative_squared_cross_mark: { - keywords: [ "x", "green-square", "no", "deny" ], - char: "\u274e", - fitzpatrick_scale: false, - category: "symbols" - }, - white_check_mark: { - keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ], - char: "\u2705", - fitzpatrick_scale: false, - category: "symbols" - }, - diamond_shape_with_a_dot_inside: { - keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ], - char: "\ud83d\udca0", - fitzpatrick_scale: false, - category: "symbols" - }, - cyclone: { - keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ], - char: "\ud83c\udf00", - fitzpatrick_scale: false, - category: "symbols" - }, - loop: { - keywords: [ "tape", "cassette" ], - char: "\u27bf", - fitzpatrick_scale: false, - category: "symbols" - }, - globe_with_meridians: { - keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ], - char: "\ud83c\udf10", - fitzpatrick_scale: false, - category: "symbols" - }, - m: { - keywords: [ "alphabet", "blue-circle", "letter" ], - char: "\u24c2\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - atm: { - keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ], - char: "\ud83c\udfe7", - fitzpatrick_scale: false, - category: "symbols" - }, - sa: { - keywords: [ "japanese", "blue-square", "katakana" ], - char: "\ud83c\ude02\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - passport_control: { - keywords: [ "custom", "blue-square" ], - char: "\ud83d\udec2", - fitzpatrick_scale: false, - category: "symbols" - }, - customs: { - keywords: [ "passport", "border", "blue-square" ], - char: "\ud83d\udec3", - fitzpatrick_scale: false, - category: "symbols" - }, - baggage_claim: { - keywords: [ "blue-square", "airport", "transport" ], - char: "\ud83d\udec4", - fitzpatrick_scale: false, - category: "symbols" - }, - left_luggage: { - keywords: [ "blue-square", "travel" ], - char: "\ud83d\udec5", - fitzpatrick_scale: false, - category: "symbols" - }, - wheelchair: { - keywords: [ "blue-square", "disabled", "a11y", "accessibility" ], - char: "\u267f", - fitzpatrick_scale: false, - category: "symbols" - }, - no_smoking: { - keywords: [ "cigarette", "blue-square", "smell", "smoke" ], - char: "\ud83d\udead", - fitzpatrick_scale: false, - category: "symbols" - }, - wc: { - keywords: [ "toilet", "restroom", "blue-square" ], - char: "\ud83d\udebe", - fitzpatrick_scale: false, - category: "symbols" - }, - parking: { - keywords: [ "cars", "blue-square", "alphabet", "letter" ], - char: "\ud83c\udd7f\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - potable_water: { - keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ], - char: "\ud83d\udeb0", - fitzpatrick_scale: false, - category: "symbols" - }, - mens: { - keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ], - char: "\ud83d\udeb9", - fitzpatrick_scale: false, - category: "symbols" - }, - womens: { - keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ], - char: "\ud83d\udeba", - fitzpatrick_scale: false, - category: "symbols" - }, - baby_symbol: { - keywords: [ "orange-square", "child" ], - char: "\ud83d\udebc", - fitzpatrick_scale: false, - category: "symbols" - }, - restroom: { - keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ], - char: "\ud83d\udebb", - fitzpatrick_scale: false, - category: "symbols" - }, - put_litter_in_its_place: { - keywords: [ "blue-square", "sign", "human", "info" ], - char: "\ud83d\udeae", - fitzpatrick_scale: false, - category: "symbols" - }, - cinema: { - keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ], - char: "\ud83c\udfa6", - fitzpatrick_scale: false, - category: "symbols" - }, - signal_strength: { - keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ], - char: "\ud83d\udcf6", - fitzpatrick_scale: false, - category: "symbols" - }, - koko: { - keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ], - char: "\ud83c\ude01", - fitzpatrick_scale: false, - category: "symbols" - }, - ng: { - keywords: [ "blue-square", "words", "shape", "icon" ], - char: "\ud83c\udd96", - fitzpatrick_scale: false, - category: "symbols" - }, - ok: { - keywords: [ "good", "agree", "yes", "blue-square" ], - char: "\ud83c\udd97", - fitzpatrick_scale: false, - category: "symbols" - }, - up: { - keywords: [ "blue-square", "above", "high" ], - char: "\ud83c\udd99", - fitzpatrick_scale: false, - category: "symbols" - }, - cool: { - keywords: [ "words", "blue-square" ], - char: "\ud83c\udd92", - fitzpatrick_scale: false, - category: "symbols" - }, - new: { - keywords: [ "blue-square", "words", "start" ], - char: "\ud83c\udd95", - fitzpatrick_scale: false, - category: "symbols" - }, - free: { - keywords: [ "blue-square", "words" ], - char: "\ud83c\udd93", - fitzpatrick_scale: false, - category: "symbols" - }, - zero: { - keywords: [ "0", "numbers", "blue-square", "null" ], - char: "0\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - one: { - keywords: [ "blue-square", "numbers", "1" ], - char: "1\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - two: { - keywords: [ "numbers", "2", "prime", "blue-square" ], - char: "2\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - three: { - keywords: [ "3", "numbers", "prime", "blue-square" ], - char: "3\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - four: { - keywords: [ "4", "numbers", "blue-square" ], - char: "4\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - five: { - keywords: [ "5", "numbers", "blue-square", "prime" ], - char: "5\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - six: { - keywords: [ "6", "numbers", "blue-square" ], - char: "6\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - seven: { - keywords: [ "7", "numbers", "blue-square", "prime" ], - char: "7\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - eight: { - keywords: [ "8", "blue-square", "numbers" ], - char: "8\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - nine: { - keywords: [ "blue-square", "numbers", "9" ], - char: "9\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - keycap_ten: { - keywords: [ "numbers", "10", "blue-square" ], - char: "\ud83d\udd1f", - fitzpatrick_scale: false, - category: "symbols" - }, - asterisk: { - keywords: [ "star", "keycap" ], - char: "*\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - 1234: { - keywords: [ "numbers", "blue-square" ], - char: "\ud83d\udd22", - fitzpatrick_scale: false, - category: "symbols" - }, - eject_button: { - keywords: [ "blue-square" ], - char: "\u23cf\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_forward: { - keywords: [ "blue-square", "right", "direction", "play" ], - char: "\u25b6\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - pause_button: { - keywords: [ "pause", "blue-square" ], - char: "\u23f8", - fitzpatrick_scale: false, - category: "symbols" - }, - next_track_button: { - keywords: [ "forward", "next", "blue-square" ], - char: "\u23ed", - fitzpatrick_scale: false, - category: "symbols" - }, - stop_button: { - keywords: [ "blue-square" ], - char: "\u23f9", - fitzpatrick_scale: false, - category: "symbols" - }, - record_button: { - keywords: [ "blue-square" ], - char: "\u23fa", - fitzpatrick_scale: false, - category: "symbols" - }, - play_or_pause_button: { - keywords: [ "blue-square", "play", "pause" ], - char: "\u23ef", - fitzpatrick_scale: false, - category: "symbols" - }, - previous_track_button: { - keywords: [ "backward" ], - char: "\u23ee", - fitzpatrick_scale: false, - category: "symbols" - }, - fast_forward: { - keywords: [ "blue-square", "play", "speed", "continue" ], - char: "\u23e9", - fitzpatrick_scale: false, - category: "symbols" - }, - rewind: { - keywords: [ "play", "blue-square" ], - char: "\u23ea", - fitzpatrick_scale: false, - category: "symbols" - }, - twisted_rightwards_arrows: { - keywords: [ "blue-square", "shuffle", "music", "random" ], - char: "\ud83d\udd00", - fitzpatrick_scale: false, - category: "symbols" - }, - repeat: { - keywords: [ "loop", "record" ], - char: "\ud83d\udd01", - fitzpatrick_scale: false, - category: "symbols" - }, - repeat_one: { - keywords: [ "blue-square", "loop" ], - char: "\ud83d\udd02", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_backward: { - keywords: [ "blue-square", "left", "direction" ], - char: "\u25c0\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_small: { - keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ], - char: "\ud83d\udd3c", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down_small: { - keywords: [ "blue-square", "direction", "bottom" ], - char: "\ud83d\udd3d", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_up: { - keywords: [ "blue-square", "direction", "top" ], - char: "\u23eb", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_down: { - keywords: [ "blue-square", "direction", "bottom" ], - char: "\u23ec", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right: { - keywords: [ "blue-square", "next" ], - char: "\u27a1\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_left: { - keywords: [ "blue-square", "previous", "back" ], - char: "\u2b05\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up: { - keywords: [ "blue-square", "continue", "top", "direction" ], - char: "\u2b06\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down: { - keywords: [ "blue-square", "direction", "bottom" ], - char: "\u2b07\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_right: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ], - char: "\u2197\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_right: { - keywords: [ "blue-square", "direction", "diagonal", "southeast" ], - char: "\u2198\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_left: { - keywords: [ "blue-square", "direction", "diagonal", "southwest" ], - char: "\u2199\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_left: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ], - char: "\u2196\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_down: { - keywords: [ "blue-square", "direction", "way", "vertical" ], - char: "\u2195\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - left_right_arrow: { - keywords: [ "shape", "direction", "horizontal", "sideways" ], - char: "\u2194\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_counterclockwise: { - keywords: [ "blue-square", "sync", "cycle" ], - char: "\ud83d\udd04", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right_hook: { - keywords: [ "blue-square", "return", "rotate", "direction" ], - char: "\u21aa\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - leftwards_arrow_with_hook: { - keywords: [ "back", "return", "blue-square", "undo", "enter" ], - char: "\u21a9\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_up: { - keywords: [ "blue-square", "direction", "top" ], - char: "\u2934\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_down: { - keywords: [ "blue-square", "direction", "bottom" ], - char: "\u2935\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - hash: { - keywords: [ "symbol", "blue-square", "twitter" ], - char: "#\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - information_source: { - keywords: [ "blue-square", "alphabet", "letter" ], - char: "\u2139\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - abc: { - keywords: [ "blue-square", "alphabet" ], - char: "\ud83d\udd24", - fitzpatrick_scale: false, - category: "symbols" - }, - abcd: { - keywords: [ "blue-square", "alphabet" ], - char: "\ud83d\udd21", - fitzpatrick_scale: false, - category: "symbols" - }, - capital_abcd: { - keywords: [ "alphabet", "words", "blue-square" ], - char: "\ud83d\udd20", - fitzpatrick_scale: false, - category: "symbols" - }, - symbols: { - keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ], - char: "\ud83d\udd23", - fitzpatrick_scale: false, - category: "symbols" - }, - musical_note: { - keywords: [ "score", "tone", "sound" ], - char: "\ud83c\udfb5", - fitzpatrick_scale: false, - category: "symbols" - }, - notes: { - keywords: [ "music", "score" ], - char: "\ud83c\udfb6", - fitzpatrick_scale: false, - category: "symbols" - }, - wavy_dash: { - keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ], - char: "\u3030\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - curly_loop: { - keywords: [ "scribble", "draw", "shape", "squiggle" ], - char: "\u27b0", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_check_mark: { - keywords: [ "ok", "nike", "answer", "yes", "tick" ], - char: "\u2714\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_clockwise: { - keywords: [ "sync", "cycle", "round", "repeat" ], - char: "\ud83d\udd03", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_plus_sign: { - keywords: [ "math", "calculation", "addition", "more", "increase" ], - char: "\u2795", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_minus_sign: { - keywords: [ "math", "calculation", "subtract", "less" ], - char: "\u2796", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_division_sign: { - keywords: [ "divide", "math", "calculation" ], - char: "\u2797", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_multiplication_x: { - keywords: [ "math", "calculation" ], - char: "\u2716\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - infinity: { - keywords: [ "forever" ], - char: "\u267e", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_dollar_sign: { - keywords: [ "money", "sales", "payment", "currency", "buck" ], - char: "\ud83d\udcb2", - fitzpatrick_scale: false, - category: "symbols" - }, - currency_exchange: { - keywords: [ "money", "sales", "dollar", "travel" ], - char: "\ud83d\udcb1", - fitzpatrick_scale: false, - category: "symbols" - }, - copyright: { - keywords: [ "ip", "license", "circle", "law", "legal" ], - char: "\xa9\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - registered: { - keywords: [ "alphabet", "circle" ], - char: "\xae\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - tm: { - keywords: [ "trademark", "brand", "law", "legal" ], - char: "\u2122\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - end: { - keywords: [ "words", "arrow" ], - char: "\ud83d\udd1a", - fitzpatrick_scale: false, - category: "symbols" - }, - back: { - keywords: [ "arrow", "words", "return" ], - char: "\ud83d\udd19", - fitzpatrick_scale: false, - category: "symbols" - }, - on: { - keywords: [ "arrow", "words" ], - char: "\ud83d\udd1b", - fitzpatrick_scale: false, - category: "symbols" - }, - top: { - keywords: [ "words", "blue-square" ], - char: "\ud83d\udd1d", - fitzpatrick_scale: false, - category: "symbols" - }, - soon: { - keywords: [ "arrow", "words" ], - char: "\ud83d\udd1c", - fitzpatrick_scale: false, - category: "symbols" - }, - ballot_box_with_check: { - keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ], - char: "\u2611\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - radio_button: { - keywords: [ "input", "old", "music", "circle" ], - char: "\ud83d\udd18", - fitzpatrick_scale: false, - category: "symbols" - }, - white_circle: { - keywords: [ "shape", "round" ], - char: "\u26aa", - fitzpatrick_scale: false, - category: "symbols" - }, - black_circle: { - keywords: [ "shape", "button", "round" ], - char: "\u26ab", - fitzpatrick_scale: false, - category: "symbols" - }, - red_circle: { - keywords: [ "shape", "error", "danger" ], - char: "\ud83d\udd34", - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_circle: { - keywords: [ "shape", "icon", "button" ], - char: "\ud83d\udd35", - fitzpatrick_scale: false, - category: "symbols" - }, - small_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: "\ud83d\udd38", - fitzpatrick_scale: false, - category: "symbols" - }, - small_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: "\ud83d\udd39", - fitzpatrick_scale: false, - category: "symbols" - }, - large_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: "\ud83d\udd36", - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - char: "\ud83d\udd37", - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle: { - keywords: [ "shape", "direction", "up", "top" ], - char: "\ud83d\udd3a", - fitzpatrick_scale: false, - category: "symbols" - }, - black_small_square: { - keywords: [ "shape", "icon" ], - char: "\u25aa\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - white_small_square: { - keywords: [ "shape", "icon" ], - char: "\u25ab\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - black_large_square: { - keywords: [ "shape", "icon", "button" ], - char: "\u2b1b", - fitzpatrick_scale: false, - category: "symbols" - }, - white_large_square: { - keywords: [ "shape", "icon", "stone", "button" ], - char: "\u2b1c", - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle_down: { - keywords: [ "shape", "direction", "bottom" ], - char: "\ud83d\udd3b", - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_square: { - keywords: [ "shape", "button", "icon" ], - char: "\u25fc\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_square: { - keywords: [ "shape", "stone", "icon" ], - char: "\u25fb\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_small_square: { - keywords: [ "icon", "shape", "button" ], - char: "\u25fe", - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_small_square: { - keywords: [ "shape", "stone", "icon", "button" ], - char: "\u25fd", - fitzpatrick_scale: false, - category: "symbols" - }, - black_square_button: { - keywords: [ "shape", "input", "frame" ], - char: "\ud83d\udd32", - fitzpatrick_scale: false, - category: "symbols" - }, - white_square_button: { - keywords: [ "shape", "input" ], - char: "\ud83d\udd33", - fitzpatrick_scale: false, - category: "symbols" - }, - speaker: { - keywords: [ "sound", "volume", "silence", "broadcast" ], - char: "\ud83d\udd08", - fitzpatrick_scale: false, - category: "symbols" - }, - sound: { - keywords: [ "volume", "speaker", "broadcast" ], - char: "\ud83d\udd09", - fitzpatrick_scale: false, - category: "symbols" - }, - loud_sound: { - keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ], - char: "\ud83d\udd0a", - fitzpatrick_scale: false, - category: "symbols" - }, - mute: { - keywords: [ "sound", "volume", "silence", "quiet" ], - char: "\ud83d\udd07", - fitzpatrick_scale: false, - category: "symbols" - }, - mega: { - keywords: [ "sound", "speaker", "volume" ], - char: "\ud83d\udce3", - fitzpatrick_scale: false, - category: "symbols" - }, - loudspeaker: { - keywords: [ "volume", "sound" ], - char: "\ud83d\udce2", - fitzpatrick_scale: false, - category: "symbols" - }, - bell: { - keywords: [ "sound", "notification", "christmas", "xmas", "chime" ], - char: "\ud83d\udd14", - fitzpatrick_scale: false, - category: "symbols" - }, - no_bell: { - keywords: [ "sound", "volume", "mute", "quiet", "silent" ], - char: "\ud83d\udd15", - fitzpatrick_scale: false, - category: "symbols" - }, - black_joker: { - keywords: [ "poker", "cards", "game", "play", "magic" ], - char: "\ud83c\udccf", - fitzpatrick_scale: false, - category: "symbols" - }, - mahjong: { - keywords: [ "game", "play", "chinese", "kanji" ], - char: "\ud83c\udc04", - fitzpatrick_scale: false, - category: "symbols" - }, - spades: { - keywords: [ "poker", "cards", "suits", "magic" ], - char: "\u2660\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - clubs: { - keywords: [ "poker", "cards", "magic", "suits" ], - char: "\u2663\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - hearts: { - keywords: [ "poker", "cards", "magic", "suits" ], - char: "\u2665\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - diamonds: { - keywords: [ "poker", "cards", "magic", "suits" ], - char: "\u2666\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - flower_playing_cards: { - keywords: [ "game", "sunset", "red" ], - char: "\ud83c\udfb4", - fitzpatrick_scale: false, - category: "symbols" - }, - thought_balloon: { - keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ], - char: "\ud83d\udcad", - fitzpatrick_scale: false, - category: "symbols" - }, - right_anger_bubble: { - keywords: [ "caption", "speech", "thinking", "mad" ], - char: "\ud83d\uddef", - fitzpatrick_scale: false, - category: "symbols" - }, - speech_balloon: { - keywords: [ "bubble", "words", "message", "talk", "chatting" ], - char: "\ud83d\udcac", - fitzpatrick_scale: false, - category: "symbols" - }, - left_speech_bubble: { - keywords: [ "words", "message", "talk", "chatting" ], - char: "\ud83d\udde8", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd50", - fitzpatrick_scale: false, - category: "symbols" - }, - clock2: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd51", - fitzpatrick_scale: false, - category: "symbols" - }, - clock3: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd52", - fitzpatrick_scale: false, - category: "symbols" - }, - clock4: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd53", - fitzpatrick_scale: false, - category: "symbols" - }, - clock5: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd54", - fitzpatrick_scale: false, - category: "symbols" - }, - clock6: { - keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ], - char: "\ud83d\udd55", - fitzpatrick_scale: false, - category: "symbols" - }, - clock7: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd56", - fitzpatrick_scale: false, - category: "symbols" - }, - clock8: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd57", - fitzpatrick_scale: false, - category: "symbols" - }, - clock9: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd58", - fitzpatrick_scale: false, - category: "symbols" - }, - clock10: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd59", - fitzpatrick_scale: false, - category: "symbols" - }, - clock11: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd5a", - fitzpatrick_scale: false, - category: "symbols" - }, - clock12: { - keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ], - char: "\ud83d\udd5b", - fitzpatrick_scale: false, - category: "symbols" - }, - clock130: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd5c", - fitzpatrick_scale: false, - category: "symbols" - }, - clock230: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd5d", - fitzpatrick_scale: false, - category: "symbols" - }, - clock330: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd5e", - fitzpatrick_scale: false, - category: "symbols" - }, - clock430: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd5f", - fitzpatrick_scale: false, - category: "symbols" - }, - clock530: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd60", - fitzpatrick_scale: false, - category: "symbols" - }, - clock630: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd61", - fitzpatrick_scale: false, - category: "symbols" - }, - clock730: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd62", - fitzpatrick_scale: false, - category: "symbols" - }, - clock830: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd63", - fitzpatrick_scale: false, - category: "symbols" - }, - clock930: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd64", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1030: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd65", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1130: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd66", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1230: { - keywords: [ "time", "late", "early", "schedule" ], - char: "\ud83d\udd67", - fitzpatrick_scale: false, - category: "symbols" - }, - afghanistan: { - keywords: [ "af", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - aland_islands: { - keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - albania: { - keywords: [ "al", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - algeria: { - keywords: [ "dz", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde9\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - american_samoa: { - keywords: [ "american", "ws", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - andorra: { - keywords: [ "ad", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - angola: { - keywords: [ "ao", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - anguilla: { - keywords: [ "ai", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - antarctica: { - keywords: [ "aq", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - antigua_barbuda: { - keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - argentina: { - keywords: [ "ar", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - armenia: { - keywords: [ "am", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - aruba: { - keywords: [ "aw", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - australia: { - keywords: [ "au", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - austria: { - keywords: [ "at", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - azerbaijan: { - keywords: [ "az", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - bahamas: { - keywords: [ "bs", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - bahrain: { - keywords: [ "bh", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - bangladesh: { - keywords: [ "bd", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - barbados: { - keywords: [ "bb", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - belarus: { - keywords: [ "by", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - belgium: { - keywords: [ "be", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - belize: { - keywords: [ "bz", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - benin: { - keywords: [ "bj", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - bermuda: { - keywords: [ "bm", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - bhutan: { - keywords: [ "bt", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - bolivia: { - keywords: [ "bo", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - caribbean_netherlands: { - keywords: [ "bonaire", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - bosnia_herzegovina: { - keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - botswana: { - keywords: [ "bw", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - brazil: { - keywords: [ "br", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - british_indian_ocean_territory: { - keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - british_virgin_islands: { - keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfb\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - brunei: { - keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - bulgaria: { - keywords: [ "bg", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - burkina_faso: { - keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - burundi: { - keywords: [ "bi", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - cape_verde: { - keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - cambodia: { - keywords: [ "kh", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - cameroon: { - keywords: [ "cm", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - canada: { - keywords: [ "ca", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - canary_islands: { - keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - cayman_islands: { - keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - central_african_republic: { - keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - chad: { - keywords: [ "td", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - chile: { - keywords: [ "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - cn: { - keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ], - char: "\ud83c\udde8\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - christmas_island: { - keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - cocos_islands: { - keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - colombia: { - keywords: [ "co", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - comoros: { - keywords: [ "km", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - congo_brazzaville: { - keywords: [ "congo", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - congo_kinshasa: { - keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - cook_islands: { - keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - costa_rica: { - keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - croatia: { - keywords: [ "hr", "flag", "nation", "country", "banner" ], - char: "\ud83c\udded\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - cuba: { - keywords: [ "cu", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - curacao: { - keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - cyprus: { - keywords: [ "cy", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - czech_republic: { - keywords: [ "cz", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - denmark: { - keywords: [ "dk", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde9\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - djibouti: { - keywords: [ "dj", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde9\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - dominica: { - keywords: [ "dm", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde9\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - dominican_republic: { - keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde9\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - ecuador: { - keywords: [ "ec", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddea\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - egypt: { - keywords: [ "eg", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddea\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - el_salvador: { - keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - equatorial_guinea: { - keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - eritrea: { - keywords: [ "er", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddea\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - estonia: { - keywords: [ "ee", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddea\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - ethiopia: { - keywords: [ "et", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddea\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - eu: { - keywords: [ "european", "union", "flag", "banner" ], - char: "\ud83c\uddea\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - falkland_islands: { - keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddeb\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - faroe_islands: { - keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddeb\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - fiji: { - keywords: [ "fj", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddeb\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - finland: { - keywords: [ "fi", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddeb\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - fr: { - keywords: [ "banner", "flag", "nation", "france", "french", "country" ], - char: "\ud83c\uddeb\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - french_guiana: { - keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - french_polynesia: { - keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - french_southern_territories: { - keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - gabon: { - keywords: [ "ga", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - gambia: { - keywords: [ "gm", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - georgia: { - keywords: [ "ge", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - de: { - keywords: [ "german", "nation", "flag", "country", "banner" ], - char: "\ud83c\udde9\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - ghana: { - keywords: [ "gh", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - gibraltar: { - keywords: [ "gi", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - greece: { - keywords: [ "gr", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - greenland: { - keywords: [ "gl", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - grenada: { - keywords: [ "gd", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - guadeloupe: { - keywords: [ "gp", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - guam: { - keywords: [ "gu", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - guatemala: { - keywords: [ "gt", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - guernsey: { - keywords: [ "gg", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - guinea: { - keywords: [ "gn", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - guinea_bissau: { - keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - guyana: { - keywords: [ "gy", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - haiti: { - keywords: [ "ht", "flag", "nation", "country", "banner" ], - char: "\ud83c\udded\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - honduras: { - keywords: [ "hn", "flag", "nation", "country", "banner" ], - char: "\ud83c\udded\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - hong_kong: { - keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ], - char: "\ud83c\udded\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - hungary: { - keywords: [ "hu", "flag", "nation", "country", "banner" ], - char: "\ud83c\udded\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - iceland: { - keywords: [ "is", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - india: { - keywords: [ "in", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - indonesia: { - keywords: [ "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - iran: { - keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - iraq: { - keywords: [ "iq", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - ireland: { - keywords: [ "ie", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - isle_of_man: { - keywords: [ "isle", "man", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - israel: { - keywords: [ "il", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - it: { - keywords: [ "italy", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddee\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - cote_divoire: { - keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - jamaica: { - keywords: [ "jm", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddef\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - jp: { - keywords: [ "japanese", "nation", "flag", "country", "banner" ], - char: "\ud83c\uddef\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - jersey: { - keywords: [ "je", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddef\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - jordan: { - keywords: [ "jo", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddef\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - kazakhstan: { - keywords: [ "kz", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - kenya: { - keywords: [ "ke", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - kiribati: { - keywords: [ "ki", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - kosovo: { - keywords: [ "xk", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfd\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - kuwait: { - keywords: [ "kw", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - kyrgyzstan: { - keywords: [ "kg", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - laos: { - keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - latvia: { - keywords: [ "lv", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - lebanon: { - keywords: [ "lb", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - lesotho: { - keywords: [ "ls", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - liberia: { - keywords: [ "lr", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - libya: { - keywords: [ "ly", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - liechtenstein: { - keywords: [ "li", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - lithuania: { - keywords: [ "lt", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - luxembourg: { - keywords: [ "lu", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - macau: { - keywords: [ "macao", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - macedonia: { - keywords: [ "macedonia,", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - madagascar: { - keywords: [ "mg", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - malawi: { - keywords: [ "mw", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - malaysia: { - keywords: [ "my", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - maldives: { - keywords: [ "mv", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - mali: { - keywords: [ "ml", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - malta: { - keywords: [ "mt", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - marshall_islands: { - keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - martinique: { - keywords: [ "mq", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - mauritania: { - keywords: [ "mr", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - mauritius: { - keywords: [ "mu", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - mayotte: { - keywords: [ "yt", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfe\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - mexico: { - keywords: [ "mx", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - micronesia: { - keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddeb\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - moldova: { - keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - monaco: { - keywords: [ "mc", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - mongolia: { - keywords: [ "mn", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - montenegro: { - keywords: [ "me", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - montserrat: { - keywords: [ "ms", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - morocco: { - keywords: [ "ma", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - mozambique: { - keywords: [ "mz", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - myanmar: { - keywords: [ "mm", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - namibia: { - keywords: [ "na", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - nauru: { - keywords: [ "nr", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - nepal: { - keywords: [ "np", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - netherlands: { - keywords: [ "nl", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - new_caledonia: { - keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - new_zealand: { - keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - nicaragua: { - keywords: [ "ni", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - niger: { - keywords: [ "ne", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - nigeria: { - keywords: [ "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - niue: { - keywords: [ "nu", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - norfolk_island: { - keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - northern_mariana_islands: { - keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf2\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - north_korea: { - keywords: [ "north", "korea", "nation", "flag", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - norway: { - keywords: [ "no", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf3\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - oman: { - keywords: [ "om_symbol", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf4\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - pakistan: { - keywords: [ "pk", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - palau: { - keywords: [ "pw", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - palestinian_territories: { - keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - panama: { - keywords: [ "pa", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - papua_new_guinea: { - keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - paraguay: { - keywords: [ "py", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - peru: { - keywords: [ "pe", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - philippines: { - keywords: [ "ph", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - pitcairn_islands: { - keywords: [ "pitcairn", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - poland: { - keywords: [ "pl", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - portugal: { - keywords: [ "pt", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - puerto_rico: { - keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - qatar: { - keywords: [ "qa", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf6\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - reunion: { - keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf7\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - romania: { - keywords: [ "ro", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf7\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - ru: { - keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf7\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - rwanda: { - keywords: [ "rw", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf7\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - st_barthelemy: { - keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde7\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - st_helena: { - keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - st_kitts_nevis: { - keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - st_lucia: { - keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - st_pierre_miquelon: { - keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf5\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - st_vincent_grenadines: { - keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfb\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - samoa: { - keywords: [ "ws", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfc\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - san_marino: { - keywords: [ "san", "marino", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - sao_tome_principe: { - keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - saudi_arabia: { - keywords: [ "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - senegal: { - keywords: [ "sn", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - serbia: { - keywords: [ "rs", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf7\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - seychelles: { - keywords: [ "sc", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - sierra_leone: { - keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - singapore: { - keywords: [ "sg", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - sint_maarten: { - keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - slovakia: { - keywords: [ "sk", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - slovenia: { - keywords: [ "si", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - solomon_islands: { - keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - somalia: { - keywords: [ "so", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - south_africa: { - keywords: [ "south", "africa", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddff\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - south_georgia_south_sandwich_islands: { - keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddec\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - kr: { - keywords: [ "south", "korea", "nation", "flag", "country", "banner" ], - char: "\ud83c\uddf0\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - south_sudan: { - keywords: [ "south", "sd", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - es: { - keywords: [ "spain", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddea\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - sri_lanka: { - keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf1\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - sudan: { - keywords: [ "sd", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - suriname: { - keywords: [ "sr", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - swaziland: { - keywords: [ "sz", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - sweden: { - keywords: [ "se", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - switzerland: { - keywords: [ "ch", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde8\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - syria: { - keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf8\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - taiwan: { - keywords: [ "tw", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - tajikistan: { - keywords: [ "tj", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - tanzania: { - keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - thailand: { - keywords: [ "th", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - timor_leste: { - keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - togo: { - keywords: [ "tg", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - tokelau: { - keywords: [ "tk", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - tonga: { - keywords: [ "to", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - trinidad_tobago: { - keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - tunisia: { - keywords: [ "tn", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - tr: { - keywords: [ "turkey", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - turkmenistan: { - keywords: [ "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - turks_caicos_islands: { - keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - tuvalu: { - keywords: [ "flag", "nation", "country", "banner" ], - char: "\ud83c\uddf9\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - uganda: { - keywords: [ "ug", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfa\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - ukraine: { - keywords: [ "ua", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfa\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - united_arab_emirates: { - keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ], - char: "\ud83c\udde6\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - uk: { - keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ], - char: "\ud83c\uddec\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - england: { - keywords: [ "flag", "english" ], - char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f", - fitzpatrick_scale: false, - category: "flags" - }, - scotland: { - keywords: [ "flag", "scottish" ], - char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f", - fitzpatrick_scale: false, - category: "flags" - }, - wales: { - keywords: [ "flag", "welsh" ], - char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f", - fitzpatrick_scale: false, - category: "flags" - }, - us: { - keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfa\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - us_virgin_islands: { - keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfb\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - uruguay: { - keywords: [ "uy", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfa\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - uzbekistan: { - keywords: [ "uz", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfa\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - vanuatu: { - keywords: [ "vu", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfb\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - vatican_city: { - keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfb\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - venezuela: { - keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfb\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - vietnam: { - keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfb\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - wallis_futuna: { - keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfc\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - western_sahara: { - keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddea\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - yemen: { - keywords: [ "ye", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddfe\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - zambia: { - keywords: [ "zm", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddff\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - zimbabwe: { - keywords: [ "zw", "flag", "nation", "country", "banner" ], - char: "\ud83c\uddff\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - united_nations: { - keywords: [ "un", "flag", "banner" ], - char: "\ud83c\uddfa\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - pirate_flag: { - keywords: [ "skull", "crossbones", "flag", "banner" ], - char: "\ud83c\udff4\u200d\u2620\ufe0f", - fitzpatrick_scale: false, - category: "flags" - } -}); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/emoticons/js/emojis.min.js b/lib/web/tiny_mce_5/plugins/emoticons/js/emojis.min.js deleted file mode 100644 index 42cea9ab402c4..0000000000000 --- a/lib/web/tiny_mce_5/plugins/emoticons/js/emojis.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// Source: npm package: emojilib, file:emojis.json -window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],char:"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],char:"\ud83e\udd73",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],char:"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],char:"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],char:"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],char:"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],char:"\ud83e\udd70",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],char:"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],char:"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],char:"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],char:"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],char:"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],char:"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],char:"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],char:"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],char:"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],char:"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],char:"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],char:"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],char:"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],char:"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],char:"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],char:"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],char:"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],char:"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],char:"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],char:"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],char:"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],char:"\ud83e\udd7a",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],char:"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],char:"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],char:"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],char:"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],char:"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],char:"\ud83e\udd75",fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],char:"\ud83e\udd76",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],char:"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],char:"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],char:"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],char:"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],char:"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],char:"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],char:"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],char:"\ud83e\udd74",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],char:"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],char:"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],char:"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],char:"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],char:"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],char:"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],char:"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],char:"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],char:"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],char:"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],char:"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],char:"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],char:"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],char:"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],char:"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],char:"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],char:"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],char:"\ud83e\uddb6",fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],char:"\ud83e\uddb5",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],char:"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],char:"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],char:"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],char:"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],char:"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],char:"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],char:"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],char:"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],char:"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],char:"\ud83e\uddb7",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],char:"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],char:"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],char:"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],char:"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],char:"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],char:"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],char:"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],char:"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],char:"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],char:"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],char:"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],char:"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],char:"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],char:"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],char:"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],char:"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],char:"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],char:"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],char:"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],char:"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],char:"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],char:"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],char:"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],char:"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],char:"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],char:"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],char:"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],char:"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],char:"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],char:"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],char:"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],char:"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],char:"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],char:"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],char:"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],char:"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],char:"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],char:"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],char:"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],char:"\ud83e\uddb8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],char:"\ud83e\uddb8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],char:"\ud83e\uddb9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],char:"\ud83e\uddb9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],char:"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],char:"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],char:"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],char:"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],char:"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],char:"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],char:"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],char:"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],char:"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],char:"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],char:"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],char:"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],char:"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],char:"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],char:"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],char:"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],char:"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],char:"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],char:"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],char:"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],char:"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],char:"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],char:"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],char:"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],char:"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],char:"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],char:"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],char:"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],char:"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],char:"\ud83e\udd26\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],char:"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],char:"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],char:"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],char:"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],char:"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],char:"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],char:"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],char:"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],char:"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],char:"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],char:"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],char:"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],char:"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],char:"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],char:"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],char:"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],char:"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],char:"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],char:"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],char:"\ud83e\uddf6",fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],char:"\ud83e\uddf5",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],char:"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],char:"\ud83e\udd7c",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],char:"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],char:"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],char:"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],char:"\ud83e\udd7f",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],char:"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],char:"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],char:"\ud83e\udd7e",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],char:"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],char:"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],char:"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],char:"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],char:"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],char:"\ud83e\uddf3",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],char:"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],char:"\ud83e\udd7d",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],char:"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],char:"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],char:"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],char:"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],char:"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],char:"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],char:"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],char:"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],char:"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],char:"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],char:"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],char:"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],char:"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],char:"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],char:"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],char:"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],char:"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],char:"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],char:"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],char:"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],char:"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],char:"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],char:"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],char:"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],char:"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],char:"\ud83e\udd9d",fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],char:"\ud83e\udd99",fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],char:"\ud83e\udd9b",fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],char:"\ud83e\udd98",fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],char:"\ud83e\udda1",fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],char:"\ud83e\udda2",fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],char:"\ud83e\udd9a",fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],char:"\ud83e\udd9c",fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],char:"\ud83e\udd9e",fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],char:"\ud83e\udd9f",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],char:"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],char:"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],char:"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],char:"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],char:"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],char:"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],char:"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],char:"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],char:"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],char:"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],char:"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],char:"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],char:"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],char:"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],char:"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],char:"\ud83e\udd6d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],char:"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],char:"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],char:"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],char:"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],char:"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],char:"\ud83e\udd6c",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],char:"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],char:"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],char:"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],char:"\ud83e\udd6f",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],char:"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],char:"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],char:"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],char:"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],char:"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],char:"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],char:"\ud83e\uddb4",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],char:"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],char:"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],char:"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],char:"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],char:"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],char:"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],char:"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],char:"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],char:"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],char:"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],char:"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],char:"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],char:"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],char:"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],char:"\ud83e\uddc1",fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],char:"\ud83e\udd6e",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],char:"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],char:"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],char:"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],char:"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],char:"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],char:"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],char:"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],char:"\ud83e\uddc2",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],char:"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],char:"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],char:"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],char:"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],char:"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],char:"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],char:"\u26be",fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],char:"\ud83e\udd4e",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],char:"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],char:"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],char:"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],char:"\ud83e\udd4f",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],char:"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],char:"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],char:"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],char:"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],char:"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],char:"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],char:"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],char:"\ud83e\udd4d",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],char:"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],char:"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],char:"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],char:"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],char:"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],char:"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],char:"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],char:"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],char:"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],char:"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],char:"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],char:"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],char:"\ud83d\udef9",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],char:"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],char:"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],char:"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],char:"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],char:"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],char:"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],char:"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],char:"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],char:"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],char:"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],char:"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],char:"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],char:"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],char:"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],char:"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],char:"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],char:"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],char:"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],char:"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],char:"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],char:"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],char:"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],char:"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],char:"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],char:"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],char:"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],char:"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],char:"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],char:"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],char:"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],char:"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],char:"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],char:"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],char:"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],char:"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],char:"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],char:"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],char:"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],char:"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],char:"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],char:"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],char:"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],char:"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],char:"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],char:"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],char:"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],char:"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],char:"\ud83e\udde9",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],char:"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],char:"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],char:"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],char:"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],char:"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],char:"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],char:"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],char:"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],char:"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],char:"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],char:"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],char:"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],char:"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],char:"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],char:"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],char:"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],char:"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],char:"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],char:"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],char:"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],char:"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],char:"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],char:"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],char:"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],char:"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],char:"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],char:"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],char:"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],char:"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],char:"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],char:"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],char:"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],char:"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],char:"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],char:"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],char:"\ud83e\udded",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],char:"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],char:"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],char:"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],char:"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],char:"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],char:"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],char:"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],char:"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],char:"\ud83e\uddef",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],char:"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],char:"\u2696",fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],char:"\ud83e\uddf0",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],char:"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],char:"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],char:"\u2699",fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],char:"\ud83e\uddf1",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],char:"\u26d3",fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],char:"\ud83e\uddf2",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],char:"\ud83e\udde8",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],char:"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],char:"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],char:"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],char:"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],char:"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],char:"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],char:"\ud83e\uddff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],char:"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],char:"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],char:"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],char:"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],char:"\ud83e\uddec",fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],char:"\ud83e\udda0",fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],char:"\ud83e\uddeb",fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],char:"\ud83e\uddea",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],char:"\ud83e\uddf9",fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],char:"\ud83e\uddfa",fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],char:"\ud83e\uddfb",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],char:"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],char:"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],char:"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],char:"\ud83e\uddfc",fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],char:"\ud83e\uddfd",fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],char:"\ud83e\uddf4",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],char:"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],char:"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],char:"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],char:"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],char:"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],char:"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],char:"\ud83e\uddf8",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],char:"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],char:"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],char:"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],char:"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],char:"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],char:"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],char:"\ud83e\udde7",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],char:"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],char:"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],char:"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],char:"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],char:"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],char:"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],char:"\ud83e\uddfe",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],char:"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],char:"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],char:"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],char:"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],char:"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],char:"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],char:"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],char:"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],char:"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],char:"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],char:"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],char:"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],char:"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],char:"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],char:"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],char:"\ud83e\uddf7",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],char:"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],char:"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],char:"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],char:"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],char:"\ud83e\uddee",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],char:"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],char:"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],char:"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],char:"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],char:"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],char:"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],char:"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],char:"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],char:"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],char:"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],char:"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],char:"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],char:"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],char:"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],char:"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],char:"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],char:"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],char:"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],char:"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],char:"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],char:"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],char:"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],char:"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],char:"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],char:"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],char:"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],char:"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],char:"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],char:"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],char:"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],char:"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],char:"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],char:"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],char:"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],char:"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],char:"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],char:"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],char:"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],char:"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],char:"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],char:"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},new:{keywords:["blue-square","words","start"],char:"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],char:"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],char:"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],char:"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],char:"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],char:"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],char:"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],char:"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],char:"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],char:"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],char:"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],char:"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],char:"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],char:"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],char:"\u267e",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],char:"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],char:"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],char:"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],char:"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],char:"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],char:"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],char:"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],char:"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],char:"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],char:"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],char:"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],char:"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],char:"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],char:"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],char:"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],char:"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],char:"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],char:"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],char:"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],char:"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],char:"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],char:"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],char:"\ud83c\uddfa\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],char:"\ud83c\udff4\u200d\u2620\ufe0f",fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/emoticons/plugin.min.js b/lib/web/tiny_mce_5/plugins/emoticons/plugin.min.js deleted file mode 100644 index 2bd1779736b8d..0000000000000 --- a/lib/web/tiny_mce_5/plugins/emoticons/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function r(){}function i(t){return function(){return t}}function t(t){return t}function n(){return c}var m,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=i(!1),a=i(!(m=null)),c={fold:function(t,n){return t()},isSome:l,isNone:a,getOr:t,getOrThunk:o,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:o,map:n,each:r,bind:n,exists:l,forall:a,filter:function(){return c},toArray:function(){return[]},toString:i("none()")};function o(t){return t()}function g(t){var n=t;return{get:function(){return n},set:function(t){n=t}}}function d(t,n){for(var e=k(t),o=0,r=e.length;o<r;o++){var i=e[o];n(t[i],i)}}function h(t,n){return j.call(t,n)}function s(){var t,n,e=(t=r,n=g(O.none()),{clear:function(){o(),n.set(O.none())},isSet:function(){return n.get().isSome()},get:function(){return n.get()},set:function(t){o(),n.set(O.some(t))}});function o(){return n.get().each(t)}return C(C({},e),{on:function(t){return e.get().each(t)}})}function f(t,n){return-1!==t.indexOf(n)}function v(i,r,t){var a=s(),c=s(),f=i.getParam("emoticons_images_url","https://twemoji.maxcdn.com/v/13.0.1/72x72/","string");i.on("init",function(){_.load(t,r).then(function(t){var n,e,o,l,s,r=(n=i.getParam("emoticons_append",{},"object"),e=function(t){return C({keywords:[],category:"user"},t)},A(n,function(t,n){return{k:n,v:e(t)}}));o=w(t,r),l={},s=[],d(o,function(t,n){var e,o,r,i,a,c={title:n,keywords:t.keywords,char:(i=(r=t).char).length>=(a="<img").length&&i.substr(0,0+a.length)===a?r.char.replace(/src="([^"]+)"/,function(t,n){return'src="'+f+n+'"'}):r.char,category:h(e=D,o=t.category)?e[o]:o},u=void 0!==l[c.category]?l[c.category]:[];l[c.category]=u.concat([c]),s.push(c)}),a.set(l),c.set(s)},function(t){console.log("Failed to load emoticons: "+t),a.set({}),c.set([])})});function e(){return c.get().getOr([])}function u(){return a.isSet()&&c.isSet()}return{listCategories:function(){return[P].concat(k(a.get().getOr({})))},hasLoaded:u,waitForLoad:function(){return u()?x.resolve(!0):new x(function(t,n){var e=15,o=T.setInterval(function(){u()?(T.clearInterval(o),t(!0)):--e<0&&(console.log("Could not load emojis from url: "+r),T.clearInterval(o),n(!1))},100)})},listAll:e,listCategory:function(n){return n===P?e():a.get().bind(function(t){return O.from(t[n])}).getOr([])}}}function y(t,n,e){for(var o,r,i=[],a=n.toLowerCase(),c=e.fold(function(){return l},function(n){return function(t){return n<=t}}),u=0;u<t.length&&(0!==n.length&&(o=t[u],r=a,!f(o.title.toLowerCase(),r)&&!function(t){for(var n=0,e=t.length;n<e;n++)if(f(t[n].toLowerCase(),r))return 1}(o.keywords))||(i.push({value:t[u].char,text:t[u].title,icon:t[u].char}),!c(i.length)));u++);return i}function p(o,i){var e,r,t={pattern:"",results:y(i.listAll(),"",O.some(300))},a=g(P),c=(e=function(t){var n,e=(n=t).getData(),o=a.get(),r=y(i.listCategory(o),e[S],o===P?O.some(300):O.none());n.setData({results:r})},r=null,{cancel:u,throttle:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];u(),r=setTimeout(function(){r=null,e.apply(null,t)},200)}});function u(){m===r||(clearTimeout(r),r=null)}function n(){return{title:"Emoticons",size:"normal",body:{type:"tabpanel",tabs:function(t){for(var n=t.length,e=new Array(n),o=0;o<n;o++){var r=t[o];e[o]={title:r,name:r,items:[l,s]}}return e}(i.listCategories())},initialData:t,onTabChange:function(t,n){a.set(n.newTabName),c.throttle(t)},onChange:c.throttle,onAction:function(t,n){var e;"results"===n.name&&(e=n.value,o.insertContent(e),t.close())},buttons:[{type:"cancel",text:"Close",primary:!0}]}}var l={label:"Search",type:"input",name:S},s={type:"collection",name:"results"},f=o.windowManager.open(n());f.focus(S),i.hasLoaded()||(f.block("Loading emoticons..."),i.waitForLoad().then(function(){f.redial(n()),c.throttle(f),f.focus(S),f.unblock()}).catch(function(t){f.redial({title:"Emoticons",body:{type:"panel",items:[{type:"alertbanner",level:"error",icon:"warning",text:"<p>Could not load emoticons</p>"}]},buttons:[{type:"cancel",text:"Close",primary:!0}],initialData:{pattern:"",results:[]}}),f.focus(S),f.unblock()}))}function b(t){t.on("PreInit",function(){t.parser.addAttributeFilter("data-emoticon",function(t){!function(t){for(var n,e=0,o=t.length;e<o;e++)(n=t[e]).attr("data-mce-resize","false"),n.attr("data-mce-placeholder","1")}(t)})})}function w(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(0===t.length)throw new Error("Can't merge zero objects");for(var e={},o=0;o<t.length;o++){var r,i=t[o];for(r in i)h(i,r)&&(e[r]=(e[r],i[r]))}return e}var u=function(e){function t(){return r}function n(t){return t(e)}var o=i(e),r={fold:function(t,n){return n(e)},isSome:a,isNone:l,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:t,orThunk:t,map:function(t){return u(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?r:c},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return r},O={some:u,none:n,from:function(t){return null==t?c:u(t)}},C=function(){return(C=Object.assign||function(t){for(var n,e=1,o=arguments.length;e<o;e++)for(var r in n=arguments[e])Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);return t}).apply(this,arguments)},k=Object.keys,j=Object.hasOwnProperty,A=function(t,o){var r={};return d(t,function(t,n){var e=o(t,n);r[e.k]=e.v}),r},_=tinymce.util.Tools.resolve("tinymce.Resource"),T=tinymce.util.Tools.resolve("tinymce.util.Delay"),x=tinymce.util.Tools.resolve("tinymce.util.Promise"),P="All",D={symbols:"Symbols",people:"People",animals_and_nature:"Animals and Nature",food_and_drink:"Food and Drink",activity:"Activity",travel_and_places:"Travel and Places",objects:"Objects",flags:"Flags",user:"User Defined"},S="pattern";e.add("emoticons",function(t,n){var e,o,r,i,a,c,u,l,s=(o=n,r=(e=t).getParam("emoticons_database","emojis","string"),e.getParam("emoticons_database_url",o+"/js/"+r+e.suffix+".js","string")),f=t.getParam("emoticons_database_id","tinymce.plugins.emoticons","string"),m=v(t,s,f);function g(){return c.execCommand("mceEmoticons")}a=m,(i=t).addCommand("mceEmoticons",function(){return p(i,a)}),(c=t).ui.registry.addButton("emoticons",{tooltip:"Emoticons",icon:"emoji",onAction:g}),c.ui.registry.addMenuItem("emoticons",{text:"Emoticons...",icon:"emoji",onAction:g}),l=m,(u=t).ui.registry.addAutocompleter("emoticons",{ch:":",columns:"auto",minChars:2,fetch:function(t,n){return l.waitForLoad().then(function(){return y(l.listAll(),t,O.some(n))})},onAction:function(t,n,e){u.selection.setRng(n),u.insertContent(e),t.hide()}}),b(t)})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/fullpage/plugin.min.js b/lib/web/tiny_mce_5/plugins/fullpage/plugin.min.js deleted file mode 100644 index 9a7ae61f48ed6..0000000000000 --- a/lib/web/tiny_mce_5/plugins/fullpage/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function i(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function _(e){return e.getParam("fullpage_hide_in_source_view")}function b(e){return e.getParam("fullpage_default_encoding")}function x(e){return e.getParam("fullpage_default_font_family")}function k(e){return e.getParam("fullpage_default_font_size")}function C(e,t){return n({validate:!1,root_name:"#document"},e.schema).parse(t,{format:"xhtml"})}function c(u,m){u.addCommand("mceFullPageProperties",function(){var l,i,o,e,t,n,r,a,c,s;function d(e,t){return e.attr(t)||""}t=l=u,n=(i=m).get(),c=C(t,n),(s={}).fontface=x(t),s.fontsize=k(t),7===(r=c.firstChild).type&&(s.xml_pi=!0,(a=/encoding="([^"]+)"/.exec(r.value))&&(s.docencoding=a[1])),(r=c.getAll("#doctype")[0])&&(s.doctype="<!DOCTYPE"+r.value+">"),(r=c.getAll("title")[0])&&r.firstChild&&(s.title=r.firstChild.value),w.each(c.getAll("meta"),function(e){var t,n=e.attr("name"),l=e.attr("http-equiv");n?s[n.toLowerCase()]=e.attr("content"):"Content-Type"===l&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")))&&(s.docencoding=t[1])}),(r=c.getAll("html")[0])&&(s.langcode=d(r,"lang")||d(r,"xml:lang")),s.stylesheets=[],w.each(c.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&s.stylesheets.push(e.attr("href"))}),(r=c.getAll("body")[0])&&(s.langdir=d(r,"dir"),s.style=d(r,"style"),s.visited_color=d(r,"vlink"),s.link_color=d(r,"link"),s.active_color=d(r,"alink")),o=s,e=g(g({},{title:"",keywords:"",description:"",robots:"",author:"",docencoding:""}),o),l.windowManager.open({title:"Metadata and Document Properties",size:"normal",body:{type:"panel",items:[{name:"title",type:"input",label:"Title"},{name:"keywords",type:"input",label:"Keywords"},{name:"description",type:"input",label:"Description"},{name:"robots",type:"input",label:"Robots"},{name:"author",type:"input",label:"Author"},{name:"docencoding",type:"input",label:"Encoding"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:e,onSubmit:function(e){var t=e.getData(),n=function(e,o,t){function n(e,t,n){e.attr(t,n||void 0)}function r(e){s.firstChild?s.insert(e,s.firstChild):s.append(e)}var a,l,i=e.dom,c=C(e,t),s=c.getAll("head")[0];s||(a=c.getAll("html")[0],s=new f("head",1),a.firstChild?a.insert(s,a.firstChild,!0):a.append(s)),a=c.firstChild,o.xml_pi?(l='version="1.0"',o.docencoding&&(l+=' encoding="'+o.docencoding+'"'),7!==a.type&&(a=new f("xml",7),c.insert(a,c.firstChild,!0)),a.value=l):a&&7===a.type&&a.remove(),a=c.getAll("#doctype")[0],o.doctype?(a||(a=new f("#doctype",10),o.xml_pi?c.insert(a,c.firstChild):r(a)),a.value=o.doctype.substring(9,o.doctype.length-1)):a&&a.remove(),a=null,w.each(c.getAll("meta"),function(e){"Content-Type"===e.attr("http-equiv")&&(a=e)}),o.docencoding?(a||((a=new f("meta",1)).attr("http-equiv","Content-Type"),a.shortEnded=!0,r(a)),a.attr("content","text/html; charset="+o.docencoding)):a&&a.remove(),a=c.getAll("title")[0],o.title?(a?a.empty():r(a=new f("title",1)),a.append(new f("#text",3)).value=o.title):a&&a.remove(),w.each("keywords,description,author,copyright,robots".split(","),function(e){for(var t,n=c.getAll("meta"),l=o[e],i=0;i<n.length;i++)if((t=n[i]).attr("name")===e)return void(l?t.attr("content",l):t.remove());l&&((a=new f("meta",1)).attr("name",e),a.attr("content",l),a.shortEnded=!0,r(a))});var d={};w.each(c.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&(d[e.attr("href")]=e)}),w.each(o.stylesheets,function(e){d[e]||((a=new f("link",1)).attr({rel:"stylesheet",text:"text/css",href:e}),a.shortEnded=!0,r(a)),delete d[e]}),w.each(d,function(e){e.remove()}),(a=c.getAll("body")[0])&&(n(a,"dir",o.langdir),n(a,"style",o.style),n(a,"vlink",o.visited_color),n(a,"link",o.link_color),n(a,"alink",o.active_color),i.setAttribs(e.getBody(),{style:o.style,dir:o.dir,vLink:o.visited_color,link:o.link_color,aLink:o.active_color})),(a=c.getAll("html")[0])&&(n(a,"lang",o.langcode),n(a,"xml:lang",o.langcode)),s.firstChild||s.remove();var u=p({validate:!1,indent:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(c);return u.substring(0,u.indexOf("</body>"))}(l,w.extend(o,t),i.get());i.set(n),e.close()}})})}function A(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})}function s(e,t,n,l){var i,o,r,a,c,s,d,u,m,g,f,p,h,y="",v=e.dom;l.selection||(a=e.getParam("protect"),c=l.content,w.each(a,function(e){c=c.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})}),r=c,"raw"===l.format&&t.get()||l.source_view&&_(e)||(-1!==(i=(r=(r=0!==r.length||l.source_view?r:w.trim(t.get())+"\n"+w.trim(r)+"\n"+w.trim(n.get())).replace(/<(\/?)BODY/gi,"<$1body")).indexOf("<body"))?(i=r.indexOf(">",i),t.set(A(r.substring(0,i+1))),-1===(o=r.indexOf("</body",i))&&(o=r.length),l.content=w.trim(r.substring(i+1,o)),n.set(A(r.substring(o)))):(t.set((h=p="",(g=e).getParam("fullpage_default_xml_pi")&&(p+='<?xml version="1.0" encoding="'+(b(g)||"ISO-8859-1")+'" ?>\n'),p+=g.getParam("fullpage_default_doctype","<!DOCTYPE html>"),p+="\n<html>\n<head>\n",(f=g.getParam("fullpage_default_title"))&&(p+="<title>"+f+"\n"),(f=b(g))&&(p+='\n'),(f=x(g))&&(h+="font-family: "+f+";"),(f=k(g))&&(h+="font-size: "+f+";"),(f=g.getParam("fullpage_default_text_color"))&&(h+="color: "+f+";"),p+=" \n\n")),n.set("\n\n")),s=C(e,t.get()),P(s.getAll("style"),function(e){e.firstChild&&(y+=e.firstChild.value)}),(d=s.getAll("body")[0])&&v.setAttribs(e.getBody(),{style:d.attr("style")||"",dir:d.attr("dir")||"",vLink:d.attr("vlink")||"",link:d.attr("link")||"",aLink:d.attr("alink")||""}),v.remove("fullpage_styles"),u=e.getDoc().getElementsByTagName("head")[0],y&&v.add(u,"style",{id:"fullpage_styles"}).appendChild(document.createTextNode(y)),m={},w.each(u.getElementsByTagName("link"),function(e){"stylesheet"===e.rel&&e.getAttribute("data-mce-fullpage")&&(m[e.href]=e)}),w.each(s.getAll("link"),function(e){var t=e.attr("href");if(!t)return!0;m[t]||"stylesheet"!==e.attr("rel")||v.add(u,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),delete m[t]}),w.each(m,function(e){e.parentNode.removeChild(e)})))}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=function(){return(g=Object.assign||function(e){for(var t,n=1,l=arguments.length;n/g,function(e,t){return unescape(t)}))})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/fullscreen/plugin.min.js b/lib/web/tiny_mce_5/plugins/fullscreen/plugin.min.js deleted file mode 100644 index bb226baf1d91f..0000000000000 --- a/lib/web/tiny_mce_5/plugins/fullscreen/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function a(e){var n=e;return{get:function(){return n},set:function(e){n=e}}}function e(t){return function(e){return r=typeof(n=e),(null===n?"null":"object"==r&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":r)===t;var n,r}}function n(n){return function(e){return typeof e===n}}function c(e){return!(null==e)}function s(){}function y(e){return function(){return e}}function r(e){return e}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=e("string"),d=e("array"),o=n("boolean"),h=n("function"),i=n("number");function u(){return m}var v=y(!1),f=y(!0),m={fold:function(e,n){return e()},isSome:v,isNone:f,getOr:r,getOrThunk:g,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:y(null),getOrUndefined:y(void 0),or:r,orThunk:g,map:u,each:s,bind:u,exists:v,forall:f,filter:function(){return m},toArray:function(){return[]},toString:y("none()")};function g(e){return e()}function p(e){function n(){return r.get().each(e)}var r=a(A.none());return{clear:function(){n(),r.set(A.none())},isSet:function(){return r.get().isSome()},get:function(){return r.get()},set:function(e){n(),r.set(A.some(e))}}}function w(){return p(function(e){return e.unbind()})}function C(e,n){for(var r=e.length,t=new Array(r),o=0;o'+e.name+""}var t,o,n,i,r,s,l,c;return{name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:[null==e?"":'
'+(s=b((i=w((n=o=e).plugins),void 0===(r=n.getParam("forced_plugins"))?i:m(i,function(e){return!(-1"+(t=o,n=e,function(e,t,n){for(var a=0,o=e.length;a";var t,n}),l=s.length,c=s.join(""),"

"+T.translate(["Plugins installed ({0}):",l])+"

    "+c+"
")+"
",(t=b(m(d,function(e){var t=e.key,n=e.type;return"autocorrect"!==t&&"premium"===n}),function(e){return"
  • "+T.translate(e.name)+"
  • "}).join(""),'

    '+T.translate("Premium plugins:")+"

    ")].join("")}]}}function l(d,y){return function(){var e,t,n,a,o,i,r,s,l,c,u,m=(e=d,t=y,r={name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:b(x,function(e){var t=b(e.shortcuts,f).join(" or ");return[e.action,t]})}]},s={name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:"

    Editor UI keyboard navigation

    \n\n

    Activating keyboard navigation

    \n\n

    The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:

    \n
      \n
    • Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)
    • \n
    • Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)
    • \n
    • Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)
    • \n
    \n\n

    Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.

    \n\n

    Moving between UI sections

    \n\n

    When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:

    \n
      \n
    • the menubar
    • \n
    • each group of the toolbar
    • \n
    • the sidebar
    • \n
    • the element path in the footer
    • \n
    • the wordcount toggle button in the footer
    • \n
    • the branding link in the footer
    • \n
    • the editor resize handle in the footer
    • \n
    \n\n

    Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.

    \n\n

    Moving within UI sections

    \n\n

    Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:

    \n
      \n
    • moving between menus in the menubar
    • \n
    • moving between buttons in a toolbar group
    • \n
    • moving between items in the element path
    • \n
    \n\n

    In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.

    \n\n

    Executing buttons

    \n\n

    To execute a button, navigate the selection to the desired button and hit space or enter.

    \n\n

    Opening, navigating and closing menus

    \n\n

    When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.

    \n\n

    To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.

    \n\n

    Context toolbars and menus

    \n\n

    To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).

    \n\n

    Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.

    \n\n

    Dialog navigation

    \n\n

    There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.

    \n\n

    When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.

    \n\n

    When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.

    "}]},l=k(e),a=C.majorVersion,o=C.minorVersion,i=0===a.indexOf("@")?"X.X.X":a+"."+o,c={name:"versions",title:"Version",items:[{type:"htmlpanel",html:"

    "+T.translate(["You are using {0}",'TinyMCE '+i+""])+"

    ",presets:"document"}]},u=g(((n={})[r.name]=r,n[s.name]=s,n[l.name]=l,n[c.name]=c,n),t.get()),v.from(e.getParam("help_tabs")).fold(function(){return-1!==(n=(t=w(e=u)).indexOf("versions"))&&(t.splice(n,1),t.push("versions")),{tabs:e,names:t};var e,t,n},function(e){return t=u,n={},a=b(e,function(e){return"string"==typeof e?(A(t,e)&&(n[e]=t[e]),e):(n[e.name]=e).name}),{tabs:n,names:a};var t,n,a})),h=m.tabs,p=function(e){for(var t=[],n=function(e){t.push(e)},a=0;a")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:e}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:e})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/image/plugin.min.js b/lib/web/tiny_mce_5/plugins/image/plugin.min.js deleted file mode 100644 index 7a90a25da1d19..0000000000000 --- a/lib/web/tiny_mce_5/plugins/image/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function D(e){return!(null==e)}function l(){}function a(e){return function(){return e}}function n(e){return e}function r(){return g}var i,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=function(){return(v=Object.assign||function(e){for(var t,n=1,r=arguments.length;n'+n+"")):e.insertContent(d(e,t))}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),i="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),o="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),u="January February March April May June July August September October November December".split(" "),g=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("insertdatetime",function(e){var n,r,t,a,i,o,u,c;function m(e){return r.execCommand("mceInsertDate",!1,e)}(n=e).addCommand("mceInsertDate",function(e,t){p(n,null!=t?t:n.getParam("insertdatetime_dateformat",n.translate("%Y-%m-%d")))}),n.addCommand("mceInsertTime",function(e,t){p(n,null!=t?t:l(n))}),u=s(r=e),t=0<(o=s(i=r)).length?o[0]:l(i),a=t,c={get:function(){return a},set:function(e){a=e}},r.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===c.get()},fetch:function(e){e(g.map(u,function(e){return{type:"choiceitem",text:d(r,e),value:e}}))},onAction:function(e){m(c.get())},onItemAction:function(e,t){c.set(t),m(t)}}),r.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return g.map(u,function(e){return{type:"menuitem",text:d(r,e),onAction:(t=e,function(){c.set(t),m(t)})};var t})}})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/legacyoutput/plugin.min.js b/lib/web/tiny_mce_5/plugins/legacyoutput/plugin.min.js deleted file mode 100644 index dd8d0a23eeee5..0000000000000 --- a/lib/web/tiny_mce_5/plugins/legacyoutput/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("legacyoutput",function(e){var s,t;(t=s=e).settings.inline_styles=!1,t.getParam("fontsize_formats")||(t.settings.fontsize_formats="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t.getParam("font_formats")||(t.settings.font_formats="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),s.on("PreInit",function(){var e=s,t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=l.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),a=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all",preserve_attributes:["class","style"]},{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all",preserve_attributes:["class","style"]},{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return String(l.inArray(i,e.value)+1)}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),l.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),l.each(t.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/link/plugin.min.js b/lib/web/tiny_mce_5/plugins/link/plugin.min.js deleted file mode 100644 index 643f57ff9eba5..0000000000000 --- a/lib/web/tiny_mce_5/plugins/link/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function t(r){return function(t){return e=typeof(n=t),(null===n?"null":"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e)===r;var n,e}}function n(n){return function(t){return typeof t===n}}function h(){}function i(t){return function(){return t}}function e(t){return t}function r(t,n){return t===n}function o(){return v}var u,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK"),l=t("string"),d=t("array"),p=function(t){return u===t},f=n("boolean"),s=n("function"),m=i(!1),g=i(!(u=null)),v={fold:function(t,n){return t()},isSome:m,isNone:g,getOr:e,getOrThunk:y,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:y,map:o,each:h,bind:o,exists:m,forall:g,filter:function(){return v},toArray:function(){return[]},toString:i("none()")};function y(t){return t()}function k(t,o,i){return function(t){for(var n,e=0,r=t.length;e=e.childNodes.length?n.data.length:0}:n.previousSibling&&Me(n.previousSibling)?{container:n.previousSibling,offset:n.previousSibling.data.length}:n.nextSibling&&Me(n.nextSibling)?{container:n.nextSibling,offset:0}:{container:e,offset:t}}function We(e){var t=e.cloneRange(),n=Ve(e.startContainer,e.startOffset);t.setStart(n.container,n.offset);var r=Ve(e.endContainer,e.endOffset);return t.setEnd(r.container,r.offset),t}function Qe(e,t){var n=t||e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",qt(e,n))}function Xe(e){var t,n,r=e.selection.getSelectedBlocks();return L((t=e,n=Mt.map(r,function(e){return t.dom.getParent(e,"li,dd,dt",qt(t,e))||e}),Xt.unique(n)),Ft)}function qe(e,t){return w(e.dom.getParents(t,"ol,ul",qt(e,t)))}function ze(e,t,n){return void 0===n&&(n=r),e.exists(function(e){return n(e,t)})}function Ye(e,t,n){return e.isSome()&&t.isSome()?E.some(n(e.getOrDie(),t.getOrDie())):E.none()}function Ze(e,t,n){return e.fire("ListMutation",{action:t,element:n})}function Ge(e,t){we(e.item,t.list)}function Je(e,t){for(var n=0;ne.length?tt:et)(r,e,t)},[])).map(function(e){return e.list}).toArray()}function ft(e,t){b(L(e,it),function(e){return function(e){switch(t){case"Indent":e.depth++;break;case"Outdent":e.depth--;break;case"Flatten":e.depth=0}e.dirty=!0}(e),0})}function dt(e,t){var n,r,o,i,a,s,u,c,f,d,l,m,p,g=C((i=qe(o=r=e,o.selection.getStart()),a=L(o.selection.getSelectedBlocks(),_t),s=i.toArray().concat(a),zt(r,s)),me.fromDom),v=C(L(Xe(e),Ht),me.fromDom),h=!1;return(g.length||v.length)&&(n=e.selection.getBookmark(),c=t,b((f=g,p=C(Xe(u=e),me.fromDom),d=Ye(N(p,y(rt)),N(D(p),y(rt)),function(e,t){return{start:e,end:t}}),l=!1,m={get:function(){return l},set:function(e){l=e}},C(f,function(e){return{sourceList:e,entries:Yt(0,d,m,e)}})),function(e){ft(e.entries,c);var t,n,r=(t=u,T(function(e,t){if(0===e.length)return[];for(var n=t(e[0]),r=[],o=[],i=0,a=e.length;i"):"application/x-shockwave-flash"===n.sourcemime?(u='',n.poster&&(u+=''),u+""):-1!==n.sourcemime.indexOf("audio")?(s=n,m?m(s):'"):"script"===n.type?' "+t.getContent()+v+""}(e=n),e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}),(t=e).ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:i}),t.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:i})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/print/plugin.min.js b/lib/web/tiny_mce_5/plugins/print/plugin.min.js deleted file mode 100644 index a80e73284f407..0000000000000 --- a/lib/web/tiny_mce_5/plugins/print/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env");n.add("print",function(n){var t,i;function e(){return i.execCommand("mcePrint")}(t=n).addCommand("mcePrint",function(){r.browser.isIE()?t.getDoc().execCommand("print",!1,null):t.getWin().print()}),(i=n).ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:e}),i.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:e}),n.addShortcut("Meta+P","","mcePrint")})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/quickbars/plugin.min.js b/lib/web/tiny_mce_5/plugins/quickbars/plugin.min.js deleted file mode 100644 index d0f65eba02670..0000000000000 --- a/lib/web/tiny_mce_5/plugins/quickbars/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function n(a){a.ui.registry.addButton("quickimage",{icon:"image",tooltip:"Insert image",onAction:function(){var i=a;new s(function(n){var r=document.createElement("input");r.type="file",r.accept="image/*",r.style.position="fixed",r.style.left="0",r.style.top="0",r.style.opacity="0.001",document.body.appendChild(r),r.addEventListener("change",function(t){n(Array.prototype.slice.call(t.target.files))});var o=function(t){function e(){n([]),r.parentNode.removeChild(r)}d.os.isAndroid()&&"remove"!==t.type?f.setEditorTimeout(i,e,0):e(),i.off("focusin remove",o)};i.on("focusin remove",o),r.click()}).then(function(t){var c,n;0";for(var n=0;n<2;n++)t+="
    ";t+=""}return(t+="")+""}());var t=n.dom.select("*[data-mce-id]")[0];t.removeAttribute("data-mce-id");var e=n.dom.select("td,th",t);n.selection.setCursorLocation(e[0],0)})}})}function t(r){return function(t){return n=typeof(e=t),(null===e?"null":"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n)===r;var e,n}}function e(e){return function(t){return typeof t===e}}function i(t){return function(){return t}}function r(t){return t}function o(){return y}var u,c=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=0,s=tinymce.util.Tools.resolve("tinymce.util.Promise"),d=tinymce.util.Tools.resolve("tinymce.Env"),f=tinymce.util.Tools.resolve("tinymce.util.Delay"),a=t("string"),m=t("object"),g=t("array"),v=e("boolean"),h=e("function"),p=i(!1),b=i(!(u=void 0)),y={fold:function(t,e){return t()},isSome:p,isNone:b,getOr:r,getOrThunk:k,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:r,orThunk:k,map:o,each:function(){},bind:o,exists:p,forall:b,filter:function(){return y},toArray:function(){return[]},toString:i("none()")};function k(t){return t()}var w=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},isSome:b,isNone:p,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return w(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:y},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},T={some:w,none:o,from:function(t){return null==t?y:w(t)}};function E(t,e,n,r,o){return t(n,r)?T.some(n):h(o)&&o(n)?T.none():e(n,r,o)}function N(t,e){var n=t.dom;if(1!==n.nodeType)return!1;var r=n;if(void 0!==r.matches)return r.matches(e);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(e);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(e);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function M(t){if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}}var S={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1r?[{element:n,start:Math.max(r,e.start)-r,finish:Math.min(o,e.finish)-r,matchId:t}]:[]});return{results:e.results.concat(i),last:o}},r={results:[],last:0},x(t,function(e,t){r=n(r,e)}),r.results),function(e){return e.matchId})})}function G(e,i){b(e,function(e,o){b(e,function(e){var t=fe.fromDom(i.cloneNode(!1));M(t,"data-mce-index",o);var n,r=e.element.dom;r.length===e.finish&&0===e.start?F(e.element,t):(r.length!==e.finish&&r.splitText(e.finish),n=r.splitText(e.start),F(fe.fromDom(n),t))})})}function K(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function J(e,t,n,r){var o=e.dom.create("span",{"data-mce-bogus":1});o.className="mce-match-marker";var i,a,c,u,l,s,f,d,m,h,g=e.getBody();return he(e,t,!1),r?(c=e.dom,u=n,l=e.selection,s=o,d=l.getBookmark(),m=c.select("td[data-mce-selected],th[data-mce-selected]"),G(h=q(u,0?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g");return e.getParam("spellchecker_wordchar_pattern",t)}function p(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function r(i,r){function o(e){var t=i.getElementsByTagName("*"),n=[];e="number"==typeof e?""+e:null;for(var r=0;r=c.end?(o=u,i=c.end-l):r&&s.push(u),!r&&u.length+l>c.start&&(r=u,a=c.start-l),l+=u.length),r&&o){if(u=n({startNode:r,startNodeIndex:a,endNode:o,endNodeIndex:i,innerNodes:s,match:c.text,matchIndex:d}),l-=o.length-i,o=r=null,s=[],d++,!(c=t.shift()))break}else if(h[u.nodeName]&&!f[u.nodeName]||!u.firstChild){if(u.nextSibling){u=u.nextSibling;continue}}else if(!p(u)){u=u.firstChild;continue}for(;;){if(u.nextSibling){u=u.nextSibling;break}if(u.parentNode===e)break e;u=u.parentNode}}}(i,c,(o=e,function(e){var t=e.startNode,n=e.endNode,r=e.matchIndex,o=v.doc;if(t===n){var a=t,i=a.parentNode;0=n.length&&e.substr(t,t+n.length)===n}function Z(e,n){return-1!==e.indexOf(n)}function ee(e,n){return Q(e,n,e.length-n.length)}function ne(e){return 0=e.startCol&&o<=e.finishRow&&u>=e.startRow}function yt(e,n){return n.column>=e.startCol&&n.column+n.colspan-1<=e.finishCol&&n.row>=e.startRow&&n.row+n.rowspan-1<=e.finishRow}function Ct(e,n,t){var r=$t.findItem(e,n,ce),o=$t.findItem(e,t,ce);return r.bind(function(r){return o.map(function(e){return n=r,t=e,{startRow:Math.min(n.row,t.row),startCol:Math.min(n.column,t.column),finishRow:Math.max(n.row+n.rowspan-1,t.row+t.rowspan-1),finishCol:Math.max(n.column+n.colspan-1,t.column+t.colspan-1)};var n,t})})}function St(n,e,t){return Ct(n,e,t).map(function(e){return O($t.filterItems(n,P(wt,e)),function(e){return e.element})})}function Tt(e,n){return $t.findItem(e,n,function(e,n){return le(n,e)}).map(function(e){return e.element})}function xt(e,n,t,r,o){var u=Kt(e),i=ce(e,t)?q.some(n):Tt(u,n),c=ce(e,o)?q.some(r):Tt(u,r);return i.bind(function(n){return c.bind(function(e){return St(u,n,e)})})}function Rt(n,t){rn(n).each(function(e){e.dom.insertBefore(t.dom,n.dom)})}function Dt(e,n){cn(e).fold(function(){rn(e).each(function(e){Xt(e,n)})},function(e){Rt(e,n)})}function Ot(n,t){an(n,0).fold(function(){Xt(n,t)},function(e){n.dom.insertBefore(t.dom,e.dom)})}function At(e,n){Rt(e,n),Xt(n,e)}function kt(t,r){A(r,function(e,n){Dt(0===n?t:r[n-1],e)})}function It(n,e){A(e,function(e){Xt(n,e)})}function Bt(e){e.dom.textContent="",A(ln(e),function(e){Yt(e)})}function Mt(e){var n,t=ln(e);0=t.length-1)return q.none();var e=t[r].fold(function(){var e,n;return H((e=t.slice(0,r),(n=U.call(e,0)).reverse(),n),function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return q.some({value:e,delta:0})}),n=t[r+1].fold(function(){return H(t.slice(r+1),function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return q.some({value:e,delta:1})});return e.bind(function(t){return n.map(function(e){var n=e.delta+t.delta;return Math.abs(e.value-t.value)/n})})}(t,n))},function(e){return o(e)})}function ko(e,n,i,c){var l=yr(e),t=$t.hasColumns(e)?O($t.justColumns(e),function(e){return q.from(e.element)}):l,a=[q.some(ao.edge(n))].concat(O(ao.positions(l,n),function(e){return e.map(function(e){return e.x})})),f=p(Yn);return O(t,function(e,u){return Ao(e,u,a,f,function(e){return t=e,o=(r=He().browser).isChrome()||r.isFirefox(),!Hl(t)||o?i(e):Ao(null!=(n=l[u])?S(n):q.none(),u,a,f,function(e){return c(q.some(vr(e)))},c);var n,t,r,o},c)})}function Io(e){return e.map(function(e){return e+"px"}).getOr("")}function Bo(e,n,t){return ko(e,n,So,function(e){return e.getOrThunk(t.minCellWidth)})}function Mo(e,n,t,r,o){var u=Cr(e),i=[q.some(t.edge(n))].concat(O(t.positions(u,n),function(e){return e.map(function(e){return e.y})}));return O(u,function(e,n){return Ao(e,n,i,p(Jn),r,o)})}function Eo(e,n){return function(){return Sn(e)?n(e):parseFloat(Gn(e,"width").getOr("0"))}}function Po(r){var t=Eo(r,function(e){return parseFloat(Ro(e))}),n=Eo(r,vr);return{width:t,pixelWidth:n,getWidths:function(e,n){return t=n,ko(e,r,Co,function(e){return e.fold(function(){return t.minCellWidth()},function(e){return e/t.pixelWidth()*100})});var t},getCellDelta:function(e){return e/n()*100},singleColumnWidth:function(e,n){return[100-e]},minCellWidth:function(){return Ft()/n()*100},setElementWidth:bo,adjustTableWidth:function(e){var n=t();bo(r,n+e/100*n)},isRelative:!0,label:"percent"}}function No(t){var r=Eo(t,vr);return{width:r,pixelWidth:r,getWidths:function(e,n){return Bo(e,t,n)},getCellDelta:S,singleColumnWidth:function(e,n){return[Math.max(Ft(),e+n)-e]},minCellWidth:Ft,setElementWidth:po,adjustTableWidth:function(e){var n=r()+e;po(t,n)},isRelative:!1,label:"pixel"}}function zo(e,n){function t(e){return oe(e.element,n)}var u,r,i,c,l,a,f,s,o,m,d,g,p=fr(e),b=ct(p),h=Vl(e),v=$t.generate(b),w=(u=t,r=v.grid.columns,i=v.grid.rows,c=r,a=l=0,f=[],s=[],ae(v.access,function(e){var n,t,r,o;f.push(e),u(e)&&(s.push(e),t=(n=e.row)+e.rowspan-1,o=(r=e.column)+e.colspan-1,nt.maxRow||st.maxCol||($t.getAt(n,a,s).filter(r).isNone()?(o=f,0,u=e[a].element,i=Ve.fromTag("td"),Xt(i,Ve.fromTag("br")),(o?Xt:Ot)(u,i)):f=!0)}(b,v,w,t),o=p,m=w,d=v,g=function(e,n,t,r){if(0===r.minCol&&n.grid.columns===r.maxCol+1)return 0;var o=Bo(n,e,t),u=B(o,function(e,n){return e+n},0),i=B(o.slice(r.minCol,r.maxCol+1),function(e,n){return e+n},0)/u*t.pixelWidth()-t.pixelWidth();return t.getCellDelta(i)}(e,$t.fromTable(e),h,w),ae(d.columns,function(e){(e.columnm.maxCol)&&Yt(e.element)}),A(k(Zn(o,"tr"),function(e){return 0===e.dom.childElementCount}),Yt),m.minCol!==m.maxCol&&m.minRow!==m.maxRow||A(Zn(o,"th,td"),function(e){Wt(e,"rowspan"),Wt(e,"colspan")}),Wt(o,Gt),Wt(o,"data-snooker-col-series"),Vl(o).adjustTableWidth(g),p}function Lo(e){return"img"===Ye(e)?1:Pt(e).fold(function(){return ln(e).length},function(e){return e.length})}function _o(e){return Pt(e).filter(function(e){return 0!==e.trim().length||-1=n.column&&e<=dt(t[0])+n.column})}function Qi(e,u,n,i,c){var t,r,o,l=ht(u),a=(t=e,r=l,o=dt(u[0]),{row:gt(u).cols.length+t.row,column:w(D(o-t.column,function(e){return e+t.column}),function(n){return z(r,function(e){return e!==n})}).getOr(o-1)}),f=gt(n).rows,s=Ji(a,f,l);return function(e,n,t){if(e.row>=n.length||e.column>dt(n[0]))return Ga.error("invalid start address out of table bounds, row: "+e.row+", column: "+e.column);var r=n.slice(e.row),o=r[0].cells.slice(e.column),u=dt(t[0]),i=t.length;return Ga.value({rowDelta:r.length-i,colDelta:o.length-u})}(a,u,f).map(function(e){var n=K(K({},e),{colDelta:e.colDelta-s.length}),t=Yi(u,n,i),r=ht(t),o=Ji(a,f,r);return function(e,n,t,r,o,u){for(var i,c,l,a,f,s=e.row,m=e.column,d=s+t.length,g=m+dt(t[0])+u.length,p=L(u,x),b=s;b=n.grid.columns&&e.isLocked})}function Ac(e,n){var t=yr(e);return B(fc(n),function(e,n){return e+t[n.column].map(wr).getOr(0)},0)}function kc(t){return function(n,e){return _i(n,e).filter(function(e){return!(t?Dc:Oc)(n,e)}).map(function(e){return{details:e,pixelDelta:Ac(n,e)}})}}function Ic(t){return function(n,e){return Li(n,e).filter(function(e){return!(t?Dc:Oc)(n,e.cells)})}}function Bc(e,n){var u=$t.fromTable(e);return _i(u,n).bind(function(e){var n=e[e.length-1],t=e[0].column,r=n.column+n.colspan,o=M(O(u.all,function(e){return k(e.cells,function(e){return e.column>=t&&e.column=t&&e.column=r&&e.column=e.length-1)return qf.last(e[e.length-1]);var i=t+r,c=e[i];return o(c)?qf.middle(n,c):Uf(e,n,i,r,o)},Gf=function(e,n,t,r){return{start:e,soffset:n,finish:t,foffset:r}},$f=Lr([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Kf={before:$f.before,on:$f.on,after:$f.after,cata:function(e,n,t,r){return e.fold(n,t,r)},getStart:function(e){return e.fold(S,S,S)}},Xf=Lr([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Yf={domRange:Xf.domRange,relative:Xf.relative,exact:Xf.exact,exactFromRange:function(e){return Xf.exact(e.start,e.soffset,e.finish,e.foffset)},getWin:function(e){var n=e.match({domRange:function(e){return Ve.fromDom(e.startContainer)},relative:function(e,n){return Kf.getStart(e)},exact:function(e,n,t,r){return e}});return Ve.fromDom(tn(n).dom.defaultView)},range:Gf},Jf=function(e,n){return e.selectNodeContents(n.dom)},Qf=Lr([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function Zf(e,n,t){return n>=e.left&&n<=e.right&&t>=e.top&&t<=e.bottom}function es(t,r,e,n,o){function l(e){var n=t.dom.createRange();return n.setStart(r.dom,e),n.collapse(!0),n}var u=Et(r).length,i=function(e,n,t,r){if(0===r)return 0;if(e===t)return r-1;for(var o=t,u=1;ut.right;var n,t})})}function zs(n,t,e){var r,o=n.move(e,5),u=vm(t,n,e,o,100).getOr(o),i=u,c=t;return((r=n).point(i)>c.getInnerHeight()?q.some(r.point(i)-c.getInnerHeight()):r.point(i)<0?q.some(-r.point(i)):q.none()).fold(function(){return t.situsFromPoint(u.left,n.point(u))},function(e){return t.scrollBy(0,e),t.situsFromPoint(u.left,n.point(u)-e)})}function Ls(a,f,s,e,m){return In(e,"td,th",f).bind(function(l){return In(l,"table",f).bind(function(e){return n=e,Dn(m,function(e){return rn(e).exists(function(e){return ce(e,n)})},void 0).isSome()?(o=t=a,u=r=f,i=c=s,o.getSelection().bind(function(r){return Os(u,r.finish,r.foffset,i).fold(function(){return q.some(hi(r.finish,r.foffset))},function(e){var n=o.fromSitus(e),t=dm.verify(o,r.finish,r.foffset,n.finish,n.foffset,i.failure,u);return dm.cata(t,function(e){return q.none()},function(){return q.none()},function(e){return q.some(hi(e,0))},function(e){return q.some(hi(e,Lo(e)))})})}).bind(function(e){return ym(t,r,e.element,e.offset,c,20).map(t.fromSitus)}).bind(function(n){return In(n.finish,"td,th",f).map(function(e){return{start:l,finish:e,range:n}})})):q.none();var o,u,i,n,t,r,c})})}function _s(e,n,t,r,o,u){return He().browser.isIE()?q.none():u(r,n).orThunk(function(){return Ls(e,n,t,r,o).map(function(e){var n=e.range;return nm(q.some(rm(n.start,n.soffset,n.finish,n.foffset)),!0)})})}function Ws(e,r){return In(e,"tr",r).bind(function(t){return In(t,"table",r).bind(function(e){var n=dn(e,"tr");return ce(t,n[0])?am(sm,e,function(e){return jo(e).isSome()},r).map(function(e){var n=Lo(e);return nm(q.some(rm(e,n,e,n)),!0)}):q.none()})})}function js(e,r){return In(e,"tr",r).bind(function(t){return In(t,"table",r).bind(function(e){var n=dn(e,"tr");return ce(t,n[n.length-1])?fm(sm,e,function(e){return Wo(e).isSome()},r).map(function(e){return nm(q.some(rm(e,0,e,0)),!0)}):q.none()})})}function Fs(e,n,t,r,o,u,i){return Ls(e,t,r,o,u).bind(function(e){return om(n,t,e.start,e.finish,i)})}function Hs(e,n){return In(e,"td,th",n)}function Vs(n){return function(e){return e===n}}function qs(e){return 37<=e&&e<=40}function Us(l){return{elementFromPoint:function(e,n){return Ve.fromPoint(Ve.fromDom(l.document),e,n)},getRect:function(e){return e.dom.getBoundingClientRect()},getRangedRect:function(e,n,t,r){var o,u,i,c=Yf.exact(e,n,t,r);return i=(o=kl(l,c)).getClientRects(),0<(u=0t.left&&r.lefto.bottom?bm.retry(u):t.top===o.bottom?bm.retry(As(o,1)):Ns(e,n,o)?bm.retry(Is(u,5,0)):bm.none()},move:As,gather:xs},vm=function(t,r,o,u,i){return 0===i?q.some(u):(n=t,c=u.left,l=r.point(u),n.elementFromPoint(c,l).filter(function(e){return"table"===Ye(e)}).isSome()?(e=i-1,vm(t,r,o,r.move(u,5),e)):t.situsFromPoint(u.left,r.point(u)).bind(function(e){return e.start.fold(q.none,function(n){return Ps(t,n).bind(function(e){return r.adjuster(t,n,e,o,u).fold(q.none,function(e){return vm(t,r,o,e,i-1)})}).orThunk(function(){return q.some(u)})},q.none)}));var e,n,c,l},wm={tryUp:P(zs,{point:function(e){return e.top},adjuster:function(e,n,t,r,o){var u=ks(o,5);return Math.abs(t.top-r.top)<1||t.bottom=t.grid.columns&&(e.onLast=!0)),e},{onAny:!1,onFirst:!1,onLast:!1});return{mergeable:Fi(t,r).isSome(),unmergeable:Hi(t,r).isSome(),locked:n}})}function r(){s.set(Y(e)()),d=s.get().bind(t),A(m.get(),function(e){return e()})}function i(n){return n(),m.set(m.get().concat([n])),function(){m.set(k(m.get(),function(e){return e!==n}))}}function c(n,t){return i(function(){return s.get().fold(function(){n.setDisabled(!0)},function(e){n.setDisabled(t(e))})})}function l(n,t,r){return i(function(){return s.get().fold(function(){n.setDisabled(!0),n.setActive(!1)},function(e){n.setDisabled(t(e)),n.setActive(r(e))})})}function a(n){return d.exists(function(e){return e.locked[n]})}function f(n,t){return function(e){return l(e,function(e){return g(e.element)},function(){return o.queryCommandValue(n)===t})}}var s=Xc(q.none()),m=Xc([]),d=q.none(),g=en("caption"),p=f("mceTableRowType","header"),b=f("mceTableColType","th");return o.on("NodeChange ExecCommand TableSelectorChange",r),{onSetupTable:function(e){return c(e,function(e){return!1})},onSetupCellOrRow:function(e){return c(e,function(e){return g(e.element)})},onSetupColumn:function(n){return function(e){return c(e,function(e){return g(e.element)||a(n)})}},onSetupPasteable:function(n){return function(e){return c(e,function(e){return g(e.element)||n().isNone()})}},onSetupPasteableColumn:function(n,t){return function(e){return c(e,function(e){return g(e.element)||n().isNone()||a(t)})}},onSetupMergeable:function(e){return c(e,function(e){return n("mergeable")})},onSetupUnmergeable:function(e){return c(e,function(e){return n("unmergeable")})},resetTargets:r,onSetupTableWithCaption:function(e){return l(e,v,function(e){return rt(e.element,Zo(o)).exists(function(e){return An(e,"caption").isSome()})})},onSetupTableRowHeaders:p,onSetupTableColumnHeaders:b,targets:s.get}}Yr.add("table",function(c){var e,n,t,r,o,u,i,l,a,f,s,m,d=(e=function(){return Yo(c)},n=function(){return Jl(tu(c),Zo(c))},t=Xl.selectedSelector,{get:function(){return Ur(e(),t).fold(function(){return n().fold($r,Xr)},function(e){return Kr(e)})}}),g=Mm(c,d),p=bi(c),b=Bm(c,p.lazyResize,g),h=Ec(c,b,p.lazyWire),v=(r=Jc(),o=Jc(),{getRows:r.get,setRows:function(e){e.fold(r.clear,r.set),o.clear()},clearRows:r.clear,getColumns:o.get,setColumns:function(e){e.fold(o.clear,o.set),r.clear()},clearColumns:o.clear});return yl(c,h,0,d,v),f=h,s=d,m=Zo(a=c),ae({mceTableRowType:function(){return w(f.getTableRowType)},mceTableCellType:function(){return w(f.getTableCellType)},mceTableColType:function(){return w(f.getTableColType)}},function(e,n){return a.addQueryValueHandler(n,e)}),iu(c,d,h),function(n,e,t,r){function o(e){return function(){return n.execCommand(e)}}function u(e){n.execCommand("mceInsertTable",!1,{rows:e.numRows,columns:e.numColumns})}var i={text:"Table properties",onSetup:t.onSetupTable,onAction:o("mceTableProps")},c={text:"Delete table",icon:"table-delete-table",onSetup:t.onSetupTable,onAction:o("mceTableDelete")};n.ui.registry.addMenuItem("tableinsertrowbefore",{text:"Insert row before",icon:"table-insert-row-above",onAction:o("mceTableInsertRowBefore"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tableinsertrowafter",{text:"Insert row after",icon:"table-insert-row-after",onAction:o("mceTableInsertRowAfter"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tabledeleterow",{text:"Delete row",icon:"table-delete-row",onAction:o("mceTableDeleteRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablerowprops",{text:"Row properties",icon:"table-row-properties",onAction:o("mceTableRowProps"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablecutrow",{text:"Cut row",icon:"cut-row",onAction:o("mceTableCutRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablecopyrow",{text:"Copy row",icon:"duplicate-row",onAction:o("mceTableCopyRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablepasterowbefore",{text:"Paste row before",icon:"paste-row-before",onAction:o("mceTablePasteRowBefore"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addMenuItem("tablepasterowafter",{text:"Paste row after",icon:"paste-row-after",onAction:o("mceTablePasteRowAfter"),onSetup:t.onSetupPasteable(r.getRows)});var l={type:"nestedmenuitem",text:"Row",getSubmenuItems:C("tableinsertrowbefore tableinsertrowafter tabledeleterow tablerowprops | tablecutrow tablecopyrow tablepasterowbefore tablepasterowafter")};n.ui.registry.addMenuItem("tableinsertcolumnbefore",{text:"Insert column before",icon:"table-insert-column-before",onAction:o("mceTableInsertColBefore"),onSetup:t.onSetupColumn("onFirst")}),n.ui.registry.addMenuItem("tableinsertcolumnafter",{text:"Insert column after",icon:"table-insert-column-after",onAction:o("mceTableInsertColAfter"),onSetup:t.onSetupColumn("onLast")}),n.ui.registry.addMenuItem("tabledeletecolumn",{text:"Delete column",icon:"table-delete-column",onAction:o("mceTableDeleteCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablecutcolumn",{text:"Cut column",icon:"cut-column",onAction:o("mceTableCutCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablecopycolumn",{text:"Copy column",icon:"duplicate-column",onAction:o("mceTableCopyCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablepastecolumnbefore",{text:"Paste column before",icon:"paste-column-before",onAction:o("mceTablePasteColBefore"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onFirst")}),n.ui.registry.addMenuItem("tablepastecolumnafter",{text:"Paste column after",icon:"paste-column-after",onAction:o("mceTablePasteColAfter"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onLast")});var a={type:"nestedmenuitem",text:"Column",getSubmenuItems:C("tableinsertcolumnbefore tableinsertcolumnafter tabledeletecolumn | tablecutcolumn tablecopycolumn tablepastecolumnbefore tablepastecolumnafter")};n.ui.registry.addMenuItem("tablecellprops",{text:"Cell properties",icon:"table-cell-properties",onAction:o("mceTableCellProps"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablemergecells",{text:"Merge cells",icon:"table-merge-cells",onAction:o("mceTableMergeCells"),onSetup:t.onSetupMergeable}),n.ui.registry.addMenuItem("tablesplitcells",{text:"Split cell",icon:"table-split-cells",onAction:o("mceTableSplitCells"),onSetup:t.onSetupUnmergeable});var f={type:"nestedmenuitem",text:"Cell",getSubmenuItems:C("tablecellprops tablemergecells tablesplitcells")};!1===n.getParam("table_grid",!0,"boolean")?n.ui.registry.addMenuItem("inserttable",{text:"Table",icon:"table",onAction:o("mceInsertTable")}):n.ui.registry.addNestedMenuItem("inserttable",{text:"Table",icon:"table",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"inserttable",onAction:u}]}}),n.ui.registry.addMenuItem("inserttabledialog",{text:"Insert table",icon:"table",onAction:o("mceInsertTable")}),n.ui.registry.addMenuItem("tableprops",i),n.ui.registry.addMenuItem("deletetable",c),n.ui.registry.addNestedMenuItem("row",l),n.ui.registry.addNestedMenuItem("column",a),n.ui.registry.addNestedMenuItem("cell",f),n.ui.registry.addContextMenu("table",{update:function(){return t.resetTargets(),t.targets().fold(C(""),function(e){return"caption"===Ye(e.element)?"tableprops deletetable":"cell row column | advtablesort | tableprops deletetable"})}});var s=Ef(oi(n));0!==s.length&&n.ui.registry.addNestedMenuItem("tableclass",{icon:"table-classes",text:"Table styles",getSubmenuItems:function(){return Mf(n,e,s,"tableclass",function(e){return n.execCommand("mceTableToggleClass",!1,e)})},onSetup:t.onSetupTable});var m=Ef(ri(n));0!==m.length&&n.ui.registry.addNestedMenuItem("tablecellclass",{icon:"table-cell-classes",text:"Cell styles",getSubmenuItems:function(){return Mf(n,e,m,"tablecellclass",function(e){return n.execCommand("mceTableCellToggleClass",!1,e)})},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellvalign",{icon:"vertical-align",text:"Vertical align",getSubmenuItems:function(){return Mf(n,e,Df,"tablecellverticalalign",Zc(n,"vertical-align"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellborderwidth",{icon:"border-width",text:"Border width",getSubmenuItems:function(){return Mf(n,e,Xu(n),"tablecellborderwidth",Zc(n,"border-width"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellborderstyle",{icon:"border-style",text:"Border style",getSubmenuItems:function(){return Mf(n,e,Yu(n),"tablecellborderstyle",Zc(n,"border-style"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleMenuItem("tablecaption",{icon:"table-caption",text:"Table caption",onAction:o("mceTableToggleCaption"),onSetup:t.onSetupTableWithCaption}),n.ui.registry.addNestedMenuItem("tablecellbackgroundcolor",{icon:"cell-background-color",text:"Background color",getSubmenuItems:function(){return nl(n,si(n),"background-color")},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellbordercolor",{icon:"cell-border-color",text:"Border color",getSubmenuItems:function(){return nl(n,mi(n),"border-color")},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleMenuItem("tablerowheader",{text:"Row header",icon:"table-top-header",onAction:tl(n),onSetup:t.onSetupTableRowHeaders}),n.ui.registry.addToggleMenuItem("tablecolheader",{text:"Column header",icon:"table-left-header",onAction:rl(n),onSetup:t.onSetupTableColumnHeaders})}(c,d,g,v),function(n,e,t,r){function o(e){return function(){return n.execCommand(e)}}n.ui.registry.addMenuButton("table",{tooltip:"Table",icon:"table",fetch:function(e){return e("inserttable | cell row column | advtablesort | tableprops deletetable")}}),n.ui.registry.addButton("tableprops",{tooltip:"Table properties",onAction:o("mceTableProps"),icon:"table",onSetup:t.onSetupTable}),n.ui.registry.addButton("tabledelete",{tooltip:"Delete table",onAction:o("mceTableDelete"),icon:"table-delete-table",onSetup:t.onSetupTable}),n.ui.registry.addButton("tablecellprops",{tooltip:"Cell properties",onAction:o("mceTableCellProps"),icon:"table-cell-properties",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablemergecells",{tooltip:"Merge cells",onAction:o("mceTableMergeCells"),icon:"table-merge-cells",onSetup:t.onSetupMergeable}),n.ui.registry.addButton("tablesplitcells",{tooltip:"Split cell",onAction:o("mceTableSplitCells"),icon:"table-split-cells",onSetup:t.onSetupUnmergeable}),n.ui.registry.addButton("tableinsertrowbefore",{tooltip:"Insert row before",onAction:o("mceTableInsertRowBefore"),icon:"table-insert-row-above",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertrowafter",{tooltip:"Insert row after",onAction:o("mceTableInsertRowAfter"),icon:"table-insert-row-after",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tabledeleterow",{tooltip:"Delete row",onAction:o("mceTableDeleteRow"),icon:"table-delete-row",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablerowprops",{tooltip:"Row properties",onAction:o("mceTableRowProps"),icon:"table-row-properties",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolbefore",{tooltip:"Insert column before",onAction:o("mceTableInsertColBefore"),icon:"table-insert-column-before",onSetup:t.onSetupColumn("onFirst")}),n.ui.registry.addButton("tableinsertcolafter",{tooltip:"Insert column after",onAction:o("mceTableInsertColAfter"),icon:"table-insert-column-after",onSetup:t.onSetupColumn("onLast")}),n.ui.registry.addButton("tabledeletecol",{tooltip:"Delete column",onAction:o("mceTableDeleteCol"),icon:"table-delete-column",onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablecutrow",{tooltip:"Cut row",icon:"cut-row",onAction:o("mceTableCutRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablecopyrow",{tooltip:"Copy row",icon:"duplicate-row",onAction:o("mceTableCopyRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowbefore",{tooltip:"Paste row before",icon:"paste-row-before",onAction:o("mceTablePasteRowBefore"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addButton("tablepasterowafter",{tooltip:"Paste row after",icon:"paste-row-after",onAction:o("mceTablePasteRowAfter"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addButton("tablecutcol",{tooltip:"Cut column",icon:"cut-column",onAction:o("mceTableCutCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablecopycol",{tooltip:"Copy column",icon:"duplicate-column",onAction:o("mceTableCopyCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablepastecolbefore",{tooltip:"Paste column before",icon:"paste-column-before",onAction:o("mceTablePasteColBefore"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onFirst")}),n.ui.registry.addButton("tablepastecolafter",{tooltip:"Paste column after",icon:"paste-column-after",onAction:o("mceTablePasteColAfter"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onLast")}),n.ui.registry.addButton("tableinsertdialog",{tooltip:"Insert table",onAction:o("mceInsertTable"),icon:"table"});var u=Ef(oi(n));0!==u.length&&n.ui.registry.addMenuButton("tableclass",{icon:"table-classes",tooltip:"Table styles",fetch:el(n,e,u,"tableclass",function(e){return n.execCommand("mceTableToggleClass",!1,e)}),onSetup:t.onSetupTable});var i=Ef(ri(n));0!==i.length&&n.ui.registry.addMenuButton("tablecellclass",{icon:"table-cell-classes",tooltip:"Cell styles",fetch:el(n,e,i,"tablecellclass",function(e){return n.execCommand("mceTableCellToggleClass",!1,e)}),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellvalign",{icon:"vertical-align",tooltip:"Vertical align",fetch:el(n,e,Df,"tablecellverticalalign",Zc(n,"vertical-align")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellborderwidth",{icon:"border-width",tooltip:"Border width",fetch:el(n,e,Xu(n),"tablecellborderwidth",Zc(n,"border-width")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellborderstyle",{icon:"border-style",tooltip:"Border style",fetch:el(n,e,Yu(n),"tablecellborderstyle",Zc(n,"border-style")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleButton("tablecaption",{tooltip:"Table caption",onAction:o("mceTableToggleCaption"),icon:"table-caption",onSetup:t.onSetupTableWithCaption}),n.ui.registry.addMenuButton("tablecellbackgroundcolor",{icon:"cell-background-color",tooltip:"Background color",fetch:function(e){return e(nl(n,si(n),"background-color"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellbordercolor",{icon:"cell-border-color",tooltip:"Border color",fetch:function(e){return e(nl(n,mi(n),"border-color"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleButton("tablerowheader",{tooltip:"Row header",icon:"table-top-header",onAction:tl(n),onSetup:t.onSetupTableRowHeaders}),n.ui.registry.addToggleButton("tablecolheader",{tooltip:"Column header",icon:"table-left-header",onAction:rl(n),onSetup:t.onSetupTableColumnHeaders})}(c,d,g,v),0<(l=(i=c).getParam("table_toolbar","tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol")).length&&i.ui.registry.addContextToolbar("table",{predicate:function(e){return i.dom.is(e,"table")&&i.getBody().contains(e)},items:l,scope:"node",position:"node"}),c.on("PreInit",function(){c.serializer.addTempAttr(Xl.firstSelected),c.serializer.addTempAttr(Xl.lastSelected),c.formatter.register(Hf)}),c.getParam("table_tab_navigation",!0,"boolean")&&c.on("keydown",function(e){var n,t,r,o,u=c,i=b;(n=e).keyCode===Qs.TAB&&(t=Yo(u),r=function(e){var n=Ye(e);return ce(e,t)||y(em,n)},o=u.selection.getRng(),et(Ve.fromDom(n.shiftKey?o.startContainer:o.endContainer),r).each(function(e){n.preventDefault(),rt(e,r).each(i.clear),u.selection.collapse(n.shiftKey),(n.shiftKey?function(e,n,t){return Zs(e,n,(o=Nu,Cl(r=t,void 0).fold(function(){return qf.none()},function(e){return Uf(e.all,r,e.index,-1,o)})));var r,o}:vs)(u,r,e).each(function(e){u.selection.setRng(e)})}))}),c.on("remove",function(){p.destroy()}),{insertTable:(u=c,function(e,n,t){var r=Lc(u,n,e,t=void 0===t?{}:t,"Invalid values for insertTable - rows and columns values are required to insert a table.");return u.undoManager.add(),r}),setClipboardRows:Wc(v.setRows),getClipboardRows:_c(v.getRows),setClipboardCols:Wc(v.setColumns),getClipboardCols:_c(v.getColumns),resizeHandler:p,selectionTargets:g};function w(r){return Jl(tu(a)).bind(function(t){return rt(t,m).map(function(e){var n=ou(s,e,t);return r(e,n)})}).getOr("")}})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/template/plugin.min.js b/lib/web/tiny_mce_5/plugins/template/plugin.min.js deleted file mode 100644 index 75a965c7f0f45..0000000000000 --- a/lib/web/tiny_mce_5/plugins/template/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function o(e){return function(){return e}}function e(e){return e}function i(e){return n=typeof(t=e),"string"==(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n);var t,n}var t,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return typeof e===t};function s(e){return e.getParam("template_mdate_classes","mdate")}function l(e){return e.getParam("template_replace_values")}function m(e){return e.getParam("template_mdate_format",e.translate("%Y-%m-%d"))}function f(e,t){if((e=""+e).length")&&(o="",c=r.getParam("content_style","","string"),l=r.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"",O.each(r.contentCSS,function(e){o+='"}),c&&(o+='"),i=-1===(g=(p=r).getParam("body_class","","string")).indexOf("=")?g:(d=p).getParam("body_class","","hash")[d.id]||"",u=r.dom.encode,s=' "+a+""),x(a,r.getParam("template_preview_replace_values"))),v=[{type:"selectbox",name:"template",label:"Templates",items:T},{type:"htmlpanel",html:'

    '+t.value.description.replace(/["'<>&]/g,function(e){return(C(t=A,n=e)?P.from(t[n]):P.none()).getOr(e);var t,n})+"

    "},{label:"Preview",type:"iframe",name:"preview",sandboxed:!1}],h={template:t.text,preview:y};e.unblock(),e.redial(b(v,h)),e.focus("template")},t=M.windowManager.open(b([],{template:"",preview:""}));t.block("Loading..."),u(o[0]).then(function(e){c(t,o[0],e)}).catch(function(){c(t,o[0],""),t.disable("save"),i(t)})})}var M=function(n){function e(){return a}function t(e){return e(n)}var r=o(n),a={fold:function(e,t){return t(n)},isSome:v,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return M(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:b},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},P={some:M,none:r,from:function(e){return null==e?b:M(e)}},S=tinymce.util.Tools.resolve("tinymce.Env"),_=tinymce.util.Tools.resolve("tinymce.util.Promise"),w=Object.hasOwnProperty,C=function(e,t){return w.call(e,t)},A={'"':""","<":"<",">":">","&":"&","'":"'"};n.add("template",function(e){function t(){return n.execCommand("mceTemplate")}var n,r,a,o,c,l;(n=e).ui.registry.addButton("template",{icon:"template",tooltip:"Insert template",onAction:t}),n.ui.registry.addMenuItem("template",{icon:"template",text:"Insert template...",onAction:t}),(a=e).addCommand("mceInsertTemplate",function(r){for(var a=[],e=1;en.start.length?-1:1},(e=C.call(n,0)).sort(r),e)};var n,r,e}function B(){for(var t=[],n=0;nn.data.length))return[];for(var e=[r],o=n;o!==t&&o.parentNode;){for(var a=o.parentNode,i=0;it.data.length)?w.none():w.some({node:t,offset:e})})}function J(n,r){return H(n,r.start).bind(function(t){var o=t.node,a=t.offset;return H(n,r.end).map(function(t){var n=t.node,r=t.offset,e=document.createRange();return e.setStart(o,a),e.setEnd(n,r),e})})}function K(e,o,n){!function(t,n){if(j(t)&&t.length<=0)return w.some(I(t,0));var r=gt(ht);return w.from(r.forwards(t,0,W(t),n)).map(function(t){return I(t.container,0)})}(o,o).each(function(t){var r=t.container;yt(r,n.start.length,o).each(function(t){var n=e.createRng();n.setStart(r,0),n.setEnd(t.container,t.offset),_(e,n,function(t){return t===o})})})}function X(e,a){var i=e.dom,t=e.selection.getRng();return V(e,t).filter(function(t){var n=D(e),r=""===n&&i.is(t,"body")||i.is(t,n);return null!==t&&r}).bind(function(n){var r,e=n.textContent,t=a,o=(r=e).replace("\xa0"," ");return function(t,n,r){for(var e=0,o=t.length;e=l.length){var t=e.createRng();return t.setStart(r.container,r.offset-l.length),t.setEnd(r.container,r.offset),w.some(t)}var n=r.offset-l.length;return vt(r.container,n,a).map(function(t){var n=e.createRng();return n.setStart(t.container,t.offset),n.setEnd(r.container,r.offset),n}).filter(function(t){return t.toString()===l}).orThunk(function(){return kt(e,o,a,I(r.container,0))})})},Ot=function(l,d,m,g,p){var h=l.dom;return q(m,g,h.getRoot()).bind(function(t){var n=h.createRng();n.setStart(p,0),n.setEnd(m,g);for(var r,e=n.toString(),o=0;o=i.length&&r.substr(a,a+i.length)===i){var c=d.slice();c.splice(o,1);var s=function(a,i,u){var f=a.dom,c=f.getRoot(),s=u.pattern,l=u.position.container,d=u.position.offset;return vt(l,d-u.pattern.end.length,i).bind(function(t){var r=G(c,t.container,t.offset,l,d);if(L(s))return w.some({matches:[{pattern:s,startRng:r,endRng:r}],position:t});var n=Ot(a,u.remainingPatterns,t.container,t.offset,i),e=n.getOr({matches:[],position:t}),o=e.position;return function(t,r,n,e,o,a){if(void 0===a&&(a=!1),0!==r.start.length||a)return q(n,e,o).bind(function(n){return kt(t,r,o,n).bind(function(t){if(a){if(t.endContainer===n.container&&t.endOffset===n.offset)return w.none();if(0===n.offset&&t.endContainer.textContent.length===t.endOffset)return w.none()}return w.some(t)})});var i=t.createRng();return i.setStart(n,e),i.setEnd(n,e),w.some(i)}(f,s,o.container,o.offset,i,n.isNone()).map(function(t){var n=G(c,t.startContainer,t.startOffset,t.endContainer,t.endOffset);return{matches:e.matches.concat([{pattern:s,startRng:n,endRng:r}]),position:I(t.startContainer,t.startOffset)}})})}(l,p,{pattern:u,remainingPatterns:c,position:t});if(s.isSome())return s}}return w.none()})};t.add("textpattern",function(r){var t,n,e,o=(t=function(){var t=r.getParam("textpattern_patterns",ct,"array");if(!s(t))return B("The setting textpattern_patterns should be an array"),{inlinePatterns:[],blockPatterns:[]};var n=T(h(t,S));return v(n.errors,function(t){return B(t.message,t.pattern),0}),A(n.values)}(),n=t,{get:function(){return n},set:function(t){n=t}});return ot(r,o),e=o,{setPatterns:function(t){var n=T(h(t,S));if(0","<"+e+' contenteditable="true">'+m.DOM.encode(n)+o);for(var l=0;l";else for(var d=c;d
  • ";if(i+=''+a.title+"",u!==a.level&&u)for(d=a.level;u
  • ":"
  • ";else i+="",u||(i+="");c=a.level}return i}function f(t){var e=a(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(d(t))})}var t,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),v=tinymce.util.Tools.resolve("tinymce.util.I18n"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=(t=0,function(){return"mcetoc_"+(new Date).getTime().toString(32)+(t++).toString(32)}),g=function(n){var t,o=a(n),e=s(n),i=function(t){for(var e=[],n=1;n<=t;n++)e.push("h"+n);return e.join(",")}(1<=(t=parseInt(n.getParam("toc_depth","3"),10))&&t<=9?t:3),r=n.$(i);return r.length&&/^h[1-9]$/i.test(e)&&(r=r.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),c.map(r,function(t){return{id:t.id||l(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})};e.add("toc",function(t){var c,e,n,o,i,r;function l(){return i.execCommand("mceInsertToc")}(c=t).addCommand("mceInsertToc",function(){var t,e,n,o,i,r;o=a(t=c),i=t.$("."+o),r=t,!i.length||0'+n+"")):f(t)}),c.addCommand("mceUpdateToc",function(){f(c)}),(i=t).ui.registry.addButton("toc",{icon:"toc",tooltip:"Table of contents",onAction:l,onSetup:u(i)}),i.ui.registry.addButton("tocupdate",{icon:"reload",tooltip:"Update",onAction:function(){return i.execCommand("mceUpdateToc")}}),i.ui.registry.addMenuItem("toc",{icon:"toc",text:"Table of contents",onAction:l,onSetup:u(i)}),i.ui.registry.addContextToolbar("toc",{items:"tocupdate",predicate:(r=i,function(t){return t&&r.dom.is(t,"."+a(r))&&r.getBody().contains(t)}),scope:"node",position:"node"}),n=(e=t).$,o=a(e),e.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),e.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/visualblocks/plugin.min.js b/lib/web/tiny_mce_5/plugins/visualblocks/plugin.min.js deleted file mode 100644 index 21e2fb945cbf7..0000000000000 --- a/lib/web/tiny_mce_5/plugins/visualblocks/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function f(t,o,e){var n,i;t.dom.toggleClass(t.getBody(),"mce-visualblocks"),e.set(!e.get()),n=t,i=e.get(),n.fire("VisualBlocks",{state:i})}function g(e,n){return function(o){function t(t){return o.setActive(t.state)}return o.setActive(n.get()),e.on("VisualBlocks",t),function(){return e.off("VisualBlocks",t)}}}tinymce.util.Tools.resolve("tinymce.PluginManager").add("visualblocks",function(t,o){var e,n,i,s,c,u,l,a=(e=!1,{get:function(){return e},set:function(t){e=t}});function r(){return s.execCommand("mceVisualBlocks")}i=a,(n=t).addCommand("mceVisualBlocks",function(){f(n,0,i)}),(s=t).ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:r,onSetup:g(s,c=a)}),s.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",icon:"visualblocks",onAction:r,onSetup:g(s,c)}),l=a,(u=t).on("PreviewFormats AfterPreviewFormats",function(t){l.get()&&u.dom.toggleClass(u.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),u.on("init",function(){u.getParam("visualblocks_default_state",!1,"boolean")&&f(u,0,l)})})}(); \ No newline at end of file diff --git a/lib/web/tiny_mce_5/plugins/visualchars/plugin.min.js b/lib/web/tiny_mce_5/plugins/visualchars/plugin.min.js deleted file mode 100644 index 645c923c3330e..0000000000000 --- a/lib/web/tiny_mce_5/plugins/visualchars/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";function n(t){return function(n){return typeof n===t}}function i(n){return function(){return n}}function t(n){return n}function e(){return l}var o,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(n){return e=typeof(t=n),(null===t?"null":"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e)===o;var t,e},c=n("boolean"),a=n("number"),s=i(!(o="string")),f=i(!0),l={fold:function(n,t){return n()},isSome:s,isNone:f,getOr:t,getOrThunk:d,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:d,map:e,each:function(){},bind:e,exists:s,forall:f,filter:function(){return l},toArray:function(){return[]},toString:i("none()")};function d(n){return n()}function m(n,t){for(var e=0,o=n.length;e'+n+""}function O(n){var t=p(n);return j(n)&&void 0!==t&&_.test(t)}function C(n){return"span"===n.nodeName.toLowerCase()&&n.classList.contains("mce-nbsp-wrap")}function S(f,n){m(K(M.fromDom(n),O),function(n){var t,e,o,r,i,u=n.dom.parentNode;if(C(u))t=M.fromDom(u),e=U,T(t)?t.dom.classList.add(e):(r=e,i=w(o=t,"class").concat([r]),y(o,"class",i.join(" ")));else{for(var c,a=f.dom.encode(p(n)).replace(F,A),s=f.dom.create("div",null,a);c=s.lastChild;)f.dom.insertAfter(c,n.dom);f.dom.remove(n.dom)}})}function D(r,n){m(r.dom.select(I,n),function(n){var t,e,o;C(n)?(t=M.fromDom(n),e=U,T(t)?t.dom.classList.remove(e):k(t,e),0===(T(o=t)?o.dom.classList:w(o,"class")).length&&b(o,"class")):r.dom.remove(n,!0)})}function E(n){var t=n.getBody(),e=n.selection.getBookmark(),o=function(n,t){for(;n.parentNode;){if(n.parentNode===t)return n;n=n.parentNode}}(n.selection.getNode(),t);D(n,o=void 0!==o?o:t),S(n,o),n.selection.moveToBookmark(e)}function L(n,t){var e=n,o=t.get();e.fire("VisualChars",{state:o});var r=n.getBody();(!0===t.get()?S:D)(n,r)}function x(n,t){n.addCommand("mceVisualChars",function(){!function(n,t){t.set(!t.get());var e=n.selection.getBookmark();L(n,t),n.selection.moveToBookmark(e)}(n,t)})}function B(e,o){return function(t){function n(n){return t.setActive(n.state)}return t.setActive(o.get()),e.on("VisualChars",n),function(){return e.off("VisualChars",n)}}}"undefined"!=typeof window||Function("return this;")();function P(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var V,j=function(n){return 3===n.dom.nodeType},M={fromHtml:function(n,t){var e=(t||document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1t.length-1&&0!==e||0===n&&0===r)){var o=t[e+2];if(0!==n||2!==r&&1!==r&&12!==r||0!==o){var u=t[e-1];return(2!==n&&1!==n&&12!==r||0!==r||0!==u)&&(4!==n&&0!==n||4!==r&&0!==r)&&(3!==n&&1!==n||4!==r||4!==u)&&(4!==n||3!==r&&1!==r||4!==o)&&8!==n&&9!==n&&8!==u&&9!==u&&8!==r&&9!==r&&(5!==n||6!==r)&&(7===n||5===n||6===n||7===r||5===r||6===r||(10!==n||10!==r)&&(11!==r||0!==n&&4!==n&&10!==n&&11!==n)&&(11!==n||0!==r&&4!==r&&10!==r)&&12!==n)}}}(n,f)&&(o=e[f],!r.includeWhitespace&&W.test(o)||!r.includePunctuation&&E.test(o)||(u=f-h.length+1,"http"!==(a=e.slice(u,c=f+1).join(""))&&"https"!==a||(d=f,l=void 0,l=function(t){for(var e=d+1;e]"),new RegExp("@")],u=new RegExp("^[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]$"),c=e,a=13,W=/^\s+$/,E=u,i=function(t,e,n){n=m(m({},{includeWhitespace:!1,includePunctuation:!1}),n);for(var r=[],o=[],u=0;uli:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide-dark/content.min.css b/lib/web/tiny_mce_5/skins/ui/oxide-dark/content.min.css deleted file mode 100644 index e27b8a0204c84..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide-dark/content.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid transparent;bottom:-1px;content:'';left:-1px;mix-blend-mode:lighten;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide-dark/content.mobile.min.css b/lib/web/tiny_mce_5/skins/ui/oxide-dark/content.mobile.min.css deleted file mode 100644 index 35f7dc08bc50f..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide-dark/content.mobile.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/lib/web/tiny_mce_5/skins/ui/oxide-dark/fonts/tinymce-mobile.woff deleted file mode 100644 index 1e3be038a607cb7c2544ed8ae3d6621f77bf4c38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox .tox-statusbar__resize-handle:focus svg{background-color:#4a5562;border-radius:1px;box-shadow:0 0 0 2px #4a5562}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.mobile.min.css b/lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.mobile.min.css deleted file mode 100644 index 3a45cacf0f369..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.mobile.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.shadowdom.min.css b/lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.shadowdom.min.css deleted file mode 100644 index a0893b913e5a8..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide-dark/skin.shadowdom.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide/content.inline.min.css b/lib/web/tiny_mce_5/skins/ui/oxide/content.inline.min.css deleted file mode 100644 index b4ab9a3a56367..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide/content.inline.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide/content.min.css b/lib/web/tiny_mce_5/skins/ui/oxide/content.min.css deleted file mode 100644 index 844858d0631bb..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide/content.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide/content.mobile.min.css b/lib/web/tiny_mce_5/skins/ui/oxide/content.mobile.min.css deleted file mode 100644 index 35f7dc08bc50f..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide/content.mobile.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide/fonts/tinymce-mobile.woff b/lib/web/tiny_mce_5/skins/ui/oxide/fonts/tinymce-mobile.woff deleted file mode 100644 index 1e3be038a607cb7c2544ed8ae3d6621f77bf4c38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide/skin.mobile.min.css b/lib/web/tiny_mce_5/skins/ui/oxide/skin.mobile.min.css deleted file mode 100644 index 3a45cacf0f369..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide/skin.mobile.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/lib/web/tiny_mce_5/skins/ui/oxide/skin.shadowdom.min.css b/lib/web/tiny_mce_5/skins/ui/oxide/skin.shadowdom.min.css deleted file mode 100644 index a0893b913e5a8..0000000000000 --- a/lib/web/tiny_mce_5/skins/ui/oxide/skin.shadowdom.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} diff --git a/lib/web/tiny_mce_5/themes/mobile/theme.min.js b/lib/web/tiny_mce_5/themes/mobile/theme.min.js deleted file mode 100644 index cb0de6ffef24d..0000000000000 --- a/lib/web/tiny_mce_5/themes/mobile/theme.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.10.2 (2021-11-17) - */ -!function(){"use strict";var y=function(){return(y=Object.assign||function(n){for(var e,t=1,o=arguments.length;t "+o.toString()},function(n,e){return"state("+n+")"})}).join("\n")+"}"}}},mo=w(fo),go=(Qt=m,_t(function(n){var e=typeof n;return Qt(n)?no(n):eo("Expected type: function but got: "+e)})),po=function(n){return"Errors: \n"+Z(10<(e=n.errors).length?e.slice(0,10).concat([{path:[],getErrorInfo:w("... (only showing first ten failures)")}]):e,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()}).join("\n")+"\n\nInput object: "+Dt(n.input);var e},ho=xt,vo=function(n,e){return{tag:"custom",newKey:n,instantiator:e}},bo=[Lt("alpha"),Lt("omega")];function yo(n,e){return(t={})[n]=e,t;var t}function xo(n){return e={},M(n,function(n){e[n.key]=n.value}),e;var e}function wo(n,e,t){return void 0===t&&(t=o),n.exists(function(n){return t(n,e)})}function So(n){for(var e=[],t=function(n){e.push(n)},o=0;o="/*".length&&"/*"===n.substr(e,e+"/*".length)?n.substring(0,n.length-"/*".length):n;var e})},nr=function(t,n,l,i,e,o,r){function u(n){return Re(n,l)?n[l]():mn.none()}var c=De(e,function(n,e){return r=l,t=function(t){for(var n=[],e=1;e"}),mo()),ta=vo("schema",function(){return[Ut("preprocess")]}),oa=Yt("defaults",w({})),ra=Yt("overrides",w({})),ia=lo([Qc,Zc,na,ea,oa,ra]),ua=lo([Qc,Zc,na,oa,ra]),ca=lo([Qc,Zc,na,ea,oa,ra]),aa=lo([Qc,ta,na,Lt("unit"),ea,oa,ra]),sa=Wu(Jc.required,ia);function fa(n,e,t,o){return co(e.defaults(n,t,o),t,{uid:n.partUids[e.name]},e.overrides(n,t,o))}function la(n,e,t){return o=e,r={},i={},M(t,function(n){n.fold(function(o){r[o.pname]=Xc(!0,function(n,e,t){return o.factory.sketch(fa(n,o,e,t))})},function(n){var e=o.parts[n.name];i[n.name]=w(n.factory.sketch(fa(o,n,e[zs()]),e))},function(o){r[o.pname]=Xc(!1,function(n,e,t){return o.factory.sketch(fa(n,o,e,t))})},function(o){r[o.pname]=qc(!0,function(e,n,t){return Z(e[o.name],function(n){return o.factory.sketch(co(o.defaults(e,n,t),n,o.overrides(e,n)))})})})}),{internals:w(r),externals:w(i)};var o,r,i}function da(n,e,t){return o=mn.some(n),i=(r=e).components,s=De(t,function(n,e){return o=n,r=!1,{name:w(t=e),required:function(){return o.fold(function(n,e){return n},function(n,e){return n})},used:function(){return r},replace:function(){if(r)throw new Error("Trying to use the same placeholder more than once: "+t);return r=!0,o}};var t,o,r}),u=o,c=r,a=s,f=B(i,function(n){return Wc(u,c,n,a)}),Ee(s,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+o.getOr("none")+"\nComponents: "+JSON.stringify(r.components,null,2))}),f;var o,r,i,u,c,a,s,f}function ma(n,e,t){var o=e.partUids[t];return n.getSystem().getByUid(o).toOptional()}function ga(n,e,t){return ma(n,e,t).getOrDie("Could not find part: "+t)}function pa(o){return ho("partUids","partUids",Et(function(n){return e=n.uid,t=Z(o,Uu),xo(Z(t,function(n){return{key:n,value:e+"-"+n}}));var e,t}),mo())}function ha(n){return yo(Ls,n)}function va(o){return n=function(n){for(var e=[],t=1;t')},function(n){return Oa(''+n+"")})}function Da(e){return Hs({name:e+"-edge",overrides:function(n){return n.model.manager.edgeActions[e].fold(function(){return{}},function(o){return{events:qo([Do(Vn(),function(n,e,t){return o(n,t)},[n]),Do(Nn(),function(n,e,t){return o(n,t)},[n]),Do(Hn(),function(n,e,t){t.mouseIsDown.get()&&o(n,t)},[n])])}})}})}function Ma(n,e,t){e.store.manager.onLoad(n,e,t)}function _a(n,e,t){e.store.manager.onUnload(n,e,t)}function Ra(){var n=No(null);return tr({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function Fa(){var i=No({}),u=No({});return tr({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return _e(i.get(),n).orThunk(function(){return _e(u.get(),n)})},update:function(n){var e=i.get(),t=u.get(),o={},r={};M(n,function(e){_e(o[e.value]=e,"meta").each(function(n){_e(n,"text").each(function(n){r[n]=e})})}),i.set(y(y({},e),o)),u.set(y(y({},t),r))},clear:function(){i.set({}),u.set({})}})}function Ia(n,e,t,o){var r=e.store;t.update([o]),r.setValue(n,o),e.onSetValue(n,o)}function Va(n,e){return vf.set(n,e)}function Ba(n){return vf.get(n)}function Aa(n){var e=n.event.raw;return-1===e.type.indexOf("touch")?void 0!==e.clientX?mn.some(e).map(function(n){return yf(n.clientX,n.clientY)}):mn.none():void 0!==e.touches&&1===e.touches.length?mn.some(e.touches[0]).map(function(n){return yf(n.clientX,n.clientY)}):mn.none()}function Na(n){return n.model.minX}function Ha(n){return n.model.minY}function Pa(n){return n.model.minX-1}function za(n){return n.model.minY-1}function ja(n){return n.model.maxX}function La(n){return n.model.maxY}function $a(n){return n.model.maxX+1}function Ga(n){return n.model.maxY+1}function Ua(n,e,t){return e(n)-t(n)}function Wa(n){return Ua(n,ja,Na)}function Xa(n){return Ua(n,La,Ha)}function qa(n){return Wa(n)/2}function Ya(n){return Xa(n)/2}function Ka(n){return n.stepSize}function Ja(n){return n.snapToGrid}function Qa(n){return n.snapStart}function Za(n){return n.rounded}function ns(n,e){return void 0!==n[e+"-edge"]}function es(n){return ns(n,"left")}function ts(n){return ns(n,"right")}function os(n){return ns(n,"top")}function rs(n){return ns(n,"bottom")}function is(n){return n.model.value.get()}function us(n,e){return{x:n,y:e}}function cs(n,e){X(n,xf(),{value:e})}function as(n,e,t,o){return n'),components:[$f.parts["left-edge"](ka('
    ')),$f.parts.spectrum({dom:Oa('
    '),components:[ka('
    ')],behaviours:or([ii.config({toggleClass:ci("thumb-active")})])}),$f.parts["right-edge"](ka('
    ')),$f.parts.thumb({dom:Oa('
    '),behaviours:or([ii.config({toggleClass:ci("thumb-active")})])})],onChange:function(n,e,t){var o=i(t.x());$r(e.element,"background-color",o),r.onChange(n,e,o)},onDragStart:function(n,e){ii.on(e)},onDragEnd:function(n,e){ii.off(e)},onInit:function(n,e,t,o){var r=i(o.x());$r(e.element,"background-color",r)},stepSize:10,model:{mode:"x",minX:0,maxX:360,getInitialValue:function(){return{x:r.getInitialValue()}}},sliderBehaviours:or([Nr($f.refresh)])}))];function i(n){return n<0?"black":360'),(e={onChange:n.onChange,sizes:Xf,category:"font",getInitialValue:n.getInitialValue},r=zt("SizeSlider",Wf,e),$f.sketch({dom:{tag:"div",classes:[ci("slider-"+r.category+"-size-container"),ci("slider"),ci("slider-size-container")]},onChange:function(n,e,t){var o=t.x();0<=o&&o'),components:[ka('
    ')]}),$f.parts.thumb({dom:Oa('
    '),behaviours:or([ii.config({toggleClass:ci("thumb-active")})])})]})),ka('')];var e,r}function Ns(n){var e=void 0!==n.uid&&Re(n,"uid")?n.uid:qs("memento");return{get:function(n){return n.getSystem().getByUid(e).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(e).toOptional()},asSpec:function(){return y(y({},n),{uid:e})}}}Wu(Jc.external,ua);var Hs=Wu(Jc.optional,ca),Ps=Wu(Jc.group,aa),zs=w("entirety"),js=function(n,e){return{uiType:Yc(),owner:n,name:e}},Ls=Gu("alloy-premade"),$s=w("alloy-id-"),Gs=w("data-alloy-id"),Us=$s(),Ws=Gs(),Xs=function(n,e){Object.defineProperty(n.dom,Ws,{value:e,writable:!0})},qs=Gu,Ys=function(n){return dt(n,"uid")?n:y(y({},n),{uid:qs("uid")})},Ks=It([Lt("name"),Lt("factory"),Lt("configFields"),Yt("apis",{}),Yt("extraApis",{})]),Js=It([Lt("name"),Lt("factory"),Lt("configFields"),Lt("partFields"),Yt("apis",{}),Yt("extraApis",{})]),Qs=wa({name:"Button",factory:function(n){function t(e){return _e(n.dom,"attributes").bind(function(n){return _e(n,e)})}var e,o=(e=n.action,qo(V([e.map(function(t){return Qo(function(n,e){t(n),e.stop()})}).toArray(),Pr()]))),r=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:o,behaviours:$c(n.buttonBehaviours,[fi.config({}),jc.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==r)return{role:t("role").getOr("button")};var n=t("type").getOr("button"),e=t("role").map(function(n){return{role:n}}).getOr({});return y({type:n},e)}()},eventOrder:n.eventOrder}},configFields:[Yt("uid",void 0),Lt("dom"),Yt("components",[]),Lc("buttonBehaviours",[fi,jc]),Ut("action"),Ut("role"),Yt("eventOrder",{})]}),Zs=Ao({fields:[],name:"unselecting",active:Object.freeze({__proto__:null,events:function(){return qo([Co(Xn(),x)])},exhibit:function(){return Io({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),nf=function(n,e,t,o){return Qs.sketch({dom:Ea(n,o),action:e,buttonBehaviours:co(or([Zs.config({})]),t)})},ef=Hs({schema:[Lt("dom")],name:"label"}),tf=Da("top-left"),of=Da("top"),rf=Da("top-right"),uf=Da("right"),cf=Da("bottom-right"),af=Da("bottom"),sf=Da("bottom-left"),ff=[ef,Da("left"),uf,of,af,tf,rf,sf,cf,sa({name:"thumb",defaults:w({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:qo([_o(Vn(),n,"spectrum"),_o(Bn(),n,"spectrum"),_o(An(),n,"spectrum"),_o(Nn(),n,"spectrum"),_o(Hn(),n,"spectrum"),_o(Pn(),n,"spectrum")])}}}),sa({schema:[vo("mouseIsDown",function(){return No(!1)})],name:"spectrum",overrides:function(t){function o(e,n){return r.getValueFromEvent(n).map(function(n){return r.setValueFrom(e,t,n)})}var r=t.model.manager;return{behaviours:or([jc.config({mode:"special",onLeft:function(n){return r.onLeft(n,t)},onRight:function(n){return r.onRight(n,t)},onUp:function(n){return r.onUp(n,t)},onDown:function(n){return r.onDown(n,t)}}),fi.config({})]),events:qo([Eo(Vn(),o),Eo(Bn(),o),Eo(Nn(),o),Eo(Hn(),function(n,e){t.mouseIsDown.get()&&o(n,e)})])}}})],lf=Object.freeze({__proto__:null,onLoad:Ma,onUnload:_a,setValue:function(n,e,t,o){e.store.manager.setValue(n,e,t,o)},getValue:function(n,e,t){return e.store.manager.getValue(n,e,t)},getState:function(n,e,t){return t}}),df=Object.freeze({__proto__:null,events:function(t,o){var n=t.resetOnDom?[Yo(function(n,e){Ma(n,t,o)}),Ko(function(n,e){_a(n,t,o)})]:[Vo(t,o,Ma)];return qo(n)}}),mf=Object.freeze({__proto__:null,memory:Ra,dataset:Fa,manual:function(){return tr({readState:Y})},init:function(n){return n.store.manager.state(n)}}),gf=[Ut("initialValue"),Lt("getFallbackEntry"),Lt("getDataKey"),Lt("setValue"),Dr("manager",{setValue:Ia,getValue:function(n,e,t){var o=e.store,r=o.getDataKey(n);return t.lookup(r).getOrThunk(function(){return o.getFallbackEntry(r)})},onLoad:function(e,t,o){t.store.initialValue.each(function(n){Ia(e,t,o,n)})},onUnload:function(n,e,t){t.clear()},state:Fa})],pf=[Lt("getValue"),Yt("setValue",Y),Ut("initialValue"),Dr("manager",{setValue:function(n,e,t,o){e.store.setValue(n,o),e.onSetValue(n,o)},getValue:function(n,e,t){return e.store.getValue(n)},onLoad:function(e,t,n){t.store.initialValue.each(function(n){t.store.setValue(e,n)})},onUnload:Y,state:er.init})],hf=Ao({fields:[Kt("store",{mode:"memory"},jt("mode",{memory:[Ut("initialValue"),Dr("manager",{setValue:function(n,e,t,o){t.set(o),e.onSetValue(n,o)},getValue:function(n,e,t){return t.get()},onLoad:function(n,e,t){e.store.initialValue.each(function(n){t.isNotSet()&&t.set(n)})},onUnload:function(n,e,t){t.clear()},state:Ra})],manual:pf,dataset:gf})),kr("onSetValue"),Yt("resetOnDom",!1)],name:"representing",active:df,apis:lf,extra:{setValueFrom:function(n,e){var t=hf.getValue(e);hf.setValue(n,t)}},state:mf}),vf=Yr("width",function(n){return n.dom.offsetWidth}),bf=function(t,o){return{left:t,top:o,translate:function(n,e){return bf(t+n,o+e)}}},yf=bf,xf=w("slider.change.value"),wf="left",Sf=ks(-1),Of=ks(1),kf=mn.none,Tf=mn.none,Cf={"top-left":mn.none(),top:mn.none(),"top-right":mn.none(),right:mn.some(function(n,e){cs(n,{x:$a(e)})}),"bottom-right":mn.none(),bottom:mn.none(),"bottom-left":mn.none(),left:mn.some(function(n,e){cs(n,{x:Pa(e)})})},Ef=Object.freeze({__proto__:null,setValueFrom:function(n,e,t){var o=Os(n,e,t);return Ss(n,{x:o}),o},setToMin:function(n,e){Ss(n,{x:Na(e)})},setToMax:function(n,e){Ss(n,{x:ja(e)})},findValueOfOffset:Os,getValueFromEvent:function(n){return Aa(n).map(function(n){return n.left})},findPositionOfValue:Ts,setPositionFromValue:function(n,e,t,o){var r=is(t),i=Ts(n,o.getSpectrum(n),r.x,o.getLeftEdge(n),o.getRightEdge(n),t),u=Ba(e.element)/2;$r(e.element,"left",i-u+"px")},onLeft:Sf,onRight:Of,onUp:kf,onDown:Tf,edgeActions:Cf}),Df=mn.none,Mf=mn.none,_f=Ds(-1),Rf=Ds(1),Ff={"top-left":mn.none(),top:mn.some(function(n,e){cs(n,{y:za(e)})}),"top-right":mn.none(),right:mn.none(),"bottom-right":mn.none(),bottom:mn.some(function(n,e){cs(n,{y:Ga(e)})}),"bottom-left":mn.none(),left:mn.none()},If=Object.freeze({__proto__:null,setValueFrom:function(n,e,t){var o=Es(n,e,t);return Cs(n,{y:o}),o},setToMin:function(n,e){Cs(n,{y:Ha(e)})},setToMax:function(n,e){Cs(n,{y:La(e)})},findValueOfOffset:Es,getValueFromEvent:function(n){return Aa(n).map(function(n){return n.top})},findPositionOfValue:Ms,setPositionFromValue:function(n,e,t,o){var r=is(t),i=Ms(n,o.getSpectrum(n),r.y,o.getTopEdge(n),o.getBottomEdge(n),t),u=Kr(e.element)/2;$r(e.element,"top",i-u+"px")},onLeft:Df,onRight:Mf,onUp:_f,onDown:Rf,edgeActions:Ff}),Vf=Aa,Bf=Fs(-1,!1),Af=Fs(1,!1),Nf=Fs(-1,!0),Hf=Fs(1,!0),Pf={"top-left":mn.some(function(n,e){cs(n,us(Pa(e),za(e)))}),top:mn.some(function(n,e){cs(n,us(qa(e),za(e)))}),"top-right":mn.some(function(n,e){cs(n,us($a(e),za(e)))}),right:mn.some(function(n,e){cs(n,us($a(e),Ya(e)))}),"bottom-right":mn.some(function(n,e){cs(n,us($a(e),Ga(e)))}),bottom:mn.some(function(n,e){cs(n,us(qa(e),Ga(e)))}),"bottom-left":mn.some(function(n,e){cs(n,us(Pa(e),Ga(e)))}),left:mn.some(function(n,e){cs(n,us(Pa(e),Ya(e)))})},zf=Object.freeze({__proto__:null,setValueFrom:function(n,e,t){var o=Rs(Os(n,e,t.left),Es(n,e,t.top));return _s(n,o),o},setToMin:function(n,e){_s(n,Rs(Na(e),Ha(e)))},setToMax:function(n,e){_s(n,Rs(ja(e),La(e)))},getValueFromEvent:Vf,setPositionFromValue:function(n,e,t,o){var r=is(t),i=Ts(n,o.getSpectrum(n),r.x,o.getLeftEdge(n),o.getRightEdge(n),t),u=Ms(n,o.getSpectrum(n),r.y,o.getTopEdge(n),o.getBottomEdge(n),t),c=Ba(e.element)/2,a=Kr(e.element)/2;$r(e.element,"left",i-c+"px"),$r(e.element,"top",u-a+"px")},onLeft:Bf,onRight:Af,onUp:Nf,onDown:Hf,edgeActions:Pf}),jf=[Yt("stepSize",1),Yt("onChange",Y),Yt("onChoose",Y),Yt("onInit",Y),Yt("onDragStart",Y),Yt("onDragEnd",Y),Yt("snapToGrid",!1),Yt("rounded",!0),Ut("snapStart"),$t("model",jt("mode",{x:[Yt("minX",0),Yt("maxX",100),vo("value",function(n){return No(n.mode.minX)}),Lt("getInitialValue"),Dr("manager",Ef)],y:[Yt("minY",0),Yt("maxY",100),vo("value",function(n){return No(n.mode.minY)}),Lt("getInitialValue"),Dr("manager",If)],xy:[Yt("minX",0),Yt("maxX",100),Yt("minY",0),Yt("maxY",100),vo("value",function(n){return No({x:n.mode.minX,y:n.mode.minY})}),Lt("getInitialValue"),Dr("manager",zf)]})),ju("sliderBehaviours",[jc,hf]),vo("mouseIsDown",function(){return No(!1)})],Lf=w("mouse.released"),$f=Sa({name:"Slider",configFields:jf,partFields:ff,factory:function(i,n,e,t){function u(n){return ga(n,i,"thumb")}function c(n){return ga(n,i,"spectrum")}function o(n){return ma(n,i,"left-edge")}function r(n){return ma(n,i,"right-edge")}function a(n){return ma(n,i,"top-edge")}function s(n){return ma(n,i,"bottom-edge")}function f(n,e){v.setPositionFromValue(n,e,i,{getLeftEdge:o,getRightEdge:r,getTopEdge:a,getBottomEdge:s,getSpectrum:c})}function l(n,e){h.value.set(e),f(n,u(n))}function d(t){var n=i.mouseIsDown.get();i.mouseIsDown.set(!1),n&&ma(t,i,"thumb").each(function(n){var e=h.value.get();i.onChoose(t,n,e)})}function m(n,e){e.stop(),i.mouseIsDown.set(!0),i.onDragStart(n,u(n))}function g(n,e){e.stop(),i.onDragEnd(n,u(n)),d(n)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:n,behaviours:Lu(i.sliderBehaviours,[jc.config({mode:"special",focusIn:function(n){return ma(n,i,"spectrum").map(jc.focusIn).map(x)}}),hf.config({store:{mode:"manual",getValue:function(n){return h.value.get()}}}),ti.config({channels:((p={})[Lf()]={onReceive:d},p)})]),events:qo([Eo(xf(),function(n,e){!function(n,e){l(n,e);var t=u(n);i.onChange(n,t,e),mn.some(!0)}(n,e.event.value)}),Yo(function(n,e){var t=h.getInitialValue();h.value.set(t);var o=u(n);f(n,o);var r=c(n);i.onInit(n,o,r,h.value.get())}),Eo(Vn(),m),Eo(An(),g),Eo(Nn(),m),Eo(Pn(),g)]),apis:{resetToMin:function(n){v.setToMin(n,i)},resetToMax:function(n){v.setToMax(n,i)},setValue:l,refresh:f},domModification:{styles:{position:"relative"}}}},apis:{setValue:function(n,e,t){n.setValue(e,t)},resetToMin:function(n,e){n.resetToMin(e)},resetToMax:function(n,e){n.resetToMax(e)},refresh:function(n,e){n.refresh(e)}}}),Gf=["9px","10px","11px","12px","14px","16px","18px","20px","24px","32px","36px"],Uf=w(Gf),Wf=It([Lt("getInitialValue"),Lt("onChange"),Lt("category"),Lt("sizes")]),Xf=Uf(),qf={},Yf={exports:qf};function Kf(u){var e=Ns({dom:{tag:"input",attributes:{accept:"image/*",type:"file",title:""},styles:{visibility:"hidden",position:"absolute"}},events:qo([Ro(Un()),Eo(Gn(),function(n,e){var t=e.event.raw,o=t.target.files||t.dataTransfer.files;mn.from(o[0]).each(function(n){var r,t,i=u;r=n,t=r,new Jl(function(n){var e=new FileReader;e.onloadend=function(){n(e.result)},e.readAsDataURL(t)}).then(function(n){return n.split(",")[1]}).then(function(o){i.undoManager.transact(function(){var n=i.editorUpload.blobCache,e=n.create(Gu("mceu"),r,o);n.add(e);var t=i.dom.createHTML("img",{src:e.blobUri()});i.insertContent(t)})})})})])});return Qs.sketch({dom:Ea("image",u),components:[e.asSpec()],action:function(n){e.get(n).element.dom.click()}})}function Jf(n){return n.dom.textContent}function Qf(n){return 0'),action:function(n){var e=t.get(n);hf.setValue(e,"")}}));return{name:n,spec:td.sketch({dom:Oa('
    '),components:[t.asSpec(),o.asSpec()],containerBehaviours:or([ii.config({toggleClass:ci("input-container-empty")}),ed.config({find:function(n){return mn.some(t.get(n))}}),el("input-clearing",[Eo($n(),function(n){var e=t.get(n);(0"}function sl(o,r){return Ca(r,"link","link",function(){var n,e,t=hd(o,r);o.setContextToolbar(t),n=r,e=function(){o.focusToolbar()},(Zl.os.isAndroid()?function(n,e){var t=e.selection.getRng();n(),e.selection.setRng(t)}:p)(e,n),Ql(r).each(function(n){r.selection.select(n.dom)})})}function fl(e){function t(n){return"The component must be in a context to execute: "+n+(e?"\n"+$o(e().element)+" is not in context.":"")}function n(n){return function(){throw new Error(t(n))}}function o(n){return function(){console.warn(t(n))}}return{debugInfo:w("fake"),triggerEvent:o("triggerEvent"),triggerFocus:o("triggerFocus"),triggerEscape:o("triggerEscape"),broadcast:o("broadcast"),broadcastOn:o("broadcastOn"),broadcastEvent:o("broadcastEvent"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),isConnected:S}}function ll(n,r){var i={};return Ee(n,function(n,o){Ee(n,function(n,e){var t=_e(i,e).getOr([]);i[e]=t.concat([r(o,n)])})}),i}function dl(n){return n.cHandler}function ml(n,e){return{name:n,handler:e}}function gl(n,e,t){var o=e[t];return o?function(u,c,n,a){try{var e=(t=function(n,e){var t=n[c],o=e[c],r=a.indexOf(t),i=a.indexOf(o);if(-1===r)throw new Error("The ordering for "+u+" does not have an entry for "+t+".\nOrder specified: "+JSON.stringify(a,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+o+".\nOrder specified: "+JSON.stringify(a,null,2));return r'),components:[td.sketch({dom:Oa('
    '),components:Z(s.fields,function(n,e){return e<=s.maxFieldIndex?td.sketch({dom:Oa('
    '),components:[i(-1,"previous",0'),behaviours:or([Qi.config({highlightClass:ci("dot-active"),itemClass:ci("dot-item")})]),components:B(s.fields,function(n,e){return e<=s.maxFieldIndex?[ka('
    ')]:[]})}),{dom:Oa('
    '),components:[f.asSpec(),l.asSpec()],behaviours:or([jc.config({mode:"special",focusIn:function(n){var e=f.get(n);jc.focusIn(e)}}),el("serializer-wrapper-events",[Eo(Vn(),function(n,e){var t=e.event;s.state.dialogSwipeState.set({xValue:t.raw.touches[0].clientX,points:[]})}),Eo(Bn(),function(n,e){var t=e.event;s.state.dialogSwipeState.on(function(n){e.event.prevent(),s.state.dialogSwipeState.set(function(n,e){if(e===n.xValue)return n;var t=0'),action:function(n){X(n,a,{direction:e})},buttonBehaviours:or([md.config({disableClass:ci("toolbar-navigation-disabled"),disabled:function(){return!t}})])})}function u(n,r){var i=Jr(n.element,"."+ci("serialised-dialog-screen"));hi(n.element,"."+ci("serialised-dialog-chain")).each(function(o){0<=s.state.currentScreen.get()+r&&s.state.currentScreen.get()+r "):r[0].name;return yo(u,{handler:t,purpose:o})})});return e={},t=[],o=[],M(a,function(n){n.fold(function(n){t.push(n)},function(n){o.push(n)})}),0<(u={errors:t,values:o}).errors.length?ht.error(V(u.errors)):(i=e,0===(r=u.values).length?ht.value(i):ht.value(co(i,ao.apply(void 0,r))))},Sd="alloy.base.behaviour",Od=lo([ho("dom","dom",Ot(),lo([Lt("tag"),Yt("styles",{}),Yt("classes",[]),Yt("attributes",{}),Ut("value"),Ut("innerHtml")])),Lt("components"),Lt("uid"),Yt("events",{}),Yt("apis",{}),ho("eventOrder","eventOrder",((Kl={})[Zn()]=["disabling",Sd,"toggling","typeaheadevents"],Kl[Yn()]=[Sd,"focusing","keying"],Kl[oe()]=[Sd,"disabling","toggling","representing"],Kl[$n()]=[Sd,"representing","streaming","invalidating"],Kl[ie()]=[Sd,"representing","item-events","tooltipping"],Kl[Nn()]=["focusing",Sd,"item-type-events"],Kl[Vn()]=["focusing",Sd,"item-type-events"],Kl[zn()]=["item-type-events","tooltipping"],Kl[Qn()]=["receiving","reflecting","tooltipping"],Et(w(Kl))),mo()),Ut("domModification")]),kd=qs,Td=function(u){return _e(u,Ls).getOrThunk(function(){var n,e,t,o,r,i=dt(u,"uid")?u:y({uid:kd("")},u);return n=yd(i),e=n.events,t=c(n,["events"]),o=Z(_e(t,"components").getOr([]),Td),r=y(y({},t),{events:y(y({},bd),e),components:o}),ht.value(xl(r)).getOrDie()})},Cd=ha,Ed="alloy.item-hover",Dd="alloy.item-focus",Md=w(Ed),_d=w(Dd),Rd=[Lt("data"),Lt("components"),Lt("dom"),Yt("hasSubmenu",!1),Ut("toggling"),Lc("itemBehaviours",[ii,fi,jc,hf]),Yt("ignoreFocus",!1),Yt("domModification",{}),Dr("builder",function(n){return{dom:n.dom,domModification:y(y({},n.domModification),{attributes:y(y(y({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:$c(n.itemBehaviours,[n.toggling.fold(ii.revoke,function(n){return ii.config(y({aria:{mode:"checked"}},n))}),fi.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){Ol(n)}}),jc.config({mode:"execution"}),hf.config({store:{mode:"memory",initialValue:n.data}}),el("item-type-events",u(u([],Pr(),!0),[Eo(zn(),Sl),Eo(ne(),fi.focus)],!1))]),components:n.components,eventOrder:n.eventOrder}}),Yt("eventOrder",{})],Fd=[Lt("dom"),Lt("components"),Dr("builder",function(n){return{dom:n.dom,components:n.components,events:qo([Eo(ne(),function(n,e){e.stop()})])}})],Id=w("item-widget"),Vd=w([sa({name:"widget",overrides:function(e){return{behaviours:or([hf.config({store:{mode:"manual",getValue:function(n){return e.data},setValue:Y}})])}}})]),Bd=jt("type",{widget:[Lt("uid"),Lt("data"),Lt("components"),Lt("dom"),Yt("autofocus",!1),Yt("ignoreFocus",!1),Lc("widgetBehaviours",[hf,fi,jc]),Yt("domModification",{}),pa(Vd()),Dr("builder",function(t){function o(n){return ma(n,t,"widget").map(function(n){return jc.focusIn(n),n})}function n(n,e){return eu(e.event.target)||t.autofocus&&e.setSource(n.element),mn.none()}var e=la(Id(),t,Vd()),r=da(Id(),t,e.internals());return{dom:t.dom,components:r,domModification:t.domModification,events:qo([Qo(function(n,e){o(n).each(function(n){e.stop()})}),Eo(zn(),Sl),Eo(ne(),function(n,e){t.autofocus?o(n):fi.focus(n)})]),behaviours:$c(t.widgetBehaviours,[hf.config({store:{mode:"memory",initialValue:t.data}}),fi.config({ignore:t.ignoreFocus,onFocus:function(n){Ol(n)}}),jc.config({mode:"special",focusIn:t.autofocus?function(n){o(n)}:ur(),onLeft:n,onRight:n,onEscape:function(n,e){return fi.isFocused(n)||t.autofocus?(t.autofocus&&e.setSource(n.element),mn.none()):(fi.focus(n),mn.some(!0))}})])}})],item:Rd,separator:Fd}),Ad=w([Ps({factory:{sketch:function(n){var e=zt("menu.spec item",Bd,n);return e.builder(e)}},name:"items",unit:"item",defaults:function(n,e){return dt(e,"uid")?e:y(y({},e),{uid:qs("item")})},overrides:function(n,e){return{type:e.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),Nd=w([Lt("value"),Lt("items"),Lt("dom"),Lt("components"),Yt("eventOrder",{}),ju("menuBehaviours",[Qi,hf,ed,jc]),Kt("movement",{mode:"menu",moveOnTab:!0},jt("mode",{grid:[ei(),Dr("config",function(n,e){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:e.initSize.numColumns,numRows:e.initSize.numRows},focusManager:n.focusManager}})],matrix:[Dr("config",function(n,e){return{mode:"matrix",selectors:{row:e.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),Lt("rowSelector")],menu:[Yt("moveOnTab",!0),Dr("config",function(n,e){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:e.moveOnTab,focusManager:n.focusManager}})]})),$t("markers",ni()),Yt("fakeFocus",!1),Yt("focusManager",Ii()),kr("onHighlight")]),Hd=w("alloy.menu-focus"),Pd=Sa({name:"Menu",configFields:Nd(),partFields:Ad(),factory:function(n,e,t,o){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:Lu(n.menuBehaviours,[Qi.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),hf.config({store:{mode:"memory",initialValue:n.value}}),ed.config({find:mn.some}),jc.config(n.movement.config(n,n.movement))]),events:qo([Eo(_d(),function(e,t){var n=t.event;e.getSystem().getByDom(n.target).each(function(n){Qi.highlight(e,n),t.stop(),X(e,Hd(),{menu:e,item:n})})}),Eo(Md(),function(n,e){var t=e.event.item;Qi.highlight(n,t)})]),components:e,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),zd=function(n,e){return n.components()},jd=Ao({fields:[],name:"replacing",apis:Object.freeze({__proto__:null,append:function(n,e,t,o){kl(n,0,Qe,o)},prepend:function(n,e,t,o){kl(n,0,ye,o)},remove:Tl,replaceAt:Cl,replaceBy:function(e,n,t,o,r){return I(zd(e),o).bind(function(n){return Cl(e,0,0,n,r)})},set:function(i,n,e,u){var t,o,r,c;t=function(){var e,n,t,o,r=Z(u,i.getSystem().build);n=r,o=(e=i).components(),M((t=e).components(),function(n){return Ze(n.element)}),we(t.element),t.syncComponents(),M(H(o,n),function(n){ut(n),e.getSystem().removeFromWorld(n)}),M(n,function(n){n.getSystem().isConnected()?Te(e,n):(e.getSystem().addToWorld(n),Te(e,n),rt(e.element)&&ct(n)),e.syncComponents()})},o=i.element,r=tt(o),c=zo(r).bind(function(e){function n(n){return un(e,n)}var r,i;return n(o)?mn.some(o):(r=n,(i=function(n){for(var e=0;e");o[t[0]]=yo(t[1],n),o[t[1]]=yo(t[0],n)}),o},createBistate:function(n,e,t){return xo([{key:n,value:yo(e,t)},{key:e,value:yo(n,t)}])},createTristate:function(n,e,t,o){return xo([{key:n,value:xo([{key:e,value:o},{key:t,value:o}])},{key:e,value:xo([{key:n,value:o},{key:t,value:o}])},{key:t,value:xo([{key:n,value:o},{key:e,value:o}])}])}}}),Qd=ci("scrollable"),Zd=Qd,nm=function(n,e,t,o,r){return{data:{value:n,text:e},type:"item",dom:{tag:"div",classes:r?[ci("styles-item-is-menu")]:[]},toggling:{toggleOnExecute:!1,toggleClass:ci("format-matches"),selected:t},itemBehaviours:or(r?[]:[Ar(n,function(n,e){(e?ii.on:ii.off)(n)})]),components:[{dom:{tag:"div",attributes:{style:o},innerHtml:e}}]}},em=function(n,e,t,o){return{value:n,dom:{tag:"div"},components:[Qs.sketch({dom:{tag:"div",classes:[ci("styles-collapser")]},components:o?[{dom:{tag:"span",classes:[ci("styles-collapse-icon")]}},wl(n)]:[wl(n)],action:function(n){var e;o&&(e=t().get(n),Wd.collapseMenu(e))}}),{dom:{tag:"div",classes:[ci("styles-menu-items-container")]},components:[Pd.parts.items({})],behaviours:or([el("adhoc-scrollable-menu",[Yo(function(n,e){$r(n.element,"overflow-y","auto"),$r(n.element,"-webkit-overflow-scrolling","touch"),_l(n.element)}),Ko(function(n){Xr(n.element,"overflow-y"),Xr(n.element,"-webkit-overflow-scrolling"),Rl(n.element)})])])}],items:e,menuBehaviours:or([Jd.config({initialState:"after",routes:Jd.createTristate("before","current","after",{transition:{property:"transform",transitionClass:"transitioning"}})})])}},tm=function(n){return _(n,function(n,e){var t=Il(e);return{menus:co(n.menus,t.menus),items:[t.item].concat(n.items),expansions:co(n.expansions,t.expansions)}},{menus:{},expansions:{},items:[]})},om=function(n){return B(n,function(n){return(D(n)?om:Bl)(n)})},rm=function(n,e,t,o){n.dom.removeEventListener(e,t,o)},im=x,um=tinymce.util.Tools.resolve("tinymce.util.Delay"),cm=Jt([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function am(n,e){var t=le(n);return"input"===t?mg.after(n):T(["br","img"],t)?0===e?mg.before(n):mg.after(n):mg.on(n,e)}function sm(n){return mn.from(n.getSelection())}function fm(n,e,t,o,r){var i=Gl(n,e,t,o,r);sm(n).each(function(n){n.removeAllRanges(),n.addRange(i)})}function lm(n,e,t,o,r){var i,u,c,a,s,f=(i=o,u=r,c=am(e,t),a=am(i,u),pg.relative(c,a));Xl(s=n,f).match({ltr:function(n,e,t,o){fm(s,n,e,t,o)},rtl:function(r,i,u,c){sm(s).each(function(n){if(n.setBaseAndExtent)n.setBaseAndExtent(r.dom,i,u.dom,c);else if(n.extend)try{t=u,o=c,(e=n).collapse(r.dom,i),e.extend(t.dom,o)}catch(n){fm(s,u,c,r,i)}else fm(s,u,c,r,i);var e,t,o})}})}function dm(n){if(0r.innerHeight||n.bottom>r.innerHeight?Math.min(t,n.bottom-r.innerHeight+50):0;0!==e&&r.scrollTo(r.pageXOffset,r.pageYOffset+e)})}),Rm(i,o.innerHeight)});return Rm(i,o.innerHeight),{toEditing:function(){!function(n){n.focus();var e=fe.fromDom(n.document.body);(zo().exists(function(n){return T(["input","textarea"],le(n))})?function(n){um.setTimeout(function(){n()},0)}:p)(function(){zo().each(Po),Ho(e)})}(r)},destroy:function(){n.unbind()}}}function Vm(t,o){function r(){s(i)||(clearTimeout(i),i=null)}var i=null;return{cancel:r,throttle:function(){for(var n=[],e=0;e
    - - - diff --git a/app/code/Magento/Theme/etc/di.xml b/app/code/Magento/Theme/etc/di.xml index 69fd87ab0eb7f..af287e5693c4c 100644 --- a/app/code/Magento/Theme/etc/di.xml +++ b/app/code/Magento/Theme/etc/di.xml @@ -334,5 +334,9 @@ - + + + Magento\Theme\Model\Config\PathValidator + + From 734db2aec55bfb3a109eea314f17353e87206ba2 Mon Sep 17 00:00:00 2001 From: Alexandra Zota Date: Mon, 14 Oct 2024 16:24:34 +0300 Subject: [PATCH 316/460] ACP2E-3324: added unit test --- .../Unit/Model/Config/PathValidatorTest.php | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 app/code/Magento/Theme/Test/Unit/Model/Config/PathValidatorTest.php diff --git a/app/code/Magento/Theme/Test/Unit/Model/Config/PathValidatorTest.php b/app/code/Magento/Theme/Test/Unit/Model/Config/PathValidatorTest.php new file mode 100644 index 0000000000000..662f5dcdcab91 --- /dev/null +++ b/app/code/Magento/Theme/Test/Unit/Model/Config/PathValidatorTest.php @@ -0,0 +1,137 @@ +structure = $this->createMock(Structure::class); + $this->designConfigRepository = $this->createMock(DesignConfigRepository::class); + + $this->pathValidator = new PathValidator( + $this->structure, + $this->designConfigRepository + ); + } + + public function testValidateNonDesignPath() + { + $path = 'non_design/path'; + $this->structure->expects($this->once()) + ->method('getElementByConfigPath') + ->with($path) + ->willReturn(null); + + $this->structure->expects($this->once()) + ->method('getFieldPaths') + ->willReturn(['non_design/path' => 'non_design/path']); + + $result = $this->pathValidator->validate($path); + $this->assertTrue($result); + } + + public function testValidateDesignPath() + { + $path = 'design/path'; + $element = $this->createMock(Structure\Element\Field::class); + $designConfig = $this->createMock(DesignConfigInterface::class); + $extensionAttributes = $this->createMock(DataObject::class); + $designConfigData = $this->createMock(DesignConfigDataInterface::class); + + $element->expects($this->exactly(2)) + ->method('getConfigPath') + ->willReturn($path); + $this->structure->expects($this->once()) + ->method('getElementByConfigPath') + ->with($path) + ->willReturn($element); + $this->structure->expects($this->once()) + ->method('getFieldPaths') + ->willReturn([]); + $this->designConfigRepository->expects($this->once()) + ->method('getByScope') + ->with('default', null) + ->willReturn($designConfig); + $designConfig->expects($this->once()) + ->method('getExtensionAttributes') + ->willReturn($extensionAttributes); + $extensionAttributes->expects($this->once()) + ->method('__call') + ->with( + $this->equalTo('getDesignConfigData') + )->willReturn([$designConfigData]); + $designConfigData->expects($this->exactly(2)) + ->method('getFieldConfig') + ->willReturn(['path' => $path]); + + $result = $this->pathValidator->validate($path); + $this->assertTrue($result); + } + + public function testValidateDesignPathThrowsException() + { + $this->expectException(ValidatorException::class); + $this->expectExceptionMessage('The "design/invalid_path" path doesn\'t exist. Verify and try again.'); + + $path = 'design/invalid_path'; + $element = $this->createMock(Structure\Element\Field::class); + $designConfig = $this->createMock(DesignConfigInterface::class); + $extensionAttributes = $this->createMock(DataObject::class); + + $element->expects($this->exactly(2)) + ->method('getConfigPath') + ->willReturn($path); + $this->structure->expects($this->once()) + ->method('getElementByConfigPath') + ->with($path) + ->willReturn($element); + $this->structure->expects($this->once()) + ->method('getFieldPaths') + ->willReturn([]); + $this->designConfigRepository->expects($this->once()) + ->method('getByScope') + ->with('default', null) + ->willReturn($designConfig); + $designConfig->expects($this->once()) + ->method('getExtensionAttributes') + ->willReturn($extensionAttributes); + $extensionAttributes->expects($this->once()) + ->method('__call') + ->with( + $this->equalTo('getDesignConfigData') + )->willReturn([]); + + $this->pathValidator->validate($path); + } +} From f3f6d79cd0410edbd7f635e1f417780ba918ba2a Mon Sep 17 00:00:00 2001 From: lakshmana49 Date: Mon, 14 Oct 2024 19:41:05 +0530 Subject: [PATCH 317/460] ACP2E-3350: Disabled Categories are no longer have their names grayed out in the category tree --- app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php index a3c2cf1742b35..b9830bba4131c 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php @@ -392,7 +392,7 @@ protected function _getNodeJson($node, $level = 0) $item['id'] = $node->getId(); $item['store'] = (int)$this->getStore()->getId(); $item['path'] = $node->getData('path'); - if(!$node->getIsActive()){ + if (!$node->getIsActive()) { $item['a_attr'] = ['class' => 'disabled-category']; } $item['cls'] = 'folder ' . ($node->getIsActive() ? 'active-category' : 'no-active-category'); From a8360339c50be0b623c43df3d42d46ebd9fb1f33 Mon Sep 17 00:00:00 2001 From: Alexandra Zota Date: Mon, 14 Oct 2024 17:13:55 +0300 Subject: [PATCH 318/460] ACP2E-3324: added admin save data validator to cli set data --- .../Theme/Model/Design/Config/Validator.php | 3 + .../Theme/Plugin/DesignProcessorFacade.php | 60 +++++++++++++++++++ app/code/Magento/Theme/etc/adminhtml/di.xml | 10 +--- app/code/Magento/Theme/etc/di.xml | 8 +++ 4 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 app/code/Magento/Theme/Plugin/DesignProcessorFacade.php diff --git a/app/code/Magento/Theme/Model/Design/Config/Validator.php b/app/code/Magento/Theme/Model/Design/Config/Validator.php index 1279d9d9ccd20..ea0ad0475d0c7 100644 --- a/app/code/Magento/Theme/Model/Design/Config/Validator.php +++ b/app/code/Magento/Theme/Model/Design/Config/Validator.php @@ -66,6 +66,9 @@ public function validate(DesignConfigInterface $designConfig) foreach ($elements as $name => $data) { $templateId = $data['value']; + if (!$templateId) { + continue; + } $text = $this->getTemplateText($templateId, $designConfig); // Check if template body has a reference to the same config path if (preg_match_all(Template::CONSTRUCTION_TEMPLATE_PATTERN, $text, $constructions, PREG_SET_ORDER)) { diff --git a/app/code/Magento/Theme/Plugin/DesignProcessorFacade.php b/app/code/Magento/Theme/Plugin/DesignProcessorFacade.php new file mode 100644 index 0000000000000..b698911a7c4f8 --- /dev/null +++ b/app/code/Magento/Theme/Plugin/DesignProcessorFacade.php @@ -0,0 +1,60 @@ +configFactory->create($scope, $scopeCode, [$savePath => $value]); + $this->validator->validate($designConfig); + } + + return [$path, $value, $scope, $scopeCode, $lock, $lockTarget]; + } +} diff --git a/app/code/Magento/Theme/etc/adminhtml/di.xml b/app/code/Magento/Theme/etc/adminhtml/di.xml index 8e672cbe1317e..6a3d3d9ac110f 100644 --- a/app/code/Magento/Theme/etc/adminhtml/di.xml +++ b/app/code/Magento/Theme/etc/adminhtml/di.xml @@ -33,12 +33,8 @@ - - - - email_header_template - email_footer_template - - + + diff --git a/app/code/Magento/Theme/etc/di.xml b/app/code/Magento/Theme/etc/di.xml index af287e5693c4c..6fcf9cd095505 100644 --- a/app/code/Magento/Theme/etc/di.xml +++ b/app/code/Magento/Theme/etc/di.xml @@ -334,6 +334,14 @@ + + + + email_header_template + email_footer_template + + + Magento\Theme\Model\Config\PathValidator From 6bc2248e4c0942429e13ad48e6c66956bd422695 Mon Sep 17 00:00:00 2001 From: Alexandra Zota Date: Tue, 15 Oct 2024 10:18:50 +0300 Subject: [PATCH 319/460] ACP2E-3324: addressed cyclomatic complexity static error --- .../Theme/Model/Design/Config/Validator.php | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/app/code/Magento/Theme/Model/Design/Config/Validator.php b/app/code/Magento/Theme/Model/Design/Config/Validator.php index ea0ad0475d0c7..8e9ba78bacde6 100644 --- a/app/code/Magento/Theme/Model/Design/Config/Validator.php +++ b/app/code/Magento/Theme/Model/Design/Config/Validator.php @@ -50,19 +50,7 @@ public function __construct(TemplateFactory $templateFactory, $fields = []) */ public function validate(DesignConfigInterface $designConfig) { - /** @var DesignConfigDataInterface[] $designConfigData */ - $designConfigData = $designConfig->getExtensionAttributes()->getDesignConfigData(); - $elements = []; - foreach ($designConfigData as $designElement) { - if (!in_array($designElement->getFieldConfig()['field'], $this->fields)) { - continue; - } - /* Save mapping between field names and config paths */ - $elements[$designElement->getFieldConfig()['field']] = [ - 'config_path' => $designElement->getPath(), - 'value' => $designElement->getValue() - ]; - } + $elements = $this->getElements($designConfig); foreach ($elements as $name => $data) { $templateId = $data['value']; @@ -89,6 +77,30 @@ public function validate(DesignConfigInterface $designConfig) } } + /** + * Get elements from design configuration + * + * @param DesignConfigInterface $designConfig + * @return array + */ + private function getElements(DesignConfigInterface $designConfig) + { + /** @var DesignConfigDataInterface[] $designConfigData */ + $designConfigData = $designConfig->getExtensionAttributes()->getDesignConfigData(); + $elements = []; + foreach ($designConfigData as $designElement) { + if (!in_array($designElement->getFieldConfig()['field'], $this->fields)) { + continue; + } + /* Save mapping between field names and config paths */ + $elements[$designElement->getFieldConfig()['field']] = [ + 'config_path' => $designElement->getPath(), + 'value' => $designElement->getValue() + ]; + } + return $elements; + } + /** * Returns store identifier if is store scope * From 3f298314ba8bc34d4761e444cd3193ec9e620d90 Mon Sep 17 00:00:00 2001 From: Atul-glo35265 Date: Tue, 15 Oct 2024 13:24:48 +0530 Subject: [PATCH 320/460] AC-12692: Widget category tree is not rendered correctly - Copyright update --- .../adminhtml/templates/catalog/category/widget/tree.phtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml index bbc886f4f0a3d..c2043570e0dd7 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml @@ -1,7 +1,7 @@ Date: Tue, 15 Oct 2024 12:00:57 +0300 Subject: [PATCH 321/460] ACP2E-3324: added unit test --- .../Plugin/Data/DesignProcessorFacadeTest.php | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php diff --git a/app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php b/app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php new file mode 100644 index 0000000000000..53add8ffc68d7 --- /dev/null +++ b/app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php @@ -0,0 +1,158 @@ +validator = $this->createMock(Validator::class); + $this->configFactory = $this->createMock(ConfigFactory::class); + + $this->designProcessorFacade = new DesignProcessorFacade( + $this->validator, + $this->configFactory + ); + } + + /** + * @return void + * @throws Exception + * @throws LocalizedException + */ + public function testBeforeProcessWithLockTargetValidDesignPath() + { + $processorFacade = $this->createMock(ProcessorFacade::class); + $path = 'design/theme/custom'; + $value = 'custom_value'; + $scope = 'default'; + $scopeCode = null; + $lock = false; + $lockTarget = 'app_env'; + + $designConfig = $this->createMock(DesignConfigInterface::class); + $this->configFactory->expects($this->once()) + ->method('create') + ->with($scope, $scopeCode, ['theme_custom' => $value]) + ->willReturn($designConfig); + + $this->validator->expects($this->once()) + ->method('validate') + ->with($designConfig); + + $result = $this->designProcessorFacade->beforeProcessWithLockTarget( + $processorFacade, + $path, + $value, + $scope, + $scopeCode, + $lock, + $lockTarget + ); + + $this->assertEquals([$path, $value, $scope, $scopeCode, $lock, $lockTarget], $result); + } + + /** + * @return void + * @throws LocalizedException + * @throws Exception + */ + public function testBeforeProcessWithLockTargetNonDesignPath() + { + $processorFacade = $this->createMock(ProcessorFacade::class); + $path = 'non_design/path'; + $value = 'value'; + $scope = 'default'; + $scopeCode = null; + $lock = false; + $lockTarget = 'app_env'; + + $this->configFactory->expects($this->never()) + ->method('create'); + + $this->validator->expects($this->never()) + ->method('validate'); + + $result = $this->designProcessorFacade->beforeProcessWithLockTarget( + $processorFacade, + $path, + $value, + $scope, + $scopeCode, + $lock, + $lockTarget + ); + + $this->assertEquals([$path, $value, $scope, $scopeCode, $lock, $lockTarget], $result); + } + + /** + * @return void + * @throws LocalizedException + * @throws Exception + */ + public function testBeforeProcessWithLockTargetThrowsException() + { + $this->expectException(LocalizedException::class); + + $processorFacade = $this->createMock(ProcessorFacade::class); + $path = 'design/theme/custom'; + $value = 'custom_value'; + $scope = 'default'; + $scopeCode = null; + $lock = false; + $lockTarget = 'app_env'; + + $designConfig = $this->createMock(DesignConfigInterface::class); + $this->configFactory->expects($this->once()) + ->method('create') + ->with($scope, $scopeCode, ['theme_custom' => $value]) + ->willReturn($designConfig); + + $this->validator->expects($this->once()) + ->method('validate') + ->with($designConfig) + ->willThrowException(new LocalizedException(__('Validation error'))); + + $this->designProcessorFacade->beforeProcessWithLockTarget( + $processorFacade, + $path, + $value, + $scope, + $scopeCode, + $lock, + $lockTarget + ); + } +} From 8f5b8fed51f51a743dba18dcade7606b32d3a6c9 Mon Sep 17 00:00:00 2001 From: Alexandra Zota Date: Tue, 15 Oct 2024 14:20:42 +0300 Subject: [PATCH 322/460] ACP2E-3324: fix static error --- .../Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php b/app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php index 53add8ffc68d7..ec61a7640d4be 100644 --- a/app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php +++ b/app/code/Magento/Theme/Test/Unit/Plugin/Data/DesignProcessorFacadeTest.php @@ -5,7 +5,7 @@ */ declare(strict_types=1); -namespace Unit\Plugin\Data; +namespace Magento\Theme\Test\Unit\Plugin\Data; use PHPUnit\Framework\MockObject\Exception; use PHPUnit\Framework\MockObject\MockObject; From df89d09f472c276aee0d4540150f5634890ddaf0 Mon Sep 17 00:00:00 2001 From: Dnyaneshwar Jambhulkar Date: Tue, 15 Oct 2024 17:32:37 +0530 Subject: [PATCH 323/460] AC-13213::Investigate latest patch version of Uppy --- lib/web/jquery/uppy/dist/uppy.min.js | 45 +++++++++++++++------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/lib/web/jquery/uppy/dist/uppy.min.js b/lib/web/jquery/uppy/dist/uppy.min.js index 126c6ddd55338..06c4f461b2ce3 100644 --- a/lib/web/jquery/uppy/dist/uppy.min.js +++ b/lib/web/jquery/uppy/dist/uppy.min.js @@ -1,24 +1,23 @@ -"use strict";(()=>{var Bb=Object.create;var Cl=Object.defineProperty;var zb=Object.getOwnPropertyDescriptor;var jb=Object.getOwnPropertyNames;var Hb=Object.getPrototypeOf,$b=Object.prototype.hasOwnProperty;var n=(i,e)=>Cl(i,"name",{value:e,configurable:!0});var he=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Tl=(i,e)=>{for(var t in e)Cl(i,t,{get:e[t],enumerable:!0})},qb=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of jb(e))!$b.call(i,s)&&s!==t&&Cl(i,s,{get:()=>e[s],enumerable:!(r=zb(e,s))||r.enumerable});return i};var de=(i,e,t)=>(t=i!=null?Bb(Hb(i)):{},qb(e||!i||!i.__esModule?Cl(t,"default",{value:i,enumerable:!0}):t,i));var yh=he((Zx,of)=>{of.exports=n(function(){var e={},t=e._fns={};e.emit=n(function(a,l,h,p,d,f,y){var b=r(a);b.length&&s(a,b,[l,h,p,d,f,y])},"emit"),e.on=n(function(a,l){t[a]||(t[a]=[]),t[a].push(l)},"on"),e.once=n(function(a,l){function h(){l.apply(this,arguments),e.off(a,h)}n(h,"one"),this.on(a,h)},"once"),e.off=n(function(a,l){var h=[];if(a&&l){var p=this._fns[a],d=0,f=p?p.length:0;for(d;d{function Yb(i){var e=typeof i;return i!=null&&(e=="object"||e=="function")}n(Yb,"isObject");nf.exports=Yb});var lf=he((oF,af)=>{var Qb=typeof global=="object"&&global&&global.Object===Object&&global;af.exports=Qb});var vh=he((nF,uf)=>{var Jb=lf(),Zb=typeof self=="object"&&self&&self.Object===Object&&self,e1=Jb||Zb||Function("return this")();uf.exports=e1});var df=he((aF,hf)=>{var t1=vh(),i1=n(function(){return t1.Date.now()},"now");hf.exports=i1});var pf=he((uF,cf)=>{var r1=/\s/;function s1(i){for(var e=i.length;e--&&r1.test(i.charAt(e)););return e}n(s1,"trimmedEndIndex");cf.exports=s1});var mf=he((dF,ff)=>{var o1=pf(),n1=/^\s+/;function a1(i){return i&&i.slice(0,o1(i)+1).replace(n1,"")}n(a1,"baseTrim");ff.exports=a1});var bh=he((pF,gf)=>{var l1=vh(),u1=l1.Symbol;gf.exports=u1});var wf=he((fF,bf)=>{var yf=bh(),vf=Object.prototype,h1=vf.hasOwnProperty,d1=vf.toString,cn=yf?yf.toStringTag:void 0;function c1(i){var e=h1.call(i,cn),t=i[cn];try{i[cn]=void 0;var r=!0}catch{}var s=d1.call(i);return r&&(e?i[cn]=t:delete i[cn]),s}n(c1,"getRawTag");bf.exports=c1});var Pf=he((gF,Sf)=>{var p1=Object.prototype,f1=p1.toString;function m1(i){return f1.call(i)}n(m1,"objectToString");Sf.exports=m1});var Ef=he((vF,Ff)=>{var _f=bh(),g1=wf(),y1=Pf(),v1="[object Null]",b1="[object Undefined]",xf=_f?_f.toStringTag:void 0;function w1(i){return i==null?i===void 0?b1:v1:xf&&xf in Object(i)?g1(i):y1(i)}n(w1,"baseGetTag");Ff.exports=w1});var Cf=he((wF,Of)=>{function S1(i){return i!=null&&typeof i=="object"}n(S1,"isObjectLike");Of.exports=S1});var Af=he((PF,Tf)=>{var P1=Ef(),_1=Cf(),x1="[object Symbol]";function F1(i){return typeof i=="symbol"||_1(i)&&P1(i)==x1}n(F1,"isSymbol");Tf.exports=F1});var Df=he((xF,kf)=>{var E1=mf(),Rf=Al(),O1=Af(),Uf=0/0,C1=/^[-+]0x[0-9a-f]+$/i,T1=/^0b[01]+$/i,A1=/^0o[0-7]+$/i,R1=parseInt;function U1(i){if(typeof i=="number")return i;if(O1(i))return Uf;if(Rf(i)){var e=typeof i.valueOf=="function"?i.valueOf():i;i=Rf(e)?e+"":e}if(typeof i!="string")return i===0?i:+i;i=E1(i);var t=T1.test(i);return t||A1.test(i)?R1(i.slice(2),t?2:8):C1.test(i)?Uf:+i}n(U1,"toNumber");kf.exports=U1});var Sh=he((EF,Nf)=>{var k1=Al(),wh=df(),If=Df(),D1="Expected a function",I1=Math.max,N1=Math.min;function M1(i,e,t){var r,s,o,a,l,h,p=0,d=!1,f=!1,y=!0;if(typeof i!="function")throw new TypeError(D1);e=If(e)||0,k1(t)&&(d=!!t.leading,f="maxWait"in t,o=f?I1(If(t.maxWait)||0,e):o,y="trailing"in t?!!t.trailing:y);function b(B){var z=r,K=s;return r=s=void 0,p=B,a=i.apply(K,z),a}n(b,"invokeFunc");function S(B){return p=B,l=setTimeout(F,e),d?b(B):a}n(S,"leadingEdge");function E(B){var z=B-h,K=B-p,oe=e-z;return f?N1(oe,o-K):oe}n(E,"remainingWait");function x(B){var z=B-h,K=B-p;return h===void 0||z>=e||z<0||f&&K>=o}n(x,"shouldInvoke");function F(){var B=wh();if(x(B))return U(B);l=setTimeout(F,E(B))}n(F,"timerExpired");function U(B){return l=void 0,y&&r?b(B):(r=s=void 0,a)}n(U,"trailingEdge");function j(){l!==void 0&&clearTimeout(l),p=0,r=h=s=l=void 0}n(j,"cancel");function G(){return l===void 0?a:U(wh())}n(G,"flush");function J(){var B=wh(),z=x(B);if(r=arguments,s=this,h=B,z){if(l===void 0)return S(h);if(f)return clearTimeout(l),l=setTimeout(F,e),b(h)}return l===void 0&&(l=setTimeout(F,e)),a}return n(J,"debounced"),J.cancel=j,J.flush=G,J}n(M1,"debounce");Nf.exports=M1});var Rl=he((CF,Mf)=>{var L1=Sh(),B1=Al(),z1="Expected a function";function j1(i,e,t){var r=!0,s=!0;if(typeof i!="function")throw new TypeError(z1);return B1(t)&&(r="leading"in t?!!t.leading:r,s="trailing"in t?!!t.trailing:s),L1(i,e,{leading:r,maxWait:e,trailing:s})}n(j1,"throttle");Mf.exports=j1});var Il=he((YF,Hf)=>{Hf.exports=n(function(e){if(typeof e!="number"||isNaN(e))throw new TypeError(`Expected a number, got ${typeof e}`);let t=e<0,r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];if(t&&(e=-e),e<1)return`${(t?"-":"")+e} B`;let s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));let o=r[s];return e>=10||e%1===0?`${(t?"-":"")+e.toFixed(0)} ${o}`:`${(t?"-":"")+e.toFixed(1)} ${o}`},"prettierBytes")});var Vf=he((JF,qf)=>{"use strict";function $f(i,e){this.text=i=i||"",this.hasWild=~i.indexOf("*"),this.separator=e,this.parts=i.split(e)}n($f,"WildcardMatcher");$f.prototype.match=function(i){var e=!0,t=this.parts,r,s=t.length,o;if(typeof i=="string"||i instanceof String)if(!this.hasWild&&this.text!=i)e=!1;else{for(o=(i||"").split(this.separator),r=0;e&&r{var G1=Vf(),K1=/[\/\+\.]/;Wf.exports=function(i,e){function t(r){var s=G1(r,i,K1);return s&&s.length>=2}return n(t,"test"),e?t(e.split(";")[0]):t}});var bm=he((j3,vm)=>{function pi(i,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(i)),this._timeouts=i,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}n(pi,"RetryOperation");vm.exports=pi;pi.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};pi.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};pi.prototype.retry=function(i){if(this._timeout&&clearTimeout(this._timeout),!i)return!1;var e=new Date().getTime();if(i&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(i),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(i);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var r=this;return this._timer=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},t),this._options.unref&&this._timer.unref(),!0};pi.prototype.attempt=function(i,e){this._fn=i,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};pi.prototype.try=function(i){console.log("Using RetryOperation.try() is deprecated"),this.attempt(i)};pi.prototype.start=function(i){console.log("Using RetryOperation.start() is deprecated"),this.attempt(i)};pi.prototype.start=pi.prototype.try;pi.prototype.errors=function(){return this._errors};pi.prototype.attempts=function(){return this._attempts};pi.prototype.mainError=function(){if(this._errors.length===0)return null;for(var i={},e=null,t=0,r=0;r=t&&(e=s,t=a)}return e}});var wm=he(Ss=>{var bw=bm();Ss.operation=function(i){var e=Ss.timeouts(i);return new bw(e,{forever:i&&(i.forever||i.retries===1/0),unref:i&&i.unref,maxRetryTime:i&&i.maxRetryTime})};Ss.timeouts=function(i){if(i instanceof Array)return[].concat(i);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in i)e[t]=i[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var r=[],s=0;s{Sm.exports=wm()});var Dm=he((UE,zh)=>{"use strict";var $w=Object.prototype.hasOwnProperty,At="~";function In(){}n(In,"Events");Object.create&&(In.prototype=Object.create(null),new In().__proto__||(At=!1));function qw(i,e,t){this.fn=i,this.context=e,this.once=t||!1}n(qw,"EE");function km(i,e,t,r,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var o=new qw(t,r||i,s),a=At?At+e:e;return i._events[a]?i._events[a].fn?i._events[a]=[i._events[a],o]:i._events[a].push(o):(i._events[a]=o,i._eventsCount++),i}n(km,"addListener");function Xl(i,e){--i._eventsCount===0?i._events=new In:delete i._events[e]}n(Xl,"clearEvent");function _t(){this._events=new In,this._eventsCount=0}n(_t,"EventEmitter");_t.prototype.eventNames=n(function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)$w.call(t,r)&&e.push(At?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},"eventNames");_t.prototype.listeners=n(function(e){var t=At?At+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,o=r.length,a=new Array(o);s{(function(){"use strict";var i={}.hasOwnProperty;function e(){for(var t=[],r=0;r{ty.exports=n(function(e,t){if(e===t)return!0;for(var r in e)if(!(r in t))return!1;for(var r in t)if(e[r]!==t[r])return!1;return!0},"isShallowEqual")});var oy=he((VT,sy)=>{sy.exports=n(function(e){if(typeof e!="number"||isNaN(e))throw new TypeError("Expected a number, got "+typeof e);var t=e<0,r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];if(t&&(e=-e),e<1)return(t?"-":"")+e+" B";var s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));var o=r[s];return e>=10||e%1===0?(t?"-":"")+e.toFixed(0)+" "+o:(t?"-":"")+e.toFixed(1)+" "+o},"prettierBytes")});var Ay=he((Vd,Wd)=>{(function(i,e){typeof Vd=="object"&&typeof Wd<"u"?Wd.exports=e():typeof define=="function"&&define.amd?define(e):(i=i||self,i.Cropper=e())})(Vd,function(){"use strict";function i(v){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?i=n(function(c){return typeof c},"_typeof"):i=n(function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},"_typeof"),i(v)}n(i,"_typeof");function e(v,c){if(!(v instanceof c))throw new TypeError("Cannot call a class as a function")}n(e,"_classCallCheck");function t(v,c){for(var g=0;gv.length)&&(c=v.length);for(var g=0,m=new Array(c);g
    ',_l=Number.isNaN||S.isNaN;function ie(v){return typeof v=="number"&&!_l(v)}n(ie,"isNumber");var an=n(function(c){return c>0&&c<1/0},"isPositiveNumber");function Po(v){return typeof v>"u"}n(Po,"isUndefined");function Ni(v){return i(v)==="object"&&v!==null}n(Ni,"isObject");var hh=Object.prototype.hasOwnProperty;function Vr(v){if(!Ni(v))return!1;try{var c=v.constructor,g=c.prototype;return c&&g&&hh.call(g,"isPrototypeOf")}catch{return!1}}n(Vr,"isPlainObject");function St(v){return typeof v=="function"}n(St,"isFunction");var dh=Array.prototype.slice;function _o(v){return Array.from?Array.from(v):dh.call(v)}n(_o,"toArray");function Re(v,c){return v&&St(c)&&(Array.isArray(v)||ie(v.length)?_o(v).forEach(function(g,m){c.call(v,g,m,v)}):Ni(v)&&Object.keys(v).forEach(function(g){c.call(v,v[g],g,v)})),v}n(Re,"forEach");var Se=Object.assign||n(function(c){for(var g=arguments.length,m=new Array(g>1?g-1:0),P=1;P0&&m.forEach(function(w){Ni(w)&&Object.keys(w).forEach(function(_){c[_]=w[_]})}),c},"assign"),ln=/\.\d*(?:0|9){12}\d*$/;function Mi(v){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return ln.test(v)?Math.round(v*c)/c:v}n(Mi,"normalizeDecimalNumber");var xl=/^width|height|left|top|marginLeft|marginTop$/;function vi(v,c){var g=v.style;Re(c,function(m,P){xl.test(P)&&ie(m)&&(m="".concat(m,"px")),g[P]=m})}n(vi,"setStyle");function Fl(v,c){return v.classList?v.classList.contains(c):v.className.indexOf(c)>-1}n(Fl,"hasClass");function je(v,c){if(c){if(ie(v.length)){Re(v,function(m){je(m,c)});return}if(v.classList){v.classList.add(c);return}var g=v.className.trim();g?g.indexOf(c)<0&&(v.className="".concat(g," ").concat(c)):v.className=c}}n(je,"addClass");function bi(v,c){if(c){if(ie(v.length)){Re(v,function(g){bi(g,c)});return}if(v.classList){v.classList.remove(c);return}v.className.indexOf(c)>=0&&(v.className=v.className.replace(c,""))}}n(bi,"removeClass");function Wr(v,c,g){if(c){if(ie(v.length)){Re(v,function(m){Wr(m,c,g)});return}g?je(v,c):bi(v,c)}}n(Wr,"toggleClass");var yb=/([a-z\d])([A-Z])/g;function ch(v){return v.replace(yb,"$1-$2").toLowerCase()}n(ch,"toParamCase");function ph(v,c){return Ni(v[c])?v[c]:v.dataset?v.dataset[c]:v.getAttribute("data-".concat(ch(c)))}n(ph,"getData");function un(v,c,g){Ni(g)?v[c]=g:v.dataset?v.dataset[c]=g:v.setAttribute("data-".concat(ch(c)),g)}n(un,"setData");function vb(v,c){if(Ni(v[c]))try{delete v[c]}catch{v[c]=void 0}else if(v.dataset)try{delete v.dataset[c]}catch{v.dataset[c]=void 0}else v.removeAttribute("data-".concat(ch(c)))}n(vb,"removeData");var Vp=/\s\s*/,Wp=function(){var v=!1;if(b){var c=!1,g=n(function(){},"listener"),m=Object.defineProperty({},"once",{get:n(function(){return v=!0,c},"get"),set:n(function(w){c=w},"set")});S.addEventListener("test",g,m),S.removeEventListener("test",g,m)}return v}();function wi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(!Wp){var _=v.listeners;_&&_[w]&&_[w][g]&&(P=_[w][g],delete _[w][g],Object.keys(_[w]).length===0&&delete _[w],Object.keys(_).length===0&&delete v.listeners)}v.removeEventListener(w,P,m)})}n(wi,"removeListener");function hi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(m.once&&!Wp){var _=v.listeners,O=_===void 0?{}:_;P=n(function(){delete O[w][g],v.removeEventListener(w,P,m);for(var A=arguments.length,T=new Array(A),C=0;C1&&arguments[1]!==void 0?arguments[1]:"contain",w=an(m),_=an(g);if(w&&_){var O=g*c;P==="contain"&&O>m||P==="cover"&&O90?{width:D,height:O}:{width:O,height:D}}n(Pb,"getRotatedSizes");function _b(v,c,g,m){var P=c.aspectRatio,w=c.naturalWidth,_=c.naturalHeight,O=c.rotate,D=O===void 0?0:O,A=c.scaleX,T=A===void 0?1:A,C=c.scaleY,k=C===void 0?1:C,ue=g.aspectRatio,le=g.naturalWidth,Ce=g.naturalHeight,fe=m.fillColor,Ze=fe===void 0?"transparent":fe,lt=m.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=m.imageSmoothingQuality,Wt=dr===void 0?"low":dr,M=m.maxWidth,me=M===void 0?1/0:M,et=m.maxHeight,di=et===void 0?1/0:et,cr=m.minWidth,ps=cr===void 0?0:cr,fs=m.minHeight,Kr=fs===void 0?0:fs,Li=document.createElement("canvas"),jt=Li.getContext("2d"),ms=Gr({aspectRatio:ue,width:me,height:di}),Ol=Gr({aspectRatio:ue,width:ps,height:Kr},"cover"),mh=Math.min(ms.width,Math.max(Ol.width,le)),gh=Math.min(ms.height,Math.max(Ol.height,Ce)),Jp=Gr({aspectRatio:P,width:me,height:di}),Zp=Gr({aspectRatio:P,width:ps,height:Kr},"cover"),ef=Math.min(Jp.width,Math.max(Zp.width,w)),tf=Math.min(Jp.height,Math.max(Zp.height,_)),Mb=[-ef/2,-tf/2,ef,tf];return Li.width=Mi(mh),Li.height=Mi(gh),jt.fillStyle=Ze,jt.fillRect(0,0,mh,gh),jt.save(),jt.translate(mh/2,gh/2),jt.rotate(D*Math.PI/180),jt.scale(T,k),jt.imageSmoothingEnabled=Ke,jt.imageSmoothingQuality=Wt,jt.drawImage.apply(jt,[v].concat(l(Mb.map(function(Lb){return Math.floor(Mi(Lb))})))),jt.restore(),Li}n(_b,"getSourceCanvas");var Yp=String.fromCharCode;function xb(v,c,g){var m="";g+=c;for(var P=c;P0;)g.push(Yp.apply(null,_o(P.subarray(0,m)))),P=P.subarray(m);return"data:".concat(c,";base64,").concat(btoa(g.join("")))}n(Ob,"arrayBufferToDataURL");function Cb(v){var c=new DataView(v),g;try{var m,P,w;if(c.getUint8(0)===255&&c.getUint8(1)===216)for(var _=c.byteLength,O=2;O+1<_;){if(c.getUint8(O)===255&&c.getUint8(O+1)===225){P=O;break}O+=1}if(P){var D=P+4,A=P+10;if(xb(c,D,4)==="Exif"){var T=c.getUint16(A);if(m=T===18761,(m||T===19789)&&c.getUint16(A+2,m)===42){var C=c.getUint32(A+4,m);C>=8&&(w=A+C)}}}if(w){var k=c.getUint16(w,m),ue,le;for(le=0;lec.width?m===3?D=c.height*O:A=c.width/O:m===3?A=c.width/O:D=c.height*O;var T={aspectRatio:O,naturalWidth:w,naturalHeight:_,width:D,height:A};T.left=(c.width-D)/2,T.top=(c.height-A)/2,T.oldLeft=T.left,T.oldTop=T.top,this.canvasData=T,this.limited=m===1||m===2,this.limitCanvas(!0,!0),this.initialImageData=Se({},g),this.initialCanvasData=Se({},T)},"initCanvas"),limitCanvas:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=m.viewMode,D=w.aspectRatio,A=this.cropped&&_;if(c){var T=Number(m.minCanvasWidth)||0,C=Number(m.minCanvasHeight)||0;O>1?(T=Math.max(T,P.width),C=Math.max(C,P.height),O===3&&(C*D>T?T=C*D:C=T/D)):O>0&&(T?T=Math.max(T,A?_.width:0):C?C=Math.max(C,A?_.height:0):A&&(T=_.width,C=_.height,C*D>T?T=C*D:C=T/D));var k=Gr({aspectRatio:D,width:T,height:C});T=k.width,C=k.height,w.minWidth=T,w.minHeight=C,w.maxWidth=1/0,w.maxHeight=1/0}if(g)if(O>(A?0:1)){var ue=P.width-w.width,le=P.height-w.height;w.minLeft=Math.min(0,ue),w.minTop=Math.min(0,le),w.maxLeft=Math.max(0,ue),w.maxTop=Math.max(0,le),A&&this.limited&&(w.minLeft=Math.min(_.left,_.left+(_.width-w.width)),w.minTop=Math.min(_.top,_.top+(_.height-w.height)),w.maxLeft=_.left,w.maxTop=_.top,O===2&&(w.width>=P.width&&(w.minLeft=Math.min(0,ue),w.maxLeft=Math.max(0,ue)),w.height>=P.height&&(w.minTop=Math.min(0,le),w.maxTop=Math.max(0,le))))}else w.minLeft=-w.width,w.minTop=-w.height,w.maxLeft=P.width,w.maxTop=P.height},"limitCanvas"),renderCanvas:n(function(c,g){var m=this.canvasData,P=this.imageData;if(g){var w=Pb({width:P.naturalWidth*Math.abs(P.scaleX||1),height:P.naturalHeight*Math.abs(P.scaleY||1),degree:P.rotate||0}),_=w.width,O=w.height,D=m.width*(_/m.naturalWidth),A=m.height*(O/m.naturalHeight);m.left-=(D-m.width)/2,m.top-=(A-m.height)/2,m.width=D,m.height=A,m.aspectRatio=_/O,m.naturalWidth=_,m.naturalHeight=O,this.limitCanvas(!0,!1)}(m.width>m.maxWidth||m.widthm.maxHeight||m.heightg.width?w.height=w.width/m:w.width=w.height*m),this.cropBoxData=w,this.limitCropBox(!0,!0),w.width=Math.min(Math.max(w.width,w.minWidth),w.maxWidth),w.height=Math.min(Math.max(w.height,w.minHeight),w.maxHeight),w.width=Math.max(w.minWidth,w.width*P),w.height=Math.max(w.minHeight,w.height*P),w.left=g.left+(g.width-w.width)/2,w.top=g.top+(g.height-w.height)/2,w.oldLeft=w.left,w.oldTop=w.top,this.initialCropBoxData=Se({},w)},"initCropBox"),limitCropBox:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=this.limited,D=m.aspectRatio;if(c){var A=Number(m.minCropBoxWidth)||0,T=Number(m.minCropBoxHeight)||0,C=O?Math.min(P.width,w.width,w.width+w.left,P.width-w.left):P.width,k=O?Math.min(P.height,w.height,w.height+w.top,P.height-w.top):P.height;A=Math.min(A,P.width),T=Math.min(T,P.height),D&&(A&&T?T*D>A?T=A/D:A=T*D:A?T=A/D:T&&(A=T*D),k*D>C?k=C/D:C=k*D),_.minWidth=Math.min(A,C),_.minHeight=Math.min(T,k),_.maxWidth=C,_.maxHeight=k}g&&(O?(_.minLeft=Math.max(0,w.left),_.minTop=Math.max(0,w.top),_.maxLeft=Math.min(P.width,w.left+w.width)-_.width,_.maxTop=Math.min(P.height,w.top+w.height)-_.height):(_.minLeft=0,_.minTop=0,_.maxLeft=P.width-_.width,_.maxTop=P.height-_.height))},"limitCropBox"),renderCropBox:n(function(){var c=this.options,g=this.containerData,m=this.cropBoxData;(m.width>m.maxWidth||m.widthm.maxHeight||m.height=g.width&&m.height>=g.height?G:U),vi(this.cropBox,Se({width:m.width,height:m.height},hn({translateX:m.left,translateY:m.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},"renderCropBox"),output:n(function(){this.preview(),xo(this.element,ne,this.getData())},"output")},Rb={initPreview:n(function(){var c=this.element,g=this.crossOrigin,m=this.options.preview,P=g?this.crossOriginUrl:this.url,w=c.alt||"The image to preview",_=document.createElement("img");if(g&&(_.crossOrigin=g),_.src=P,_.alt=w,this.viewBox.appendChild(_),this.viewBoxImage=_,!!m){var O=m;typeof m=="string"?O=c.ownerDocument.querySelectorAll(m):m.querySelector&&(O=[m]),this.previews=O,Re(O,function(D){var A=document.createElement("img");un(D,Q,{width:D.offsetWidth,height:D.offsetHeight,html:D.innerHTML}),g&&(A.crossOrigin=g),A.src=P,A.alt=w,A.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',D.innerHTML="",D.appendChild(A)})}},"initPreview"),resetPreview:n(function(){Re(this.previews,function(c){var g=ph(c,Q);vi(c,{width:g.width,height:g.height}),c.innerHTML=g.html,vb(c,Q)})},"resetPreview"),preview:n(function(){var c=this.imageData,g=this.canvasData,m=this.cropBoxData,P=m.width,w=m.height,_=c.width,O=c.height,D=m.left-g.left-c.left,A=m.top-g.top-c.top;!this.cropped||this.disabled||(vi(this.viewBoxImage,Se({width:_,height:O},hn(Se({translateX:-D,translateY:-A},c)))),Re(this.previews,function(T){var C=ph(T,Q),k=C.width,ue=C.height,le=k,Ce=ue,fe=1;P&&(fe=k/P,Ce=w*fe),w&&Ce>ue&&(fe=ue/w,le=P*fe,Ce=ue),vi(T,{width:le,height:Ce}),vi(T.getElementsByTagName("img")[0],Se({width:_*fe,height:O*fe},hn(Se({translateX:-D*fe,translateY:-A*fe},c))))}))},"preview")},Ub={bind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&hi(c,Ee,g.cropstart),St(g.cropmove)&&hi(c,Fe,g.cropmove),St(g.cropend)&&hi(c,re,g.cropend),St(g.crop)&&hi(c,ne,g.crop),St(g.zoom)&&hi(c,ur,g.zoom),hi(m,Ge,this.onCropStart=this.cropStart.bind(this)),g.zoomable&&g.zoomOnWheel&&hi(m,qr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&hi(m,Ft,this.onDblclick=this.dblclick.bind(this)),hi(c.ownerDocument,lr,this.onCropMove=this.cropMove.bind(this)),hi(c.ownerDocument,So,this.onCropEnd=this.cropEnd.bind(this)),g.responsive&&hi(window,$r,this.onResize=this.resize.bind(this))},"bind"),unbind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&wi(c,Ee,g.cropstart),St(g.cropmove)&&wi(c,Fe,g.cropmove),St(g.cropend)&&wi(c,re,g.cropend),St(g.crop)&&wi(c,ne,g.crop),St(g.zoom)&&wi(c,ur,g.zoom),wi(m,Ge,this.onCropStart),g.zoomable&&g.zoomOnWheel&&wi(m,qr,this.onWheel,{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&wi(m,Ft,this.onDblclick),wi(c.ownerDocument,lr,this.onCropMove),wi(c.ownerDocument,So,this.onCropEnd),g.responsive&&wi(window,$r,this.onResize)},"unbind")},kb={resize:n(function(){if(!this.disabled){var c=this.options,g=this.container,m=this.containerData,P=g.offsetWidth/m.width;if(P!==1||g.offsetHeight!==m.height){var w,_;c.restore&&(w=this.getCanvasData(),_=this.getCropBoxData()),this.render(),c.restore&&(this.setCanvasData(Re(w,function(O,D){w[D]=O*P})),this.setCropBoxData(Re(_,function(O,D){_[D]=O*P})))}}},"resize"),dblclick:n(function(){this.disabled||this.options.dragMode===pe||this.setDragMode(Fl(this.dragBox,_e)?ye:X)},"dblclick"),wheel:n(function(c){var g=this,m=Number(this.options.wheelZoomRatio)||.1,P=1;this.disabled||(c.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){g.wheeling=!1},50),c.deltaY?P=c.deltaY>0?1:-1:c.wheelDelta?P=-c.wheelDelta/120:c.detail&&(P=c.detail>0?1:-1),this.zoom(-P*m,c)))},"wheel"),cropStart:n(function(c){var g=c.buttons,m=c.button;if(!(this.disabled||(c.type==="mousedown"||c.type==="pointerdown"&&c.pointerType==="mouse")&&(ie(g)&&g!==1||ie(m)&&m!==0||c.ctrlKey))){var P=this.options,w=this.pointers,_;c.changedTouches?Re(c.changedTouches,function(O){w[O.identifier]=El(O)}):w[c.pointerId||0]=El(c),Object.keys(w).length>1&&P.zoomable&&P.zoomOnTouch?_=J:_=ph(c.target,L),nt.test(_)&&xo(this.element,Ee,{originalEvent:c,action:_})!==!1&&(c.preventDefault(),this.action=_,this.cropping=!1,_===j&&(this.cropping=!0,je(this.dragBox,R)))}},"cropStart"),cropMove:n(function(c){var g=this.action;if(!(this.disabled||!g)){var m=this.pointers;c.preventDefault(),xo(this.element,Fe,{originalEvent:c,action:g})!==!1&&(c.changedTouches?Re(c.changedTouches,function(P){Se(m[P.identifier]||{},El(P,!0))}):Se(m[c.pointerId||0]||{},El(c,!0)),this.change(c))}},"cropMove"),cropEnd:n(function(c){if(!this.disabled){var g=this.action,m=this.pointers;c.changedTouches?Re(c.changedTouches,function(P){delete m[P.identifier]}):delete m[c.pointerId||0],g&&(c.preventDefault(),Object.keys(m).length||(this.action=""),this.cropping&&(this.cropping=!1,Wr(this.dragBox,R,this.cropped&&this.options.modal)),xo(this.element,re,{originalEvent:c,action:g}))}},"cropEnd")},Db={change:n(function(c){var g=this.options,m=this.canvasData,P=this.containerData,w=this.cropBoxData,_=this.pointers,O=this.action,D=g.aspectRatio,A=w.left,T=w.top,C=w.width,k=w.height,ue=A+C,le=T+k,Ce=0,fe=0,Ze=P.width,lt=P.height,Ke=!0,dr;!D&&c.shiftKey&&(D=C&&k?C/k:1),this.limited&&(Ce=w.minLeft,fe=w.minTop,Ze=Ce+Math.min(P.width,m.width,m.left+m.width),lt=fe+Math.min(P.height,m.height,m.top+m.height));var Wt=_[Object.keys(_)[0]],M={x:Wt.endX-Wt.startX,y:Wt.endY-Wt.startY},me=n(function(di){switch(di){case B:ue+M.x>Ze&&(M.x=Ze-ue);break;case z:A+M.xlt&&(M.y=lt-le);break}},"check");switch(O){case U:A+=M.x,T+=M.y;break;case B:if(M.x>=0&&(ue>=Ze||D&&(T<=fe||le>=lt))){Ke=!1;break}me(B),C+=M.x,C<0&&(O=z,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case oe:if(M.y<=0&&(T<=fe||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(oe),k-=M.y,T+=M.y,k<0&&(O=K,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case z:if(M.x<=0&&(A<=Ce||D&&(T<=fe||le>=lt))){Ke=!1;break}me(z),C-=M.x,A+=M.x,C<0&&(O=B,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case K:if(M.y>=0&&(le>=lt||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(K),k+=M.y,k<0&&(O=oe,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case Be:if(D){if(M.y<=0&&(T<=fe||ue>=Ze)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D}else me(oe),me(B),M.x>=0?uefe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=We,k=-k,C=-C,T-=k,A-=C):C<0?(O=Je,C=-C,A-=C):k<0&&(O=wt,k=-k,T-=k);break;case Je:if(D){if(M.y<=0&&(T<=fe||A<=Ce)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D,A+=w.width-C}else me(oe),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y<=0&&T<=fe&&(Ke=!1):(C-=M.x,A+=M.x),M.y<=0?T>fe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=wt,k=-k,C=-C,T-=k,A-=C):C<0?(O=Be,C=-C,A-=C):k<0&&(O=We,k=-k,T-=k);break;case We:if(D){if(M.x<=0&&(A<=Ce||le>=lt)){Ke=!1;break}me(z),C-=M.x,A+=M.x,k=C/D}else me(K),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y>=0&&le>=lt&&(Ke=!1):(C-=M.x,A+=M.x),M.y>=0?le=0&&(ue>=Ze||le>=lt)){Ke=!1;break}me(B),C+=M.x,k=C/D}else me(K),me(B),M.x>=0?ue=0&&le>=lt&&(Ke=!1):C+=M.x,M.y>=0?le0?O=M.y>0?wt:Be:M.x<0&&(A-=C,O=M.y>0?We:Je),M.y<0&&(T-=k),this.cropped||(bi(this.cropBox,xe),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}Ke&&(w.width=C,w.height=k,w.left=A,w.top=T,this.action=O,this.renderCropBox()),Re(_,function(et){et.startX=et.endX,et.startY=et.endY})},"change")},Ib={crop:n(function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&je(this.dragBox,R),bi(this.cropBox,xe),this.setCropBoxData(this.initialCropBoxData)),this},"crop"),reset:n(function(){return this.ready&&!this.disabled&&(this.imageData=Se({},this.initialImageData),this.canvasData=Se({},this.initialCanvasData),this.cropBoxData=Se({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},"reset"),clear:n(function(){return this.cropped&&!this.disabled&&(Se(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),bi(this.dragBox,R),je(this.cropBox,xe)),this},"clear"),replace:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&c&&(this.isImg&&(this.element.src=c),g?(this.url=c,this.image.src=c,this.ready&&(this.viewBoxImage.src=c,Re(this.previews,function(m){m.getElementsByTagName("img")[0].src=c}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(c))),this},"replace"),enable:n(function(){return this.ready&&this.disabled&&(this.disabled=!1,bi(this.cropper,ze)),this},"enable"),disable:n(function(){return this.ready&&!this.disabled&&(this.disabled=!0,je(this.cropper,ze)),this},"disable"),destroy:n(function(){var c=this.element;return c[F]?(c[F]=void 0,this.isImg&&this.replaced&&(c.src=this.originalUrl),this.uncreate(),this):this},"destroy"),move:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=m.left,w=m.top;return this.moveTo(Po(c)?c:P+Number(c),Po(g)?g:w+Number(g))},"move"),moveTo:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.movable&&(ie(c)&&(m.left=c,P=!0),ie(g)&&(m.top=g,P=!0),P&&this.renderCanvas(!0)),this},"moveTo"),zoom:n(function(c,g){var m=this.canvasData;return c=Number(c),c<0?c=1/(1-c):c=1+c,this.zoomTo(m.width*c/m.naturalWidth,null,g)},"zoom"),zoomTo:n(function(c,g,m){var P=this.options,w=this.canvasData,_=w.width,O=w.height,D=w.naturalWidth,A=w.naturalHeight;if(c=Number(c),c>=0&&this.ready&&!this.disabled&&P.zoomable){var T=D*c,C=A*c;if(xo(this.element,ur,{ratio:c,oldRatio:_/D,originalEvent:m})===!1)return this;if(m){var k=this.pointers,ue=Gp(this.cropper),le=k&&Object.keys(k).length?Sb(k):{pageX:m.pageX,pageY:m.pageY};w.left-=(T-_)*((le.pageX-ue.left-w.left)/_),w.top-=(C-O)*((le.pageY-ue.top-w.top)/O)}else Vr(g)&&ie(g.x)&&ie(g.y)?(w.left-=(T-_)*((g.x-w.left)/_),w.top-=(C-O)*((g.y-w.top)/O)):(w.left-=(T-_)/2,w.top-=(C-O)/2);w.width=T,w.height=C,this.renderCanvas(!0)}return this},"zoomTo"),rotate:n(function(c){return this.rotateTo((this.imageData.rotate||0)+Number(c))},"rotate"),rotateTo:n(function(c){return c=Number(c),ie(c)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=c%360,this.renderCanvas(!0,!0)),this},"rotateTo"),scaleX:n(function(c){var g=this.imageData.scaleY;return this.scale(c,ie(g)?g:1)},"scaleX"),scaleY:n(function(c){var g=this.imageData.scaleX;return this.scale(ie(g)?g:1,c)},"scaleY"),scale:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.imageData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.scalable&&(ie(c)&&(m.scaleX=c,P=!0),ie(g)&&(m.scaleY=g,P=!0),P&&this.renderCanvas(!0,!0)),this},"scale"),getData:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.options,m=this.imageData,P=this.canvasData,w=this.cropBoxData,_;if(this.ready&&this.cropped){_={x:w.left-P.left,y:w.top-P.top,width:w.width,height:w.height};var O=m.width/m.naturalWidth;if(Re(_,function(T,C){_[C]=T/O}),c){var D=Math.round(_.y+_.height),A=Math.round(_.x+_.width);_.x=Math.round(_.x),_.y=Math.round(_.y),_.width=A-_.x,_.height=D-_.y}}else _={x:0,y:0,width:0,height:0};return g.rotatable&&(_.rotate=m.rotate||0),g.scalable&&(_.scaleX=m.scaleX||1,_.scaleY=m.scaleY||1),_},"getData"),setData:n(function(c){var g=this.options,m=this.imageData,P=this.canvasData,w={};if(this.ready&&!this.disabled&&Vr(c)){var _=!1;g.rotatable&&ie(c.rotate)&&c.rotate!==m.rotate&&(m.rotate=c.rotate,_=!0),g.scalable&&(ie(c.scaleX)&&c.scaleX!==m.scaleX&&(m.scaleX=c.scaleX,_=!0),ie(c.scaleY)&&c.scaleY!==m.scaleY&&(m.scaleY=c.scaleY,_=!0)),_&&this.renderCanvas(!0,!0);var O=m.width/m.naturalWidth;ie(c.x)&&(w.left=c.x*O+P.left),ie(c.y)&&(w.top=c.y*O+P.top),ie(c.width)&&(w.width=c.width*O),ie(c.height)&&(w.height=c.height*O),this.setCropBoxData(w)}return this},"setData"),getContainerData:n(function(){return this.ready?Se({},this.containerData):{}},"getContainerData"),getImageData:n(function(){return this.sized?Se({},this.imageData):{}},"getImageData"),getCanvasData:n(function(){var c=this.canvasData,g={};return this.ready&&Re(["left","top","width","height","naturalWidth","naturalHeight"],function(m){g[m]=c[m]}),g},"getCanvasData"),setCanvasData:n(function(c){var g=this.canvasData,m=g.aspectRatio;return this.ready&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)?(g.width=c.width,g.height=c.width/m):ie(c.height)&&(g.height=c.height,g.width=c.height*m),this.renderCanvas(!0)),this},"setCanvasData"),getCropBoxData:n(function(){var c=this.cropBoxData,g;return this.ready&&this.cropped&&(g={left:c.left,top:c.top,width:c.width,height:c.height}),g||{}},"getCropBoxData"),setCropBoxData:n(function(c){var g=this.cropBoxData,m=this.options.aspectRatio,P,w;return this.ready&&this.cropped&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)&&c.width!==g.width&&(P=!0,g.width=c.width),ie(c.height)&&c.height!==g.height&&(w=!0,g.height=c.height),m&&(P?g.height=g.width/m:w&&(g.width=g.height*m)),this.renderCropBox()),this},"setCropBoxData"),getCroppedCanvas:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var g=this.canvasData,m=_b(this.image,this.imageData,g,c);if(!this.cropped)return m;var P=this.getData(),w=P.x,_=P.y,O=P.width,D=P.height,A=m.width/Math.floor(g.naturalWidth);A!==1&&(w*=A,_*=A,O*=A,D*=A);var T=O/D,C=Gr({aspectRatio:T,width:c.maxWidth||1/0,height:c.maxHeight||1/0}),k=Gr({aspectRatio:T,width:c.minWidth||0,height:c.minHeight||0},"cover"),ue=Gr({aspectRatio:T,width:c.width||(A!==1?m.width:O),height:c.height||(A!==1?m.height:D)}),le=ue.width,Ce=ue.height;le=Math.min(C.width,Math.max(k.width,le)),Ce=Math.min(C.height,Math.max(k.height,Ce));var fe=document.createElement("canvas"),Ze=fe.getContext("2d");fe.width=Mi(le),fe.height=Mi(Ce),Ze.fillStyle=c.fillColor||"transparent",Ze.fillRect(0,0,le,Ce);var lt=c.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=c.imageSmoothingQuality;Ze.imageSmoothingEnabled=Ke,dr&&(Ze.imageSmoothingQuality=dr);var Wt=m.width,M=m.height,me=w,et=_,di,cr,ps,fs,Kr,Li;me<=-O||me>Wt?(me=0,di=0,ps=0,Kr=0):me<=0?(ps=-me,me=0,di=Math.min(Wt,O+me),Kr=di):me<=Wt&&(ps=0,di=Math.min(O,Wt-me),Kr=di),di<=0||et<=-D||et>M?(et=0,cr=0,fs=0,Li=0):et<=0?(fs=-et,et=0,cr=Math.min(M,D+et),Li=cr):et<=M&&(fs=0,cr=Math.min(D,M-et),Li=cr);var jt=[me,et,di,cr];if(Kr>0&&Li>0){var ms=le/O;jt.push(ps*ms,fs*ms,Kr*ms,Li*ms)}return Ze.drawImage.apply(Ze,[m].concat(l(jt.map(function(Ol){return Math.floor(Mi(Ol))})))),fe},"getCroppedCanvas"),setAspectRatio:n(function(c){var g=this.options;return!this.disabled&&!Po(c)&&(g.aspectRatio=Math.max(0,c)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},"setAspectRatio"),setDragMode:n(function(c){var g=this.options,m=this.dragBox,P=this.face;if(this.ready&&!this.disabled){var w=c===X,_=g.movable&&c===ye;c=w||_?c:pe,g.dragMode=c,un(m,L,c),Wr(m,_e,w),Wr(m,I,_),g.cropBoxMovable||(un(P,L,c),Wr(P,_e,w),Wr(P,I,_))}return this},"setDragMode")},Nb=S.Cropper,Qp=function(){function v(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e(this,v),!c||!Sl.test(c.tagName))throw new Error("The first argument is required and must be an or element.");this.element=c,this.options=Se({},nn,Vr(g)&&g),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return n(v,"Cropper"),r(v,[{key:"init",value:n(function(){var g=this.element,m=g.tagName.toLowerCase(),P;if(!g[F]){if(g[F]=this,m==="img"){if(this.isImg=!0,P=g.getAttribute("src")||"",this.originalUrl=P,!P)return;P=g.src}else m==="canvas"&&window.HTMLCanvasElement&&(P=g.toDataURL());this.load(P)}},"init")},{key:"load",value:n(function(g){var m=this;if(g){this.url=g,this.imageData={};var P=this.element,w=this.options;if(!w.rotatable&&!w.scalable&&(w.checkOrientation=!1),!w.checkOrientation||!window.ArrayBuffer){this.clone();return}if(at.test(g)){wl.test(g)?this.read(Eb(g)):this.clone();return}var _=new XMLHttpRequest,O=this.clone.bind(this);this.reloading=!0,this.xhr=_,_.onabort=O,_.onerror=O,_.ontimeout=O,_.onprogress=function(){_.getResponseHeader("content-type")!==hr&&_.abort()},_.onload=function(){m.read(_.response)},_.onloadend=function(){m.reloading=!1,m.xhr=null},w.checkCrossOrigin&&Kp(g)&&P.crossOrigin&&(g=Xp(g)),_.open("GET",g),_.responseType="arraybuffer",_.withCredentials=P.crossOrigin==="use-credentials",_.send()}},"load")},{key:"read",value:n(function(g){var m=this.options,P=this.imageData,w=Cb(g),_=0,O=1,D=1;if(w>1){this.url=Ob(g,hr);var A=Tb(w);_=A.rotate,O=A.scaleX,D=A.scaleY}m.rotatable&&(P.rotate=_),m.scalable&&(P.scaleX=O,P.scaleY=D),this.clone()},"read")},{key:"clone",value:n(function(){var g=this.element,m=this.url,P=g.crossOrigin,w=m;this.options.checkCrossOrigin&&Kp(m)&&(P||(P="anonymous"),w=Xp(m)),this.crossOrigin=P,this.crossOriginUrl=w;var _=document.createElement("img");P&&(_.crossOrigin=P),_.src=w||m,_.alt=g.alt||"The image to crop",this.image=_,_.onload=this.start.bind(this),_.onerror=this.stop.bind(this),je(_,ui),g.parentNode.insertBefore(_,g.nextSibling)},"clone")},{key:"start",value:n(function(){var g=this,m=this.image;m.onload=null,m.onerror=null,this.sizing=!0;var P=S.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(S.navigator.userAgent),w=n(function(A,T){Se(g.imageData,{naturalWidth:A,naturalHeight:T,aspectRatio:A/T}),g.sizing=!1,g.sized=!0,g.build()},"done");if(m.naturalWidth&&!P){w(m.naturalWidth,m.naturalHeight);return}var _=document.createElement("img"),O=document.body||document.documentElement;this.sizingImage=_,_.onload=function(){w(_.width,_.height),P||O.removeChild(_)},_.src=m.src,P||(_.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",O.appendChild(_))},"start")},{key:"stop",value:n(function(){var g=this.image;g.onload=null,g.onerror=null,g.parentNode.removeChild(g),this.image=null},"stop")},{key:"build",value:n(function(){if(!(!this.sized||this.ready)){var g=this.element,m=this.options,P=this.image,w=g.parentNode,_=document.createElement("div");_.innerHTML=Pl;var O=_.querySelector(".".concat(F,"-container")),D=O.querySelector(".".concat(F,"-canvas")),A=O.querySelector(".".concat(F,"-drag-box")),T=O.querySelector(".".concat(F,"-crop-box")),C=T.querySelector(".".concat(F,"-face"));this.container=w,this.cropper=O,this.canvas=D,this.dragBox=A,this.cropBox=T,this.viewBox=O.querySelector(".".concat(F,"-view-box")),this.face=C,D.appendChild(P),je(g,xe),w.insertBefore(O,g.nextSibling),this.isImg||bi(P,ui),this.initPreview(),this.bind(),m.initialAspectRatio=Math.max(0,m.initialAspectRatio)||NaN,m.aspectRatio=Math.max(0,m.aspectRatio)||NaN,m.viewMode=Math.max(0,Math.min(3,Math.round(m.viewMode)))||0,je(T,xe),m.guides||je(T.getElementsByClassName("".concat(F,"-dashed")),xe),m.center||je(T.getElementsByClassName("".concat(F,"-center")),xe),m.background&&je(O,"".concat(F,"-bg")),m.highlight||je(C,V),m.cropBoxMovable&&(je(C,I),un(C,L,U)),m.cropBoxResizable||(je(T.getElementsByClassName("".concat(F,"-line")),xe),je(T.getElementsByClassName("".concat(F,"-point")),xe)),this.render(),this.ready=!0,this.setDragMode(m.dragMode),m.autoCrop&&this.crop(),this.setData(m.data),St(m.ready)&&hi(g,Hr,m.ready,{once:!0}),xo(g,Hr)}},"build")},{key:"unbuild",value:n(function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),bi(this.element,xe))},"unbuild")},{key:"uncreate",value:n(function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()},"uncreate")}],[{key:"noConflict",value:n(function(){return window.Cropper=Nb,v},"noConflict")},{key:"setDefaults",value:n(function(g){Se(nn,Vr(g)&&g)},"setDefaults")}]),v}();return Se(Qp.prototype,Ab,Rb,Ub,kb,Db,Ib),Qp})});var sv=he((uD,Bu)=>{"use strict";Bu.exports=cc;Bu.exports.isMobile=cc;Bu.exports.default=cc;var wP=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,SP=/CrOS/,PP=/android|ipad|playbook|silk/i;function cc(i){i||(i={});let e=i.ua;if(!e&&typeof navigator<"u"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),typeof e!="string")return!1;let t=wP.test(e)&&!SP.test(e)||!!i.tablet&&PP.test(e);return!t&&i.tablet&&i.featureDetect&&navigator&&navigator.maxTouchPoints>1&&e.indexOf("Macintosh")!==-1&&e.indexOf("Safari")!==-1&&(t=!0),t}n(cc,"isMobile")});var Kv=he((c9,Gv)=>{"use strict";Gv.exports=n(function(e,t){if(t=t.split(":")[0],e=+e,!e)return!1;switch(t){case"http":case"ws":return e!==80;case"https":case"wss":return e!==443;case"ftp":return e!==21;case"gopher":return e!==70;case"file":return!1}return e!==0},"required")});var Qv=he(Vc=>{"use strict";var U_=Object.prototype.hasOwnProperty,k_;function Xv(i){try{return decodeURIComponent(i.replace(/\+/g," "))}catch{return null}}n(Xv,"decode");function Yv(i){try{return encodeURIComponent(i)}catch{return null}}n(Yv,"encode");function D_(i){for(var e=/([^=?#&]+)=?([^&]*)/g,t={},r;r=e.exec(i);){var s=Xv(r[1]),o=Xv(r[2]);s===null||o===null||s in t||(t[s]=o)}return t}n(D_,"querystring");function I_(i,e){e=e||"";var t=[],r,s;typeof e!="string"&&(e="?");for(s in i)if(U_.call(i,s)){if(r=i[s],!r&&(r===null||r===k_||isNaN(r))&&(r=""),s=Yv(s),r=Yv(r),s===null||r===null)continue;t.push(s+"="+r)}return t.length?e+t.join("&"):""}n(I_,"querystringify");Vc.stringify=I_;Vc.parse=D_});var o0=he((g9,s0)=>{"use strict";var Zv=Kv(),Yu=Qv(),N_=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,e0=/[\n\r\t]/g,M_=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,t0=/:\d+$/,L_=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,B_=/^[a-zA-Z]:/;function Gc(i){return(i||"").toString().replace(N_,"")}n(Gc,"trimLeft");var Wc=[["#","hash"],["?","query"],n(function(e,t){return rr(t.protocol)?e.replace(/\\/g,"/"):e},"sanitize"),["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],Jv={hash:1,query:1};function i0(i){var e;typeof window<"u"?e=window:typeof global<"u"?e=global:typeof self<"u"?e=self:e={};var t=e.location||{};i=i||t;var r={},s=typeof i,o;if(i.protocol==="blob:")r=new sr(unescape(i.pathname),{});else if(s==="string"){r=new sr(i,{});for(o in Jv)delete r[o]}else if(s==="object"){for(o in i)o in Jv||(r[o]=i[o]);r.slashes===void 0&&(r.slashes=M_.test(i.href))}return r}n(i0,"lolcation");function rr(i){return i==="file:"||i==="ftp:"||i==="http:"||i==="https:"||i==="ws:"||i==="wss:"}n(rr,"isSpecial");function r0(i,e){i=Gc(i),i=i.replace(e0,""),e=e||{};var t=L_.exec(i),r=t[1]?t[1].toLowerCase():"",s=!!t[2],o=!!t[3],a=0,l;return s?o?(l=t[2]+t[3]+t[4],a=t[2].length+t[3].length):(l=t[2]+t[4],a=t[2].length):o?(l=t[3]+t[4],a=t[3].length):l=t[4],r==="file:"?a>=2&&(l=l.slice(2)):rr(r)?l=t[4]:r?s&&(l=l.slice(2)):a>=2&&rr(e.protocol)&&(l=t[4]),{protocol:r,slashes:s||rr(r),slashesCount:a,rest:l}}n(r0,"extractProtocol");function z_(i,e){if(i==="")return e;for(var t=(e||"/").split("/").slice(0,-1).concat(i.split("/")),r=t.length,s=t[r-1],o=!1,a=0;r--;)t[r]==="."?t.splice(r,1):t[r]===".."?(t.splice(r,1),a++):a&&(r===0&&(o=!0),t.splice(r,1),a--);return o&&t.unshift(""),(s==="."||s==="..")&&t.push(""),t.join("/")}n(z_,"resolve");function sr(i,e,t){if(i=Gc(i),i=i.replace(e0,""),!(this instanceof sr))return new sr(i,e,t);var r,s,o,a,l,h,p=Wc.slice(),d=typeof e,f=this,y=0;for(d!=="object"&&d!=="string"&&(t=e,e=null),t&&typeof t!="function"&&(t=Yu.parse),e=i0(e),s=r0(i||"",e),r=!s.protocol&&!s.slashes,f.slashes=s.slashes||r&&e.slashes,f.protocol=s.protocol||e.protocol||"",i=s.rest,(s.protocol==="file:"&&(s.slashesCount!==2||B_.test(i))||!s.slashes&&(s.protocol||s.slashesCount<2||!rr(f.protocol)))&&(p[3]=[/(.*)/,"pathname"]);y{typeof dp<"u"&&(dp.exports=ni);function ni(i){if(i)return j5(i)}n(ni,"Emitter");function j5(i){for(var e in ni.prototype)i[e]=ni.prototype[e];return i}n(j5,"mixin");ni.prototype.on=ni.prototype.addEventListener=function(i,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+i]=this._callbacks["$"+i]||[]).push(e),this};ni.prototype.once=function(i,e){function t(){this.off(i,t),e.apply(this,arguments)}return n(t,"on"),t.fn=e,this.on(i,t),this};ni.prototype.off=ni.prototype.removeListener=ni.prototype.removeAllListeners=ni.prototype.removeEventListener=function(i,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+i];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+i],this;for(var r,s=0;s{(function(i,e){typeof jp=="object"&&typeof Hp<"u"?Hp.exports=e():typeof define=="function"&&define.amd?define(e):(i=typeof globalThis<"u"?globalThis:i||self,i.Compressor=e())})(jp,function(){"use strict";function i(V,R){var I=Object.keys(V);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(V);R&&(L=L.filter(function(Q){return Object.getOwnPropertyDescriptor(V,Q).enumerable})),I.push.apply(I,L)}return I}n(i,"ownKeys");function e(V){for(var R=1;R"u"||function(R){var I=R.HTMLCanvasElement&&R.HTMLCanvasElement.prototype,L=R.Blob&&function(){try{return!!new Blob}catch{return!1}}(),Q=L&&R.Uint8Array&&function(){try{return new Blob([new Uint8Array(100)]).size===100}catch{return!1}}(),X=R.BlobBuilder||R.WebKitBlobBuilder||R.MozBlobBuilder||R.MSBlobBuilder,ye=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,pe=(L||X)&&R.atob&&R.ArrayBuffer&&R.Uint8Array&&function(ne){var re,Fe,Ee,Ft,Et,te,Ot,Ge,lr;if(re=ne.match(ye),!re)throw new Error("invalid data URI");for(Fe=re[2]?re[1]:"text/plain"+(re[3]||";charset=US-ASCII"),Ee=!!re[4],Ft=ne.slice(re[0].length),Ee?Et=atob(Ft):Et=decodeURIComponent(Ft),te=new ArrayBuffer(Et.length),Ot=new Uint8Array(te),Ge=0;Ge"u"?!1:R instanceof Blob||Object.prototype.toString.call(R)==="[object Blob]"},"isBlob"),d={strict:!0,checkOrientation:!0,maxWidth:1/0,maxHeight:1/0,minWidth:0,minHeight:0,width:void 0,height:void 0,resize:"none",quality:.8,mimeType:"auto",convertTypes:["image/png"],convertSize:5e6,beforeDraw:null,drew:null,success:null,error:null},f=typeof window<"u"&&typeof window.document<"u",y=f?window:{},b=n(function(R){return R>0&&R<1/0},"isPositiveNumber"),S=Array.prototype.slice;function E(V){return Array.from?Array.from(V):S.call(V)}n(E,"toArray");var x=/^image\/.+$/;function F(V){return x.test(V)}n(F,"isImageType");function U(V){var R=F(V)?V.substr(6):"";return R==="jpeg"&&(R="jpg"),".".concat(R)}n(U,"imageTypeToExtension");var j=String.fromCharCode;function G(V,R,I){var L="",Q;for(I+=R,Q=R;Q0;)I.push(j.apply(null,E(Q.subarray(0,L)))),Q=Q.subarray(L);return"data:".concat(R,";base64,").concat(J(I.join("")))}n(B,"arrayBufferToDataURL");function z(V){var R=new DataView(V),I;try{var L,Q,X;if(R.getUint8(0)===255&&R.getUint8(1)===216)for(var ye=R.byteLength,pe=2;pe+1=8&&(X=re+Ee)}}}if(X){var Ft=R.getUint16(X,L),Et,te;for(te=0;te1&&arguments[1]!==void 0?arguments[1]:1e11;return oe.test(V)?Math.round(V*R)/R:V}n(Be,"normalizeDecimalNumber");function Je(V){var R=V.aspectRatio,I=V.height,L=V.width,Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"none",X=b(L),ye=b(I);if(X&&ye){var pe=I*R;(Q==="contain"||Q==="none")&&pe>L||Q==="cover"&&pe1||!_e?(Ee.url=B(Fe,X),Ft>1&&a(Ee,K(Ft))):Ee.url=_e.createObjectURL(L)}else Ee.url=Fe;I.load(Ee)},ye.onabort=function(){I.fail(new Error("Aborted to read the image with FileReader."))},ye.onerror=function(){I.fail(new Error("Failed to read the image with FileReader."))},ye.onloadend=function(){I.reader=null},pe?ye.readAsArrayBuffer(L):ye.readAsDataURL(L)}},"init")},{key:"load",value:n(function(I){var L=this,Q=this.file,X=this.image;X.onload=function(){L.draw(e(e({},I),{},{naturalWidth:X.naturalWidth,naturalHeight:X.naturalHeight}))},X.onabort=function(){L.fail(new Error("Aborted to load the image."))},X.onerror=function(){L.fail(new Error("Failed to load the image."))},y.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(y.navigator.userAgent)&&(X.crossOrigin="anonymous"),X.alt=Q.name,X.src=I.url},"load")},{key:"draw",value:n(function(I){var L=this,Q=I.naturalWidth,X=I.naturalHeight,ye=I.rotate,pe=ye===void 0?0:ye,ne=I.scaleX,re=ne===void 0?1:ne,Fe=I.scaleY,Ee=Fe===void 0?1:Fe,Ft=this.file,Et=this.image,te=this.options,Ot=document.createElement("canvas"),Ge=Ot.getContext("2d"),lr=Math.abs(pe)%180===90,So=(te.resize==="contain"||te.resize==="cover")&&b(te.width)&&b(te.height),Hr=Math.max(te.maxWidth,0)||1/0,$r=Math.max(te.maxHeight,0)||1/0,qr=Math.max(te.minWidth,0)||0,ur=Math.max(te.minHeight,0)||0,hr=Q/X,nt=te.width,at=te.height;if(lr){var wl=[$r,Hr];Hr=wl[0],$r=wl[1];var Sl=[ur,qr];qr=Sl[0],ur=Sl[1];var nn=[at,nt];nt=nn[0],at=nn[1]}So&&(hr=nt/at);var Pl=Je({aspectRatio:hr,width:Hr,height:$r},"contain");Hr=Pl.width,$r=Pl.height;var _l=Je({aspectRatio:hr,width:qr,height:ur},"cover");if(qr=_l.width,ur=_l.height,So){var ie=Je({aspectRatio:hr,width:nt,height:at},te.resize);nt=ie.width,at=ie.height}else{var an=Je({aspectRatio:hr,width:nt,height:at}),Po=an.width;nt=Po===void 0?Q:Po;var Ni=an.height;at=Ni===void 0?X:Ni}nt=Math.floor(Be(Math.min(Math.max(nt,qr),Hr))),at=Math.floor(Be(Math.min(Math.max(at,ur),$r)));var hh=-nt/2,Vr=-at/2,St=nt,dh=at,_o=[];if(So){var Re=0,Se=0,ln=Q,Mi=X,xl=Je({aspectRatio:hr,width:Q,height:X},{contain:"cover",cover:"contain"}[te.resize]);ln=xl.width,Mi=xl.height,Re=(Q-ln)/2,Se=(X-Mi)/2,_o.push(Re,Se,ln,Mi)}if(_o.push(hh,Vr,St,dh),lr){var vi=[at,nt];nt=vi[0],at=vi[1]}Ot.width=nt,Ot.height=at,F(te.mimeType)||(te.mimeType=Ft.type);var Fl="transparent";if(Ft.size>te.convertSize&&te.convertTypes.indexOf(te.mimeType)>=0&&(te.mimeType="image/jpeg"),te.mimeType==="image/jpeg"&&(Fl="#fff"),Ge.fillStyle=Fl,Ge.fillRect(0,0,nt,at),te.beforeDraw&&te.beforeDraw.call(this,Ge,Ot),!this.aborted&&(Ge.save(),Ge.translate(nt/2,at/2),Ge.rotate(pe*Math.PI/180),Ge.scale(re,Ee),Ge.drawImage.apply(Ge,[Et].concat(_o)),Ge.restore(),te.drew&&te.drew.call(this,Ge,Ot),!this.aborted)){var je=n(function(Wr){L.aborted||L.done({naturalWidth:Q,naturalHeight:X,result:Wr})},"done");Ot.toBlob?Ot.toBlob(je,te.mimeType,te.quality):je(h(Ot.toDataURL(te.mimeType,te.quality)))}},"draw")},{key:"done",value:n(function(I){var L=I.naturalWidth,Q=I.naturalHeight,X=I.result,ye=this.file,pe=this.image,ne=this.options;if(_e&&!ne.checkOrientation&&_e.revokeObjectURL(pe.src),X)if(ne.strict&&X.size>ye.size&&ne.mimeType===ye.type&&!(ne.width>L||ne.height>Q||ne.minWidth>L||ne.minHeight>Q||ne.maxWidthns,AwsS3:()=>no,AwsS3Multipart:()=>Ri,BasePlugin:()=>ve,Box:()=>Xi,Compressor:()=>on,Core:()=>qx,Dashboard:()=>is,DefaultStore:()=>kl,DragDrop:()=>Gi,DropTarget:()=>Ns,Dropbox:()=>Yi,Facebook:()=>Qi,FileInput:()=>rs,Form:()=>go,GoldenRetriever:()=>bo,GoogleDrive:()=>Ji,ImageEditor:()=>ss,Informer:()=>qi,Instagram:()=>Zi,OneDrive:()=>er,ProgressBar:()=>os,ReduxDevTools:()=>wo,ReduxStore:()=>fg,RemoteSources:()=>zs,ScreenCapture:()=>as,StatusBar:()=>$i,ThumbnailGenerator:()=>Cr,Transloadit:()=>yi,Tus:()=>or,UIPlugin:()=>Z,Unsplash:()=>tr,Uppy:()=>Ah,Url:()=>Ti,Webcam:()=>ls,XHRUpload:()=>mo,Zoom:()=>ir,debugLogger:()=>mn,locales:()=>Wx,server:()=>Bh,views:()=>Vx});function Ct(i,e){return Object.prototype.hasOwnProperty.call(i,e)}n(Ct,"has");function rf(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(rf,"_classPrivateFieldLooseBase");var Vb=0;function Wb(i){return"__private_"+Vb+++"_"+i}n(Wb,"_classPrivateFieldLooseKey");function Gb(i,e,t){let r=[];return i.forEach(s=>typeof s!="string"?r.push(s):e[Symbol.split](s).forEach((o,a,l)=>{o!==""&&r.push(o),a{let e="",t=i;for(;t--;)e+=Xb[Math.random()*64|0];return e},"nanoid");var em=de(Rl(),1);function Ul(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Ul,"_classPrivateFieldLooseBase");var H1=0;function Lf(i){return"__private_"+H1+++"_"+i}n(Lf,"_classPrivateFieldLooseKey");var $1={version:"3.1.0"},gs=Lf("callbacks"),Ph=Lf("publish"),pn=class{constructor(){Object.defineProperty(this,Ph,{value:q1}),this.state={},Object.defineProperty(this,gs,{writable:!0,value:new Set})}getState(){return this.state}setState(e){let t={...this.state},r={...this.state,...e};this.state=r,Ul(this,Ph)[Ph](t,r,e)}subscribe(e){return Ul(this,gs)[gs].add(e),()=>{Ul(this,gs)[gs].delete(e)}}};n(pn,"DefaultStore");function q1(){for(var i=arguments.length,e=new Array(i),t=0;t{r(...e)})}n(q1,"_publish2");pn.VERSION=$1.version;var kl=pn;function Bi(i){let e=i.lastIndexOf(".");return e===-1||e===i.length-1?{name:i,extension:void 0}:{name:i.slice(0,e),extension:i.slice(e+1)}}n(Bi,"getFileNameAndExtension");var fn={__proto__:null,md:"text/markdown",markdown:"text/markdown",mp4:"video/mp4",mp3:"audio/mp3",svg:"image/svg+xml",jpg:"image/jpeg",png:"image/png",webp:"image/webp",gif:"image/gif",heic:"image/heic",heif:"image/heif",yaml:"text/yaml",yml:"text/yaml",csv:"text/csv",tsv:"text/tab-separated-values",tab:"text/tab-separated-values",avi:"video/x-msvideo",mks:"video/x-matroska",mkv:"video/x-matroska",mov:"video/quicktime",dicom:"application/dicom",doc:"application/msword",docm:"application/vnd.ms-word.document.macroenabled.12",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",dot:"application/msword",dotm:"application/vnd.ms-word.template.macroenabled.12",dotx:"application/vnd.openxmlformats-officedocument.wordprocessingml.template",xla:"application/vnd.ms-excel",xlam:"application/vnd.ms-excel.addin.macroenabled.12",xlc:"application/vnd.ms-excel",xlf:"application/x-xliff+xml",xlm:"application/vnd.ms-excel",xls:"application/vnd.ms-excel",xlsb:"application/vnd.ms-excel.sheet.binary.macroenabled.12",xlsm:"application/vnd.ms-excel.sheet.macroenabled.12",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xlt:"application/vnd.ms-excel",xltm:"application/vnd.ms-excel.template.macroenabled.12",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template",xlw:"application/vnd.ms-excel",txt:"text/plain",text:"text/plain",conf:"text/plain",log:"text/plain",pdf:"application/pdf",zip:"application/zip","7z":"application/x-7z-compressed",rar:"application/x-rar-compressed",tar:"application/x-tar",gz:"application/gzip",dmg:"application/x-apple-diskimage"};function ys(i){var e;if(i.type)return i.type;let t=i.name?(e=Bi(i.name).extension)==null?void 0:e.toLowerCase():null;return t&&t in fn?fn[t]:"application/octet-stream"}n(ys,"getFileType");function V1(i){return i.charCodeAt(0).toString(32)}n(V1,"encodeCharacter");function Bf(i){let e="";return i.replace(/[^A-Z0-9]/gi,t=>(e+=`-${V1(t)}`,"/"))+e}n(Bf,"encodeFilename");function zf(i){let e="uppy";return typeof i.name=="string"&&(e+=`-${Bf(i.name.toLowerCase())}`),i.type!==void 0&&(e+=`-${i.type}`),i.meta&&typeof i.meta.relativePath=="string"&&(e+=`-${Bf(i.meta.relativePath.toLowerCase())}`),i.data.size!==void 0&&(e+=`-${i.data.size}`),i.data.lastModified!==void 0&&(e+=`-${i.data.lastModified}`),e}n(zf,"generateFileID");function W1(i){return!i.isRemote||!i.remote?!1:new Set(["box","dropbox","drive","facebook","unsplash"]).has(i.remote.provider)}n(W1,"hasFileStableId");function Dl(i){if(W1(i))return i.id;let e=ys(i);return zf({...i,type:e})}n(Dl,"getSafeFileId");function _h(i){if(i==null&&typeof navigator<"u"&&(i=navigator.userAgent),!i)return!0;let e=/Edge\/(\d+\.\d+)/.exec(i);if(!e)return!0;let t=e[1],[r,s]=t.split(".");return r=parseInt(r,10),s=parseInt(s,10),r<15||r===15&&s<15063||r>18||r===18&&s>=18218}n(_h,"supportsUploadProgress");function xh(i,e){return e.name?e.name:i.split("/")[0]==="image"?`${i.split("/")[0]}.${i.split("/")[1]}`:"noname"}n(xh,"getFileName");function Fh(i){return i<10?`0${i}`:i.toString()}n(Fh,"pad");function Fo(){let i=new Date,e=Fh(i.getHours()),t=Fh(i.getMinutes()),r=Fh(i.getSeconds());return`${e}:${t}:${r}`}n(Fo,"getTimeStamp");var jf={debug:()=>{},warn:()=>{},error:function(){for(var i=arguments.length,e=new Array(i),t=0;t{let r=e();if(r.restrictions.allowedFileTypes!=null&&!Array.isArray(r.restrictions.allowedFileTypes))throw new TypeError("`restrictions.allowedFileTypes` must be an array");return r}}validateAggregateRestrictions(e,t){let{maxTotalFileSize:r,maxNumberOfFiles:s}=this.getOpts().restrictions;if(s&&e.filter(a=>!a.isGhost).length+t.length>s)throw new Tt(`${this.i18n("youCanOnlyUploadX",{smart_count:s})}`);if(r){let o=e.reduce((a,l)=>a+l.size,0);for(let a of t)if(a.size!=null&&(o+=a.size,o>r))throw new Tt(this.i18n("exceedsSize",{size:(0,Nl.default)(r),file:a.name}))}}validateSingleFile(e){let{maxFileSize:t,minFileSize:r,allowedFileTypes:s}=this.getOpts().restrictions;if(s&&!s.some(a=>a.includes("/")?e.type?(0,Kf.default)(e.type.replace(/;.*?$/,""),a):!1:a[0]==="."&&e.extension?e.extension.toLowerCase()===a.slice(1).toLowerCase():!1)){let a=s.join(", ");throw new Tt(this.i18n("youCanOnlyUploadFileTypes",{types:a}),{file:e})}if(t&&e.size!=null&&e.size>t)throw new Tt(this.i18n("exceedsSize",{size:(0,Nl.default)(t),file:e.name}),{file:e});if(r&&e.size!=null&&e.size{this.validateSingleFile(r)}),this.validateAggregateRestrictions(e,t)}validateMinNumberOfFiles(e){let{minNumberOfFiles:t}=this.getOpts().restrictions;if(Object.keys(e).length({totalProgress:0,allowNewUpload:!0,error:null,recoveredState:null}),"getDefaultUploadState"),ht=Xe("plugins"),Gt=Xe("restricter"),yn=Xe("storeUnsubscribe"),pr=Xe("emitter"),vs=Xe("preProcessors"),bs=Xe("uploaders"),gr=Xe("postProcessors"),Kt=Xe("informAndEmit"),Pn=Xe("checkRequiredMetaFieldsOnFile"),Eh=Xe("checkRequiredMetaFields"),vn=Xe("assertNewUploadAllowed"),Th=Xe("transformFile"),bn=Xe("startIfAutoProceed"),wn=Xe("checkAndUpdateFileState"),Oh=Xe("addListeners"),Si=Xe("updateOnlineStatus"),fr=Xe("createUpload"),Ch=Xe("getUpload"),ws=Xe("removeUpload"),mr=Xe("runUpload");Qf=Symbol.for("uppy test: getPlugins");Jf=Symbol.for("uppy test: createUpload");var Sn=class{constructor(e){Object.defineProperty(this,mr,{value:lw}),Object.defineProperty(this,ws,{value:aw}),Object.defineProperty(this,Ch,{value:nw}),Object.defineProperty(this,fr,{value:ow}),Object.defineProperty(this,Oh,{value:sw}),Object.defineProperty(this,wn,{value:rw}),Object.defineProperty(this,bn,{value:iw}),Object.defineProperty(this,Th,{value:tw}),Object.defineProperty(this,vn,{value:ew}),Object.defineProperty(this,Eh,{value:Z1}),Object.defineProperty(this,Pn,{value:J1}),Object.defineProperty(this,Kt,{value:Q1}),Object.defineProperty(this,ht,{writable:!0,value:Object.create(null)}),Object.defineProperty(this,Gt,{writable:!0,value:void 0}),Object.defineProperty(this,yn,{writable:!0,value:void 0}),Object.defineProperty(this,pr,{writable:!0,value:(0,Zf.default)()}),Object.defineProperty(this,vs,{writable:!0,value:new Set}),Object.defineProperty(this,bs,{writable:!0,value:new Set}),Object.defineProperty(this,gr,{writable:!0,value:new Set}),this.calculateProgress=(0,em.default)((r,s)=>{let o=this.getFile(r?.id);if(r==null||!o){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}if(o.progress.percentage===100){this.log(`Not setting progress for a file that has been already uploaded: ${r.id}`);return}let a=Number.isFinite(s.bytesTotal)&&s.bytesTotal>0;this.setFileState(r.id,{progress:{...o.progress,bytesUploaded:s.bytesUploaded,bytesTotal:s.bytesTotal,percentage:a?Math.round(s.bytesUploaded/s.bytesTotal*100):0}}),this.calculateTotalProgress()},500,{leading:!0,trailing:!0}),Object.defineProperty(this,Si,{writable:!0,value:this.updateOnlineStatus.bind(this)}),this.defaultLocale=Yf;let t={id:"uppy",autoProceed:!1,allowMultipleUploadBatches:!0,debug:!1,restrictions:Xf,meta:{},onBeforeFileAdded:(r,s)=>!Object.hasOwn(s,r.id),onBeforeUpload:r=>r,store:new kl,logger:jf,infoTimeout:5e3};this.opts={...t,...e,restrictions:{...t.restrictions,...e&&e.restrictions}},e&&e.logger&&e.debug?this.log("You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.","warning"):e&&e.debug&&(this.opts.logger=mn),this.log(`Using Core v${this.constructor.VERSION}`),this.i18nInit(),this.store=this.opts.store,this.setState({...Ml(),plugins:{},files:{},currentUploads:{},capabilities:{uploadProgress:_h(),individualCancellation:!0,resumableUploads:!1},meta:{...this.opts.meta},info:[]}),q(this,Gt)[Gt]=new gn(()=>this.opts,this.i18n),q(this,yn)[yn]=this.store.subscribe((r,s,o)=>{this.emit("state-update",r,s,o),this.updateAll(s)}),this.opts.debug&&typeof window<"u"&&(window[this.opts.id]=this),q(this,Oh)[Oh]()}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s{t.update(e)})}setState(e){this.store.setState(e)}getState(){return this.store.getState()}patchFilesState(e){let t=this.getState().files;this.setState({files:{...t,...Object.fromEntries(Object.entries(e).map(r=>{let[s,o]=r;return[s,{...t[s],...o}]}))}})}setFileState(e,t){if(!this.getState().files[e])throw new Error(`Can\u2019t set state for ${e} (the file could have been removed)`);this.patchFilesState({[e]:t})}i18nInit(){let e=new Xr([this.defaultLocale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.locale=e.locale}setOptions(e){this.opts={...this.opts,...e,restrictions:{...this.opts.restrictions,...e&&e.restrictions}},e.meta&&this.setMeta(e.meta),this.i18nInit(),e.locale&&this.iteratePlugins(t=>{t.setOptions(e)}),this.setState()}resetProgress(){let e={percentage:0,bytesUploaded:0,uploadComplete:!1,uploadStarted:null},t={...this.getState().files},r={};Object.keys(t).forEach(s=>{r[s]={...t[s],progress:{...t[s].progress,...e}}}),this.setState({files:r,...Ml()}),this.emit("reset-progress")}clearUploadedFiles(){this.setState({...Ml(),files:{}})}addPreProcessor(e){q(this,vs)[vs].add(e)}removePreProcessor(e){return q(this,vs)[vs].delete(e)}addPostProcessor(e){q(this,gr)[gr].add(e)}removePostProcessor(e){return q(this,gr)[gr].delete(e)}addUploader(e){q(this,bs)[bs].add(e)}removeUploader(e){return q(this,bs)[bs].delete(e)}setMeta(e){let t={...this.getState().meta,...e},r={...this.getState().files};Object.keys(r).forEach(s=>{r[s]={...r[s],meta:{...r[s].meta,...e}}}),this.log("Adding metadata:"),this.log(e),this.setState({meta:t,files:r})}setFileMeta(e,t){let r={...this.getState().files};if(!r[e]){this.log("Was trying to set metadata for a file that has been removed: ",e);return}let s={...r[e].meta,...t};r[e]={...r[e],meta:s},this.setState({files:r})}getFile(e){return this.getState().files[e]}getFiles(){let{files:e}=this.getState();return Object.values(e)}getFilesByIds(e){return e.map(t=>this.getFile(t))}getObjectOfFilesPerState(){let{files:e,totalProgress:t,error:r}=this.getState(),s=Object.values(e),o=s.filter(S=>{let{progress:E}=S;return!E.uploadComplete&&E.uploadStarted}),a=s.filter(S=>!S.progress.uploadStarted),l=s.filter(S=>S.progress.uploadStarted||S.progress.preprocess||S.progress.postprocess),h=s.filter(S=>S.progress.uploadStarted),p=s.filter(S=>S.isPaused),d=s.filter(S=>S.progress.uploadComplete),f=s.filter(S=>S.error),y=o.filter(S=>!S.isPaused),b=s.filter(S=>S.progress.preprocess||S.progress.postprocess);return{newFiles:a,startedFiles:l,uploadStartedFiles:h,pausedFiles:p,completeFiles:d,erroredFiles:f,inProgressFiles:o,inProgressNotPausedFiles:y,processingFiles:b,isUploadStarted:h.length>0,isAllComplete:t===100&&d.length===s.length&&b.length===0,isAllErrored:!!r&&f.length===s.length,isAllPaused:o.length!==0&&p.length===o.length,isUploadInProgress:o.length>0,isSomeGhost:s.some(S=>S.isGhost)}}validateRestrictions(e,t){t===void 0&&(t=this.getFiles());try{q(this,Gt)[Gt].validate(t,[e])}catch(r){return r}return null}checkIfFileAlreadyExists(e){let{files:t}=this.getState();return!!(t[e]&&!t[e].isGhost)}addFile(e){q(this,vn)[vn](e);let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn]([e]),o=s.filter(l=>l.isRestriction);if(q(this,Kt)[Kt](o),s.length>0)throw s[0];this.setState({files:t});let[a]=r;return this.emit("file-added",a),this.emit("files-added",r),this.log(`Added file: ${a.name}, ${a.id}, mime type: ${a.type}`),q(this,bn)[bn](),a.id}addFiles(e){q(this,vn)[vn]();let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn](e),o=s.filter(l=>l.isRestriction);q(this,Kt)[Kt](o);let a=s.filter(l=>!l.isRestriction);if(a.length>0){let l=`Multiple errors occurred while adding files: -`;if(a.forEach(h=>{l+=` - * ${h.message}`}),this.info({message:this.i18n("addBulkFilesFailed",{smart_count:a.length}),details:l},"error",this.opts.infoTimeout),typeof AggregateError=="function")throw new AggregateError(a,l);{let h=new Error(l);throw h.errors=a,h}}this.setState({files:t}),r.forEach(l=>{this.emit("file-added",l)}),this.emit("files-added",r),r.length>5?this.log(`Added batch of ${r.length} files`):Object.values(r).forEach(l=>{this.log(`Added file: ${l.name} +"use strict";(()=>{var gb=Object.create;var fl=Object.defineProperty;var yb=Object.getOwnPropertyDescriptor;var vb=Object.getOwnPropertyNames;var bb=Object.getPrototypeOf,wb=Object.prototype.hasOwnProperty;var o=(r,e)=>fl(r,"name",{value:e,configurable:!0});var be=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ml=(r,e)=>{for(var t in e)fl(r,t,{get:e[t],enumerable:!0})},Sb=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of vb(e))!wb.call(r,s)&&s!==t&&fl(r,s,{get:()=>e[s],enumerable:!(i=yb(e,s))||i.enumerable});return r};var ve=(r,e,t)=>(t=r!=null?gb(bb(r)):{},Sb(e||!r||!r.__esModule?fl(t,"default",{value:r,enumerable:!0}):t,r));var ef=be((fF,Zp)=>{Zp.exports=o(function(){var e={},t=e._fns={};e.emit=o(function(a,l,u,h,d,m,w){var y=i(a);y.length&&s(a,y,[l,u,h,d,m,w])},"emit"),e.on=o(function(a,l){t[a]||(t[a]=[]),t[a].push(l)},"on"),e.once=o(function(a,l){function u(){l.apply(this,arguments),e.off(a,u)}o(u,"one"),this.on(a,u)},"once"),e.off=o(function(a,l){var u=[];if(a&&l){var h=this._fns[a],d=0,m=h?h.length:0;for(d;d{function Cb(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}o(Cb,"isObject");tf.exports=Cb});var sf=be((wF,rf)=>{var Tb=typeof global=="object"&&global&&global.Object===Object&&global;rf.exports=Tb});var ju=be((SF,of)=>{var Ob=sf(),Ab=typeof self=="object"&&self&&self.Object===Object&&self,Rb=Ob||Ab||Function("return this")();of.exports=Rb});var af=be((PF,nf)=>{var kb=ju(),Ub=o(function(){return kb.Date.now()},"now");nf.exports=Ub});var uf=be((xF,lf)=>{var Db=/\s/;function Ib(r){for(var e=r.length;e--&&Db.test(r.charAt(e)););return e}o(Ib,"trimmedEndIndex");lf.exports=Ib});var hf=be((EF,cf)=>{var Nb=uf(),Lb=/^\s+/;function Mb(r){return r&&r.slice(0,Nb(r)+1).replace(Lb,"")}o(Mb,"baseTrim");cf.exports=Mb});var Hu=be((TF,df)=>{var Bb=ju(),zb=Bb.Symbol;df.exports=zb});var gf=be((OF,mf)=>{var pf=Hu(),ff=Object.prototype,jb=ff.hasOwnProperty,Hb=ff.toString,Zo=pf?pf.toStringTag:void 0;function qb(r){var e=jb.call(r,Zo),t=r[Zo];try{r[Zo]=void 0;var i=!0}catch{}var s=Hb.call(r);return i&&(e?r[Zo]=t:delete r[Zo]),s}o(qb,"getRawTag");mf.exports=qb});var vf=be((RF,yf)=>{var $b=Object.prototype,Vb=$b.toString;function Wb(r){return Vb.call(r)}o(Wb,"objectToString");yf.exports=Wb});var Pf=be((UF,Sf)=>{var bf=Hu(),Gb=gf(),Kb=vf(),Xb="[object Null]",Yb="[object Undefined]",wf=bf?bf.toStringTag:void 0;function Jb(r){return r==null?r===void 0?Yb:Xb:wf&&wf in Object(r)?Gb(r):Kb(r)}o(Jb,"baseGetTag");Sf.exports=Jb});var xf=be((IF,_f)=>{function Qb(r){return r!=null&&typeof r=="object"}o(Qb,"isObjectLike");_f.exports=Qb});var Ef=be((LF,Ff)=>{var Zb=Pf(),e1=xf(),t1="[object Symbol]";function r1(r){return typeof r=="symbol"||e1(r)&&Zb(r)==t1}o(r1,"isSymbol");Ff.exports=r1});var Af=be((BF,Of)=>{var i1=hf(),Cf=yl(),s1=Ef(),Tf=NaN,o1=/^[-+]0x[0-9a-f]+$/i,n1=/^0b[01]+$/i,a1=/^0o[0-7]+$/i,l1=parseInt;function u1(r){if(typeof r=="number")return r;if(s1(r))return Tf;if(Cf(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=Cf(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=i1(r);var t=n1.test(r);return t||a1.test(r)?l1(r.slice(2),t?2:8):o1.test(r)?Tf:+r}o(u1,"toNumber");Of.exports=u1});var $u=be((jF,kf)=>{var c1=yl(),qu=af(),Rf=Af(),h1="Expected a function",d1=Math.max,p1=Math.min;function f1(r,e,t){var i,s,n,a,l,u,h=0,d=!1,m=!1,w=!0;if(typeof r!="function")throw new TypeError(h1);e=Rf(e)||0,c1(t)&&(d=!!t.leading,m="maxWait"in t,n=m?d1(Rf(t.maxWait)||0,e):n,w="trailing"in t?!!t.trailing:w);function y($){var W=i,te=s;return i=s=void 0,h=$,a=r.apply(te,W),a}o(y,"invokeFunc");function P($){return h=$,l=setTimeout(O,e),d?y($):a}o(P,"leadingEdge");function D($){var W=$-u,te=$-h,se=e-W;return m?p1(se,n-te):se}o(D,"remainingWait");function C($){var W=$-u,te=$-h;return u===void 0||W>=e||W<0||m&&te>=n}o(C,"shouldInvoke");function O(){var $=qu();if(C($))return z($);l=setTimeout(O,D($))}o(O,"timerExpired");function z($){return l=void 0,w&&i?y($):(i=s=void 0,a)}o(z,"trailingEdge");function X(){l!==void 0&&clearTimeout(l),h=0,i=u=s=l=void 0}o(X,"cancel");function K(){return l===void 0?a:z(qu())}o(K,"flush");function Z(){var $=qu(),W=C($);if(i=arguments,s=this,u=$,W){if(l===void 0)return P(u);if(m)return clearTimeout(l),l=setTimeout(O,e),y(u)}return l===void 0&&(l=setTimeout(O,e)),a}return o(Z,"debounced"),Z.cancel=X,Z.flush=K,Z}o(f1,"debounce");kf.exports=f1});var vl=be((qF,Uf)=>{var m1=$u(),g1=yl(),y1="Expected a function";function v1(r,e,t){var i=!0,s=!0;if(typeof r!="function")throw new TypeError(y1);return g1(t)&&(i="leading"in t?!!t.leading:i,s="trailing"in t?!!t.trailing:s),m1(r,e,{leading:i,maxWait:e,trailing:s})}o(v1,"throttle");Uf.exports=v1});var sn=be((d3,Mf)=>{"use strict";Mf.exports=o(function(e){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected a number, got ${typeof e}`);let t=e<0,i=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];if(t&&(e=-e),e<1)return`${(t?"-":"")+e} B`;let s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),i.length-1);e=Number(e/1024**s);let n=i[s];return e>=10||e%1===0?`${(t?"-":"")+e.toFixed(0)} ${n}`:`${(t?"-":"")+e.toFixed(1)} ${n}`},"prettierBytes")});var jf=be((f3,zf)=>{"use strict";function Bf(r,e){this.text=r=r||"",this.hasWild=~r.indexOf("*"),this.separator=e,this.parts=r.split(e)}o(Bf,"WildcardMatcher");Bf.prototype.match=function(r){var e=!0,t=this.parts,i,s=t.length,n;if(typeof r=="string"||r instanceof String)if(!this.hasWild&&this.text!=r)e=!1;else{for(n=(r||"").split(this.separator),i=0;e&&i{var x1=jf(),F1=/[\/\+\.]/;Hf.exports=function(r,e){function t(i){var s=x1(i,r,F1);return s&&s.length>=2}return o(t,"test"),e?t(e.split(";")[0]):t}});var fm=be((oE,pm)=>{function pr(r,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}o(pr,"RetryOperation");pm.exports=pr;pr.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};pr.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};pr.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var e=new Date().getTime();if(r&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var i=this;return this._timer=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},t),this._options.unref&&this._timer.unref(),!0};pr.prototype.attempt=function(r,e){this._fn=r,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};pr.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};pr.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};pr.prototype.start=pr.prototype.try;pr.prototype.errors=function(){return this._errors};pr.prototype.attempts=function(){return this._attempts};pr.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},e=null,t=0,i=0;i=t&&(e=s,t=a)}return e}});var mm=be(ns=>{var J1=fm();ns.operation=function(r){var e=ns.timeouts(r);return new J1(e,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};ns.timeouts=function(r){if(r instanceof Array)return[].concat(r);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in r)e[t]=r[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],s=0;s{gm.exports=mm()});var kt=be((ZE,Dl)=>{(function(){"use strict";var r={}.hasOwnProperty;function e(){for(var s="",n=0;n{"use strict";var Iw=Object.prototype.hasOwnProperty,Dt="~";function Pn(){}o(Pn,"Events");Object.create&&(Pn.prototype=Object.create(null),new Pn().__proto__||(Dt=!1));function Nw(r,e,t){this.fn=r,this.context=e,this.once=t||!1}o(Nw,"EE");function zm(r,e,t,i,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var n=new Nw(t,i||r,s),a=Dt?Dt+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],n]:r._events[a].push(n):(r._events[a]=n,r._eventsCount++),r}o(zm,"addListener");function jl(r,e){--r._eventsCount===0?r._events=new Pn:delete r._events[e]}o(jl,"clearEvent");function At(){this._events=new Pn,this._eventsCount=0}o(At,"EventEmitter");At.prototype.eventNames=o(function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)Iw.call(t,i)&&e.push(Dt?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},"eventNames");At.prototype.listeners=o(function(e){var t=Dt?Dt+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,n=i.length,a=new Array(n);s{(function(r,e){typeof kh=="object"&&typeof Uh<"u"?Uh.exports=e():typeof define=="function"&&define.amd?define(e):(r=r||self,r.Cropper=e())})(kh,function(){"use strict";function r(v){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?r=o(function(p){return typeof p},"_typeof"):r=o(function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},"_typeof"),r(v)}o(r,"_typeof");function e(v,p){if(!(v instanceof p))throw new TypeError("Cannot call a class as a function")}o(e,"_classCallCheck");function t(v,p){for(var g=0;gv.length)&&(p=v.length);for(var g=0,f=new Array(p);g
    ',nl=Number.isNaN||P.isNaN;function de(v){return typeof v=="number"&&!nl(v)}o(de,"isNumber");var Wo=o(function(p){return p>0&&p<1/0},"isPositiveNumber");function no(v){return typeof v>"u"}o(no,"isUndefined");function Rr(v){return r(v)==="object"&&v!==null}o(Rr,"isObject");var al=Object.prototype.hasOwnProperty;function Vr(v){if(!Rr(v))return!1;try{var p=v.constructor,g=p.prototype;return p&&g&&al.call(g,"isPrototypeOf")}catch{return!1}}o(Vr,"isPlainObject");function mt(v){return typeof v=="function"}o(mt,"isFunction");var ll=Array.prototype.slice;function ul(v){return Array.from?Array.from(v):ll.call(v)}o(ul,"toArray");function $e(v,p){return v&&mt(p)&&(Array.isArray(v)||de(v.length)?ul(v).forEach(function(g,f){p.call(v,g,f,v)}):Rr(v)&&Object.keys(v).forEach(function(g){p.call(v,v[g],g,v)})),v}o($e,"forEach");var Ee=Object.assign||o(function(p){for(var g=arguments.length,f=new Array(g>1?g-1:0),_=1;_0&&f.forEach(function(b){Rr(b)&&Object.keys(b).forEach(function(x){p[x]=b[x]})}),p},"assign"),Lu=/\.\d*(?:0|9){12}\d*$/;function kr(v){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return Lu.test(v)?Math.round(v*p)/p:v}o(kr,"normalizeDecimalNumber");var cl=/^width|height|left|top|marginLeft|marginTop$/;function Sr(v,p){var g=v.style;$e(p,function(f,_){cl.test(_)&&de(f)&&(f="".concat(f,"px")),g[_]=f})}o(Sr,"setStyle");function Go(v,p){return v.classList?v.classList.contains(p):v.className.indexOf(p)>-1}o(Go,"hasClass");function Ve(v,p){if(p){if(de(v.length)){$e(v,function(f){Ve(f,p)});return}if(v.classList){v.classList.add(p);return}var g=v.className.trim();g?g.indexOf(p)<0&&(v.className="".concat(g," ").concat(p)):v.className=p}}o(Ve,"addClass");function Kt(v,p){if(p){if(de(v.length)){$e(v,function(g){Kt(g,p)});return}if(v.classList){v.classList.remove(p);return}v.className.indexOf(p)>=0&&(v.className=v.className.replace(p,""))}}o(Kt,"removeClass");function Wr(v,p,g){if(p){if(de(v.length)){$e(v,function(f){Wr(f,p,g)});return}g?Ve(v,p):Kt(v,p)}}o(Wr,"toggleClass");var hl=/([a-z\d])([A-Z])/g;function ao(v){return v.replace(hl,"$1-$2").toLowerCase()}o(ao,"toParamCase");function lo(v,p){return Rr(v[p])?v[p]:v.dataset?v.dataset[p]:v.getAttribute("data-".concat(ao(p)))}o(lo,"getData");function uo(v,p,g){Rr(g)?v[p]=g:v.dataset?v.dataset[p]=g:v.setAttribute("data-".concat(ao(p)),g)}o(uo,"setData");function Ji(v,p){if(Rr(v[p]))try{delete v[p]}catch{v[p]=void 0}else if(v.dataset)try{delete v.dataset[p]}catch{v.dataset[p]=void 0}else v.removeAttribute("data-".concat(ao(p)))}o(Ji,"removeData");var Ko=/\s\s*/,Xo=function(){var v=!1;if(y){var p=!1,g=o(function(){},"listener"),f=Object.defineProperty({},"once",{get:o(function(){return v=!0,p},"get"),set:o(function(b){p=b},"set")});P.addEventListener("test",g,f),P.removeEventListener("test",g,f)}return v}();function ut(v,p,g){var f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},_=g;p.trim().split(Ko).forEach(function(b){if(!Xo){var x=v.listeners;x&&x[b]&&x[b][g]&&(_=x[b][g],delete x[b][g],Object.keys(x[b]).length===0&&delete x[b],Object.keys(x).length===0&&delete v.listeners)}v.removeEventListener(b,_,f)})}o(ut,"removeListener");function Ot(v,p,g){var f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},_=g;p.trim().split(Ko).forEach(function(b){if(f.once&&!Xo){var x=v.listeners,k=x===void 0?{}:x;_=o(function(){delete k[b][g],v.removeEventListener(b,_,f);for(var B=arguments.length,L=new Array(B),U=0;U1&&arguments[1]!==void 0?arguments[1]:"contain",b=Wo(f),x=Wo(g);if(b&&x){var k=g*p;_==="contain"&&k>f||_==="cover"&&k90?{width:q,height:k}:{width:k,height:q}}o(Z0,"getRotatedSizes");function eb(v,p,g,f){var _=p.aspectRatio,b=p.naturalWidth,x=p.naturalHeight,k=p.rotate,q=k===void 0?0:k,B=p.scaleX,L=B===void 0?1:B,U=p.scaleY,H=U===void 0?1:U,ge=g.aspectRatio,me=g.naturalWidth,ke=g.naturalHeight,Se=f.fillColor,it=Se===void 0?"transparent":Se,ct=f.imageSmoothingEnabled,Qe=ct===void 0?!0:ct,Gr=f.imageSmoothingQuality,Xt=Gr===void 0?"low":Gr,V=f.maxWidth,Pe=V===void 0?1/0:V,st=f.maxHeight,hr=st===void 0?1/0:st,Kr=f.minWidth,Qi=Kr===void 0?0:Kr,Zi=f.minHeight,zi=Zi===void 0?0:Zi,Ur=document.createElement("canvas"),Ht=Ur.getContext("2d"),es=Bi({aspectRatio:ge,width:Pe,height:hr}),pl=Bi({aspectRatio:ge,width:Qi,height:zi},"cover"),Bu=Math.min(es.width,Math.max(pl.width,me)),zu=Math.min(es.height,Math.max(pl.height,ke)),Gp=Bi({aspectRatio:_,width:Pe,height:hr}),Kp=Bi({aspectRatio:_,width:Qi,height:zi},"cover"),Xp=Math.min(Gp.width,Math.max(Kp.width,b)),Yp=Math.min(Gp.height,Math.max(Kp.height,x)),fb=[-Xp/2,-Yp/2,Xp,Yp];return Ur.width=kr(Bu),Ur.height=kr(zu),Ht.fillStyle=it,Ht.fillRect(0,0,Bu,zu),Ht.save(),Ht.translate(Bu/2,zu/2),Ht.rotate(q*Math.PI/180),Ht.scale(L,H),Ht.imageSmoothingEnabled=Qe,Ht.imageSmoothingQuality=Xt,Ht.drawImage.apply(Ht,[v].concat(l(fb.map(function(mb){return Math.floor(kr(mb))})))),Ht.restore(),Ur}o(eb,"getSourceCanvas");var Vp=String.fromCharCode;function tb(v,p,g){var f="";g+=p;for(var _=p;_0;)g.push(Vp.apply(null,ul(_.subarray(0,f)))),_=_.subarray(f);return"data:".concat(p,";base64,").concat(btoa(g.join("")))}o(sb,"arrayBufferToDataURL");function ob(v){var p=new DataView(v),g;try{var f,_,b;if(p.getUint8(0)===255&&p.getUint8(1)===216)for(var x=p.byteLength,k=2;k+1=8&&(b=B+U)}}}if(b){var H=p.getUint16(b,f),ge,me;for(me=0;mep.width?f===3?q=p.height*k:B=p.width/k:f===3?B=p.width/k:q=p.height*k;var L={aspectRatio:k,naturalWidth:b,naturalHeight:x,width:q,height:B};L.left=(p.width-q)/2,L.top=(p.height-B)/2,L.oldLeft=L.left,L.oldTop=L.top,this.canvasData=L,this.limited=f===1||f===2,this.limitCanvas(!0,!0),this.initialImageData=Ee({},g),this.initialCanvasData=Ee({},L)},"initCanvas"),limitCanvas:o(function(p,g){var f=this.options,_=this.containerData,b=this.canvasData,x=this.cropBoxData,k=f.viewMode,q=b.aspectRatio,B=this.cropped&&x;if(p){var L=Number(f.minCanvasWidth)||0,U=Number(f.minCanvasHeight)||0;k>1?(L=Math.max(L,_.width),U=Math.max(U,_.height),k===3&&(U*q>L?L=U*q:U=L/q)):k>0&&(L?L=Math.max(L,B?x.width:0):U?U=Math.max(U,B?x.height:0):B&&(L=x.width,U=x.height,U*q>L?L=U*q:U=L/q));var H=Bi({aspectRatio:q,width:L,height:U});L=H.width,U=H.height,b.minWidth=L,b.minHeight=U,b.maxWidth=1/0,b.maxHeight=1/0}if(g)if(k>(B?0:1)){var ge=_.width-b.width,me=_.height-b.height;b.minLeft=Math.min(0,ge),b.minTop=Math.min(0,me),b.maxLeft=Math.max(0,ge),b.maxTop=Math.max(0,me),B&&this.limited&&(b.minLeft=Math.min(x.left,x.left+(x.width-b.width)),b.minTop=Math.min(x.top,x.top+(x.height-b.height)),b.maxLeft=x.left,b.maxTop=x.top,k===2&&(b.width>=_.width&&(b.minLeft=Math.min(0,ge),b.maxLeft=Math.max(0,ge)),b.height>=_.height&&(b.minTop=Math.min(0,me),b.maxTop=Math.max(0,me))))}else b.minLeft=-b.width,b.minTop=-b.height,b.maxLeft=_.width,b.maxTop=_.height},"limitCanvas"),renderCanvas:o(function(p,g){var f=this.canvasData,_=this.imageData;if(g){var b=Z0({width:_.naturalWidth*Math.abs(_.scaleX||1),height:_.naturalHeight*Math.abs(_.scaleY||1),degree:_.rotate||0}),x=b.width,k=b.height,q=f.width*(x/f.naturalWidth),B=f.height*(k/f.naturalHeight);f.left-=(q-f.width)/2,f.top-=(B-f.height)/2,f.width=q,f.height=B,f.aspectRatio=x/k,f.naturalWidth=x,f.naturalHeight=k,this.limitCanvas(!0,!1)}(f.width>f.maxWidth||f.widthf.maxHeight||f.heightg.width?b.height=b.width/f:b.width=b.height*f),this.cropBoxData=b,this.limitCropBox(!0,!0),b.width=Math.min(Math.max(b.width,b.minWidth),b.maxWidth),b.height=Math.min(Math.max(b.height,b.minHeight),b.maxHeight),b.width=Math.max(b.minWidth,b.width*_),b.height=Math.max(b.minHeight,b.height*_),b.left=g.left+(g.width-b.width)/2,b.top=g.top+(g.height-b.height)/2,b.oldLeft=b.left,b.oldTop=b.top,this.initialCropBoxData=Ee({},b)},"initCropBox"),limitCropBox:o(function(p,g){var f=this.options,_=this.containerData,b=this.canvasData,x=this.cropBoxData,k=this.limited,q=f.aspectRatio;if(p){var B=Number(f.minCropBoxWidth)||0,L=Number(f.minCropBoxHeight)||0,U=k?Math.min(_.width,b.width,b.width+b.left,_.width-b.left):_.width,H=k?Math.min(_.height,b.height,b.height+b.top,_.height-b.top):_.height;B=Math.min(B,_.width),L=Math.min(L,_.height),q&&(B&&L?L*q>B?L=B/q:B=L*q:B?L=B/q:L&&(B=L*q),H*q>U?H=U/q:U=H*q),x.minWidth=Math.min(B,U),x.minHeight=Math.min(L,H),x.maxWidth=U,x.maxHeight=H}g&&(k?(x.minLeft=Math.max(0,b.left),x.minTop=Math.max(0,b.top),x.maxLeft=Math.min(_.width,b.left+b.width)-x.width,x.maxTop=Math.min(_.height,b.top+b.height)-x.height):(x.minLeft=0,x.minTop=0,x.maxLeft=_.width-x.width,x.maxTop=_.height-x.height))},"limitCropBox"),renderCropBox:o(function(){var p=this.options,g=this.containerData,f=this.cropBoxData;(f.width>f.maxWidth||f.widthf.maxHeight||f.height=g.width&&f.height>=g.height?K:z),Sr(this.cropBox,Ee({width:f.width,height:f.height},Yo({translateX:f.left,translateY:f.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},"renderCropBox"),output:o(function(){this.preview(),cr(this.element,G,this.getData())},"output")},lb={initPreview:o(function(){var p=this.element,g=this.crossOrigin,f=this.options.preview,_=g?this.crossOriginUrl:this.url,b=p.alt||"The image to preview",x=document.createElement("img");if(g&&(x.crossOrigin=g),x.src=_,x.alt=b,this.viewBox.appendChild(x),this.viewBoxImage=x,!!f){var k=f;typeof f=="string"?k=p.ownerDocument.querySelectorAll(f):f.querySelector&&(k=[f]),this.previews=k,$e(k,function(q){var B=document.createElement("img");uo(q,R,{width:q.offsetWidth,height:q.offsetHeight,html:q.innerHTML}),g&&(B.crossOrigin=g),B.src=_,B.alt=b,B.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',q.innerHTML="",q.appendChild(B)})}},"initPreview"),resetPreview:o(function(){$e(this.previews,function(p){var g=lo(p,R);Sr(p,{width:g.width,height:g.height}),p.innerHTML=g.html,Ji(p,R)})},"resetPreview"),preview:o(function(){var p=this.imageData,g=this.canvasData,f=this.cropBoxData,_=f.width,b=f.height,x=p.width,k=p.height,q=f.left-g.left-p.left,B=f.top-g.top-p.top;!this.cropped||this.disabled||(Sr(this.viewBoxImage,Ee({width:x,height:k},Yo(Ee({translateX:-q,translateY:-B},p)))),$e(this.previews,function(L){var U=lo(L,R),H=U.width,ge=U.height,me=H,ke=ge,Se=1;_&&(Se=H/_,ke=b*Se),b&&ke>ge&&(Se=ge/b,me=_*Se,ke=ge),Sr(L,{width:me,height:ke}),Sr(L.getElementsByTagName("img")[0],Ee({width:x*Se,height:k*Se},Yo(Ee({translateX:-q*Se,translateY:-B*Se},p))))}))},"preview")},ub={bind:o(function(){var p=this.element,g=this.options,f=this.cropper;mt(g.cropstart)&&Ot(p,ce,g.cropstart),mt(g.cropmove)&&Ot(p,Fe,g.cropmove),mt(g.cropend)&&Ot(p,Y,g.cropend),mt(g.crop)&&Ot(p,G,g.crop),mt(g.zoom)&&Ot(p,Gi,g.zoom),Ot(f,Ct,this.onCropStart=this.cropStart.bind(this)),g.zoomable&&g.zoomOnWheel&&Ot(f,$r,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&Ot(f,ue,this.onDblclick=this.dblclick.bind(this)),Ot(p.ownerDocument,qe,this.onCropMove=this.cropMove.bind(this)),Ot(p.ownerDocument,oe,this.onCropEnd=this.cropEnd.bind(this)),g.responsive&&Ot(window,Je,this.onResize=this.resize.bind(this))},"bind"),unbind:o(function(){var p=this.element,g=this.options,f=this.cropper;mt(g.cropstart)&&ut(p,ce,g.cropstart),mt(g.cropmove)&&ut(p,Fe,g.cropmove),mt(g.cropend)&&ut(p,Y,g.cropend),mt(g.crop)&&ut(p,G,g.crop),mt(g.zoom)&&ut(p,Gi,g.zoom),ut(f,Ct,this.onCropStart),g.zoomable&&g.zoomOnWheel&&ut(f,$r,this.onWheel,{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&ut(f,ue,this.onDblclick),ut(p.ownerDocument,qe,this.onCropMove),ut(p.ownerDocument,oe,this.onCropEnd),g.responsive&&ut(window,Je,this.onResize)},"unbind")},cb={resize:o(function(){if(!this.disabled){var p=this.options,g=this.container,f=this.containerData,_=g.offsetWidth/f.width;if(_!==1||g.offsetHeight!==f.height){var b,x;p.restore&&(b=this.getCanvasData(),x=this.getCropBoxData()),this.render(),p.restore&&(this.setCanvasData($e(b,function(k,q){b[q]=k*_})),this.setCropBoxData($e(x,function(k,q){x[q]=k*_})))}}},"resize"),dblclick:o(function(){this.disabled||this.options.dragMode===N||this.setDragMode(Go(this.dragBox,De)?A:T)},"dblclick"),wheel:o(function(p){var g=this,f=Number(this.options.wheelZoomRatio)||.1,_=1;this.disabled||(p.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){g.wheeling=!1},50),p.deltaY?_=p.deltaY>0?1:-1:p.wheelDelta?_=-p.wheelDelta/120:p.detail&&(_=p.detail>0?1:-1),this.zoom(-_*f,p)))},"wheel"),cropStart:o(function(p){var g=p.buttons,f=p.button;if(!(this.disabled||(p.type==="mousedown"||p.type==="pointerdown"&&p.pointerType==="mouse")&&(de(g)&&g!==1||de(f)&&f!==0||p.ctrlKey))){var _=this.options,b=this.pointers,x;p.changedTouches?$e(p.changedTouches,function(k){b[k.identifier]=dl(k)}):b[p.pointerId||0]=dl(p),Object.keys(b).length>1&&_.zoomable&&_.zoomOnTouch?x=Z:x=lo(p.target,M),Ki.test(x)&&cr(this.element,ce,{originalEvent:p,action:x})!==!1&&(p.preventDefault(),this.action=x,this.cropping=!1,x===X&&(this.cropping=!0,Ve(this.dragBox,I)))}},"cropStart"),cropMove:o(function(p){var g=this.action;if(!(this.disabled||!g)){var f=this.pointers;p.preventDefault(),cr(this.element,Fe,{originalEvent:p,action:g})!==!1&&(p.changedTouches?$e(p.changedTouches,function(_){Ee(f[_.identifier]||{},dl(_,!0))}):Ee(f[p.pointerId||0]||{},dl(p,!0)),this.change(p))}},"cropMove"),cropEnd:o(function(p){if(!this.disabled){var g=this.action,f=this.pointers;p.changedTouches?$e(p.changedTouches,function(_){delete f[_.identifier]}):delete f[p.pointerId||0],g&&(p.preventDefault(),Object.keys(f).length||(this.action=""),this.cropping&&(this.cropping=!1,Wr(this.dragBox,I,this.cropped&&this.options.modal)),cr(this.element,Y,{originalEvent:p,action:g}))}},"cropEnd")},hb={change:o(function(p){var g=this.options,f=this.canvasData,_=this.containerData,b=this.cropBoxData,x=this.pointers,k=this.action,q=g.aspectRatio,B=b.left,L=b.top,U=b.width,H=b.height,ge=B+U,me=L+H,ke=0,Se=0,it=_.width,ct=_.height,Qe=!0,Gr;!q&&p.shiftKey&&(q=U&&H?U/H:1),this.limited&&(ke=b.minLeft,Se=b.minTop,it=ke+Math.min(_.width,f.width,f.left+f.width),ct=Se+Math.min(_.height,f.height,f.top+f.height));var Xt=x[Object.keys(x)[0]],V={x:Xt.endX-Xt.startX,y:Xt.endY-Xt.startY},Pe=o(function(hr){switch(hr){case $:ge+V.x>it&&(V.x=it-ge);break;case W:B+V.xct&&(V.y=ct-me);break}},"check");switch(k){case z:B+=V.x,L+=V.y;break;case $:if(V.x>=0&&(ge>=it||q&&(L<=Se||me>=ct))){Qe=!1;break}Pe($),U+=V.x,U<0&&(k=W,U=-U,B-=U),q&&(H=U/q,L+=(b.height-H)/2);break;case se:if(V.y<=0&&(L<=Se||q&&(B<=ke||ge>=it))){Qe=!1;break}Pe(se),H-=V.y,L+=V.y,H<0&&(k=te,H=-H,L-=H),q&&(U=H*q,B+=(b.width-U)/2);break;case W:if(V.x<=0&&(B<=ke||q&&(L<=Se||me>=ct))){Qe=!1;break}Pe(W),U-=V.x,B+=V.x,U<0&&(k=$,U=-U,B-=U),q&&(H=U/q,L+=(b.height-H)/2);break;case te:if(V.y>=0&&(me>=ct||q&&(B<=ke||ge>=it))){Qe=!1;break}Pe(te),H+=V.y,H<0&&(k=se,H=-H,L-=H),q&&(U=H*q,B+=(b.width-U)/2);break;case Ae:if(q){if(V.y<=0&&(L<=Se||ge>=it)){Qe=!1;break}Pe(se),H-=V.y,L+=V.y,U=H*q}else Pe(se),Pe($),V.x>=0?geSe&&(H-=V.y,L+=V.y):(H-=V.y,L+=V.y);U<0&&H<0?(k=xe,H=-H,U=-U,L-=H,B-=U):U<0?(k=je,U=-U,B-=U):H<0&&(k=He,H=-H,L-=H);break;case je:if(q){if(V.y<=0&&(L<=Se||B<=ke)){Qe=!1;break}Pe(se),H-=V.y,L+=V.y,U=H*q,B+=b.width-U}else Pe(se),Pe(W),V.x<=0?B>ke?(U-=V.x,B+=V.x):V.y<=0&&L<=Se&&(Qe=!1):(U-=V.x,B+=V.x),V.y<=0?L>Se&&(H-=V.y,L+=V.y):(H-=V.y,L+=V.y);U<0&&H<0?(k=He,H=-H,U=-U,L-=H,B-=U):U<0?(k=Ae,U=-U,B-=U):H<0&&(k=xe,H=-H,L-=H);break;case xe:if(q){if(V.x<=0&&(B<=ke||me>=ct)){Qe=!1;break}Pe(W),U-=V.x,B+=V.x,H=U/q}else Pe(te),Pe(W),V.x<=0?B>ke?(U-=V.x,B+=V.x):V.y>=0&&me>=ct&&(Qe=!1):(U-=V.x,B+=V.x),V.y>=0?me=0&&(ge>=it||me>=ct)){Qe=!1;break}Pe($),U+=V.x,H=U/q}else Pe(te),Pe($),V.x>=0?ge=0&&me>=ct&&(Qe=!1):U+=V.x,V.y>=0?me0?k=V.y>0?He:Ae:V.x<0&&(B-=U,k=V.y>0?xe:je),V.y<0&&(L-=H),this.cropped||(Kt(this.cropBox,E),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}Qe&&(b.width=U,b.height=H,b.left=B,b.top=L,this.action=k,this.renderCropBox()),$e(x,function(st){st.startX=st.endX,st.startY=st.endY})},"change")},db={crop:o(function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&Ve(this.dragBox,I),Kt(this.cropBox,E),this.setCropBoxData(this.initialCropBoxData)),this},"crop"),reset:o(function(){return this.ready&&!this.disabled&&(this.imageData=Ee({},this.initialImageData),this.canvasData=Ee({},this.initialCanvasData),this.cropBoxData=Ee({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},"reset"),clear:o(function(){return this.cropped&&!this.disabled&&(Ee(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),Kt(this.dragBox,I),Ve(this.cropBox,E)),this},"clear"),replace:o(function(p){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&p&&(this.isImg&&(this.element.src=p),g?(this.url=p,this.image.src=p,this.ready&&(this.viewBoxImage.src=p,$e(this.previews,function(f){f.getElementsByTagName("img")[0].src=p}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(p))),this},"replace"),enable:o(function(){return this.ready&&this.disabled&&(this.disabled=!1,Kt(this.cropper,ft)),this},"enable"),disable:o(function(){return this.ready&&!this.disabled&&(this.disabled=!0,Ve(this.cropper,ft)),this},"disable"),destroy:o(function(){var p=this.element;return p[O]?(p[O]=void 0,this.isImg&&this.replaced&&(p.src=this.originalUrl),this.uncreate(),this):this},"destroy"),move:o(function(p){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p,f=this.canvasData,_=f.left,b=f.top;return this.moveTo(no(p)?p:_+Number(p),no(g)?g:b+Number(g))},"move"),moveTo:o(function(p){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p,f=this.canvasData,_=!1;return p=Number(p),g=Number(g),this.ready&&!this.disabled&&this.options.movable&&(de(p)&&(f.left=p,_=!0),de(g)&&(f.top=g,_=!0),_&&this.renderCanvas(!0)),this},"moveTo"),zoom:o(function(p,g){var f=this.canvasData;return p=Number(p),p<0?p=1/(1-p):p=1+p,this.zoomTo(f.width*p/f.naturalWidth,null,g)},"zoom"),zoomTo:o(function(p,g,f){var _=this.options,b=this.canvasData,x=b.width,k=b.height,q=b.naturalWidth,B=b.naturalHeight;if(p=Number(p),p>=0&&this.ready&&!this.disabled&&_.zoomable){var L=q*p,U=B*p;if(cr(this.element,Gi,{ratio:p,oldRatio:x/q,originalEvent:f})===!1)return this;if(f){var H=this.pointers,ge=Hp(this.cropper),me=H&&Object.keys(H).length?Q0(H):{pageX:f.pageX,pageY:f.pageY};b.left-=(L-x)*((me.pageX-ge.left-b.left)/x),b.top-=(U-k)*((me.pageY-ge.top-b.top)/k)}else Vr(g)&&de(g.x)&&de(g.y)?(b.left-=(L-x)*((g.x-b.left)/x),b.top-=(U-k)*((g.y-b.top)/k)):(b.left-=(L-x)/2,b.top-=(U-k)/2);b.width=L,b.height=U,this.renderCanvas(!0)}return this},"zoomTo"),rotate:o(function(p){return this.rotateTo((this.imageData.rotate||0)+Number(p))},"rotate"),rotateTo:o(function(p){return p=Number(p),de(p)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=p%360,this.renderCanvas(!0,!0)),this},"rotateTo"),scaleX:o(function(p){var g=this.imageData.scaleY;return this.scale(p,de(g)?g:1)},"scaleX"),scaleY:o(function(p){var g=this.imageData.scaleX;return this.scale(de(g)?g:1,p)},"scaleY"),scale:o(function(p){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p,f=this.imageData,_=!1;return p=Number(p),g=Number(g),this.ready&&!this.disabled&&this.options.scalable&&(de(p)&&(f.scaleX=p,_=!0),de(g)&&(f.scaleY=g,_=!0),_&&this.renderCanvas(!0,!0)),this},"scale"),getData:o(function(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.options,f=this.imageData,_=this.canvasData,b=this.cropBoxData,x;if(this.ready&&this.cropped){x={x:b.left-_.left,y:b.top-_.top,width:b.width,height:b.height};var k=f.width/f.naturalWidth;if($e(x,function(L,U){x[U]=L/k}),p){var q=Math.round(x.y+x.height),B=Math.round(x.x+x.width);x.x=Math.round(x.x),x.y=Math.round(x.y),x.width=B-x.x,x.height=q-x.y}}else x={x:0,y:0,width:0,height:0};return g.rotatable&&(x.rotate=f.rotate||0),g.scalable&&(x.scaleX=f.scaleX||1,x.scaleY=f.scaleY||1),x},"getData"),setData:o(function(p){var g=this.options,f=this.imageData,_=this.canvasData,b={};if(this.ready&&!this.disabled&&Vr(p)){var x=!1;g.rotatable&&de(p.rotate)&&p.rotate!==f.rotate&&(f.rotate=p.rotate,x=!0),g.scalable&&(de(p.scaleX)&&p.scaleX!==f.scaleX&&(f.scaleX=p.scaleX,x=!0),de(p.scaleY)&&p.scaleY!==f.scaleY&&(f.scaleY=p.scaleY,x=!0)),x&&this.renderCanvas(!0,!0);var k=f.width/f.naturalWidth;de(p.x)&&(b.left=p.x*k+_.left),de(p.y)&&(b.top=p.y*k+_.top),de(p.width)&&(b.width=p.width*k),de(p.height)&&(b.height=p.height*k),this.setCropBoxData(b)}return this},"setData"),getContainerData:o(function(){return this.ready?Ee({},this.containerData):{}},"getContainerData"),getImageData:o(function(){return this.sized?Ee({},this.imageData):{}},"getImageData"),getCanvasData:o(function(){var p=this.canvasData,g={};return this.ready&&$e(["left","top","width","height","naturalWidth","naturalHeight"],function(f){g[f]=p[f]}),g},"getCanvasData"),setCanvasData:o(function(p){var g=this.canvasData,f=g.aspectRatio;return this.ready&&!this.disabled&&Vr(p)&&(de(p.left)&&(g.left=p.left),de(p.top)&&(g.top=p.top),de(p.width)?(g.width=p.width,g.height=p.width/f):de(p.height)&&(g.height=p.height,g.width=p.height*f),this.renderCanvas(!0)),this},"setCanvasData"),getCropBoxData:o(function(){var p=this.cropBoxData,g;return this.ready&&this.cropped&&(g={left:p.left,top:p.top,width:p.width,height:p.height}),g||{}},"getCropBoxData"),setCropBoxData:o(function(p){var g=this.cropBoxData,f=this.options.aspectRatio,_,b;return this.ready&&this.cropped&&!this.disabled&&Vr(p)&&(de(p.left)&&(g.left=p.left),de(p.top)&&(g.top=p.top),de(p.width)&&p.width!==g.width&&(_=!0,g.width=p.width),de(p.height)&&p.height!==g.height&&(b=!0,g.height=p.height),f&&(_?g.height=g.width/f:b&&(g.width=g.height*f)),this.renderCropBox()),this},"setCropBoxData"),getCroppedCanvas:o(function(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var g=this.canvasData,f=eb(this.image,this.imageData,g,p);if(!this.cropped)return f;var _=this.getData(),b=_.x,x=_.y,k=_.width,q=_.height,B=f.width/Math.floor(g.naturalWidth);B!==1&&(b*=B,x*=B,k*=B,q*=B);var L=k/q,U=Bi({aspectRatio:L,width:p.maxWidth||1/0,height:p.maxHeight||1/0}),H=Bi({aspectRatio:L,width:p.minWidth||0,height:p.minHeight||0},"cover"),ge=Bi({aspectRatio:L,width:p.width||(B!==1?f.width:k),height:p.height||(B!==1?f.height:q)}),me=ge.width,ke=ge.height;me=Math.min(U.width,Math.max(H.width,me)),ke=Math.min(U.height,Math.max(H.height,ke));var Se=document.createElement("canvas"),it=Se.getContext("2d");Se.width=kr(me),Se.height=kr(ke),it.fillStyle=p.fillColor||"transparent",it.fillRect(0,0,me,ke);var ct=p.imageSmoothingEnabled,Qe=ct===void 0?!0:ct,Gr=p.imageSmoothingQuality;it.imageSmoothingEnabled=Qe,Gr&&(it.imageSmoothingQuality=Gr);var Xt=f.width,V=f.height,Pe=b,st=x,hr,Kr,Qi,Zi,zi,Ur;Pe<=-k||Pe>Xt?(Pe=0,hr=0,Qi=0,zi=0):Pe<=0?(Qi=-Pe,Pe=0,hr=Math.min(Xt,k+Pe),zi=hr):Pe<=Xt&&(Qi=0,hr=Math.min(k,Xt-Pe),zi=hr),hr<=0||st<=-q||st>V?(st=0,Kr=0,Zi=0,Ur=0):st<=0?(Zi=-st,st=0,Kr=Math.min(V,q+st),Ur=Kr):st<=V&&(Zi=0,Kr=Math.min(q,V-st),Ur=Kr);var Ht=[Pe,st,hr,Kr];if(zi>0&&Ur>0){var es=me/k;Ht.push(Qi*es,Zi*es,zi*es,Ur*es)}return it.drawImage.apply(it,[f].concat(l(Ht.map(function(pl){return Math.floor(kr(pl))})))),Se},"getCroppedCanvas"),setAspectRatio:o(function(p){var g=this.options;return!this.disabled&&!no(p)&&(g.aspectRatio=Math.max(0,p)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},"setAspectRatio"),setDragMode:o(function(p){var g=this.options,f=this.dragBox,_=this.face;if(this.ready&&!this.disabled){var b=p===T,x=g.movable&&p===A;p=b||x?p:N,g.dragMode=p,uo(f,M,p),Wr(f,De,b),Wr(f,j,x),g.cropBoxMovable||(uo(_,M,p),Wr(_,De,b),Wr(_,j,x))}return this},"setDragMode")},pb=P.Cropper,Wp=function(){function v(p){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e(this,v),!p||!Mi.test(p.tagName))throw new Error("The first argument is required and must be an or element.");this.element=p,this.options=Ee({},rt,Vr(g)&&g),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return o(v,"Cropper"),i(v,[{key:"init",value:o(function(){var g=this.element,f=g.tagName.toLowerCase(),_;if(!g[O]){if(g[O]=this,f==="img"){if(this.isImg=!0,_=g.getAttribute("src")||"",this.originalUrl=_,!_)return;_=g.src}else f==="canvas"&&window.HTMLCanvasElement&&(_=g.toDataURL());this.load(_)}},"init")},{key:"load",value:o(function(g){var f=this;if(g){this.url=g,this.imageData={};var _=this.element,b=this.options;if(!b.rotatable&&!b.scalable&&(b.checkOrientation=!1),!b.checkOrientation||!window.ArrayBuffer){this.clone();return}if(Xi.test(g)){Yi.test(g)?this.read(ib(g)):this.clone();return}var x=new XMLHttpRequest,k=this.clone.bind(this);this.reloading=!0,this.xhr=x,x.onabort=k,x.onerror=k,x.ontimeout=k,x.onprogress=function(){x.getResponseHeader("content-type")!==Li&&x.abort()},x.onload=function(){f.read(x.response)},x.onloadend=function(){f.reloading=!1,f.xhr=null},b.checkCrossOrigin&&qp(g)&&_.crossOrigin&&(g=$p(g)),x.open("GET",g),x.responseType="arraybuffer",x.withCredentials=_.crossOrigin==="use-credentials",x.send()}},"load")},{key:"read",value:o(function(g){var f=this.options,_=this.imageData,b=ob(g),x=0,k=1,q=1;if(b>1){this.url=sb(g,Li);var B=nb(b);x=B.rotate,k=B.scaleX,q=B.scaleY}f.rotatable&&(_.rotate=x),f.scalable&&(_.scaleX=k,_.scaleY=q),this.clone()},"read")},{key:"clone",value:o(function(){var g=this.element,f=this.url,_=g.crossOrigin,b=f;this.options.checkCrossOrigin&&qp(f)&&(_||(_="anonymous"),b=$p(f)),this.crossOrigin=_,this.crossOriginUrl=b;var x=document.createElement("img");_&&(x.crossOrigin=_),x.src=b||f,x.alt=g.alt||"The image to crop",this.image=x,x.onload=this.start.bind(this),x.onerror=this.stop.bind(this),Ve(x,S),g.parentNode.insertBefore(x,g.nextSibling)},"clone")},{key:"start",value:o(function(){var g=this,f=this.image;f.onload=null,f.onerror=null,this.sizing=!0;var _=P.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(P.navigator.userAgent),b=o(function(B,L){Ee(g.imageData,{naturalWidth:B,naturalHeight:L,aspectRatio:B/L}),g.sizing=!1,g.sized=!0,g.build()},"done");if(f.naturalWidth&&!_){b(f.naturalWidth,f.naturalHeight);return}var x=document.createElement("img"),k=document.body||document.documentElement;this.sizingImage=x,x.onload=function(){b(x.width,x.height),_||k.removeChild(x)},x.src=f.src,_||(x.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",k.appendChild(x))},"start")},{key:"stop",value:o(function(){var g=this.image;g.onload=null,g.onerror=null,g.parentNode.removeChild(g),this.image=null},"stop")},{key:"build",value:o(function(){if(!(!this.sized||this.ready)){var g=this.element,f=this.options,_=this.image,b=g.parentNode,x=document.createElement("div");x.innerHTML=lt;var k=x.querySelector(".".concat(O,"-container")),q=k.querySelector(".".concat(O,"-canvas")),B=k.querySelector(".".concat(O,"-drag-box")),L=k.querySelector(".".concat(O,"-crop-box")),U=L.querySelector(".".concat(O,"-face"));this.container=b,this.cropper=k,this.canvas=q,this.dragBox=B,this.cropBox=L,this.viewBox=k.querySelector(".".concat(O,"-view-box")),this.face=U,q.appendChild(_),Ve(g,E),b.insertBefore(k,g.nextSibling),this.isImg||Kt(_,S),this.initPreview(),this.bind(),f.initialAspectRatio=Math.max(0,f.initialAspectRatio)||NaN,f.aspectRatio=Math.max(0,f.aspectRatio)||NaN,f.viewMode=Math.max(0,Math.min(3,Math.round(f.viewMode)))||0,Ve(L,E),f.guides||Ve(L.getElementsByClassName("".concat(O,"-dashed")),E),f.center||Ve(L.getElementsByClassName("".concat(O,"-center")),E),f.background&&Ve(k,"".concat(O,"-bg")),f.highlight||Ve(U,F),f.cropBoxMovable&&(Ve(U,j),uo(U,M,z)),f.cropBoxResizable||(Ve(L.getElementsByClassName("".concat(O,"-line")),E),Ve(L.getElementsByClassName("".concat(O,"-point")),E)),this.render(),this.ready=!0,this.setDragMode(f.dragMode),f.autoCrop&&this.crop(),this.setData(f.data),mt(f.ready)&&Ot(g,Tt,f.ready,{once:!0}),cr(g,Tt)}},"build")},{key:"unbuild",value:o(function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),Kt(this.element,E))},"unbuild")},{key:"uncreate",value:o(function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()},"uncreate")}],[{key:"noConflict",value:o(function(){return window.Cropper=pb,v},"noConflict")},{key:"setDefaults",value:o(function(g){Ee(rt,Vr(g)&&g)},"setDefaults")}]),v}();return Ee(Wp.prototype,ab,lb,ub,cb,hb,db),Wp})});var Hy=be((T7,du)=>{"use strict";du.exports=sd;du.exports.isMobile=sd;du.exports.default=sd;var _P=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,xP=/CrOS/,FP=/android|ipad|playbook|silk/i;function sd(r){r||(r={});let e=r.ua;if(!e&&typeof navigator<"u"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),typeof e!="string")return!1;let t=_P.test(e)&&!xP.test(e)||!!r.tablet&&FP.test(e);return!t&&r.tablet&&r.featureDetect&&navigator&&navigator.maxTouchPoints>1&&e.indexOf("Macintosh")!==-1&&e.indexOf("Safari")!==-1&&(t=!0),t}o(sd,"isMobile")});var Fv=be((_9,xv)=>{"use strict";xv.exports=o(function(e,t){if(t=t.split(":")[0],e=+e,!e)return!1;switch(t){case"http":case"ws":return e!==80;case"https":case"wss":return e!==443;case"ftp":return e!==21;case"gopher":return e!==70;case"file":return!1}return e!==0},"required")});var Tv=be(Bd=>{"use strict";var L_=Object.prototype.hasOwnProperty,M_;function Ev(r){try{return decodeURIComponent(r.replace(/\+/g," "))}catch{return null}}o(Ev,"decode");function Cv(r){try{return encodeURIComponent(r)}catch{return null}}o(Cv,"encode");function B_(r){for(var e=/([^=?#&]+)=?([^&]*)/g,t={},i;i=e.exec(r);){var s=Ev(i[1]),n=Ev(i[2]);s===null||n===null||s in t||(t[s]=n)}return t}o(B_,"querystring");function z_(r,e){e=e||"";var t=[],i,s;typeof e!="string"&&(e="?");for(s in r)if(L_.call(r,s)){if(i=r[s],!i&&(i===null||i===M_||isNaN(i))&&(i=""),s=Cv(s),i=Cv(i),s===null||i===null)continue;t.push(s+"="+i)}return t.length?e+t.join("&"):""}o(z_,"querystringify");Bd.stringify=z_;Bd.parse=B_});var Nv=be((C9,Iv)=>{"use strict";var Av=Fv(),wu=Tv(),j_=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,Rv=/[\n\r\t]/g,H_=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,kv=/:\d+$/,q_=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,$_=/^[a-zA-Z]:/;function jd(r){return(r||"").toString().replace(j_,"")}o(jd,"trimLeft");var zd=[["#","hash"],["?","query"],o(function(e,t){return jr(t.protocol)?e.replace(/\\/g,"/"):e},"sanitize"),["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],Ov={hash:1,query:1};function Uv(r){var e;typeof window<"u"?e=window:typeof global<"u"?e=global:typeof self<"u"?e=self:e={};var t=e.location||{};r=r||t;var i={},s=typeof r,n;if(r.protocol==="blob:")i=new Hr(unescape(r.pathname),{});else if(s==="string"){i=new Hr(r,{});for(n in Ov)delete i[n]}else if(s==="object"){for(n in r)n in Ov||(i[n]=r[n]);i.slashes===void 0&&(i.slashes=H_.test(r.href))}return i}o(Uv,"lolcation");function jr(r){return r==="file:"||r==="ftp:"||r==="http:"||r==="https:"||r==="ws:"||r==="wss:"}o(jr,"isSpecial");function Dv(r,e){r=jd(r),r=r.replace(Rv,""),e=e||{};var t=q_.exec(r),i=t[1]?t[1].toLowerCase():"",s=!!t[2],n=!!t[3],a=0,l;return s?n?(l=t[2]+t[3]+t[4],a=t[2].length+t[3].length):(l=t[2]+t[4],a=t[2].length):n?(l=t[3]+t[4],a=t[3].length):l=t[4],i==="file:"?a>=2&&(l=l.slice(2)):jr(i)?l=t[4]:i?s&&(l=l.slice(2)):a>=2&&jr(e.protocol)&&(l=t[4]),{protocol:i,slashes:s||jr(i),slashesCount:a,rest:l}}o(Dv,"extractProtocol");function V_(r,e){if(r==="")return e;for(var t=(e||"/").split("/").slice(0,-1).concat(r.split("/")),i=t.length,s=t[i-1],n=!1,a=0;i--;)t[i]==="."?t.splice(i,1):t[i]===".."?(t.splice(i,1),a++):a&&(i===0&&(n=!0),t.splice(i,1),a--);return n&&t.unshift(""),(s==="."||s==="..")&&t.push(""),t.join("/")}o(V_,"resolve");function Hr(r,e,t){if(r=jd(r),r=r.replace(Rv,""),!(this instanceof Hr))return new Hr(r,e,t);var i,s,n,a,l,u,h=zd.slice(),d=typeof e,m=this,w=0;for(d!=="object"&&d!=="string"&&(t=e,e=null),t&&typeof t!="function"&&(t=wu.parse),e=Uv(e),s=Dv(r||"",e),i=!s.protocol&&!s.slashes,m.slashes=s.slashes||i&&e.slashes,m.protocol=s.protocol||e.protocol||"",r=s.rest,(s.protocol==="file:"&&(s.slashesCount!==2||$_.test(r))||!s.slashes&&(s.protocol||s.slashesCount<2||!jr(m.protocol)))&&(h[3]=[/(.*)/,"pathname"]);w{function Ft(r){if(r)return X5(r);this._callbacks=new Map}o(Ft,"Emitter");function X5(r){return Object.assign(r,Ft.prototype),r._callbacks=new Map,r}o(X5,"mixin");Ft.prototype.on=function(r,e){let t=this._callbacks.get(r)??[];return t.push(e),this._callbacks.set(r,t),this};Ft.prototype.once=function(r,e){let t=o((...i)=>{this.off(r,t),e.apply(this,i)},"on");return t.fn=e,this.on(r,t),this};Ft.prototype.off=function(r,e){if(r===void 0&&e===void 0)return this._callbacks.clear(),this;if(e===void 0)return this._callbacks.delete(r),this;let t=this._callbacks.get(r);if(t){for(let[i,s]of t.entries())if(s===e||s.fn===e){t.splice(i,1);break}t.length===0?this._callbacks.delete(r):this._callbacks.set(r,t)}return this};Ft.prototype.emit=function(r,...e){let t=this._callbacks.get(r);if(t){let i=[...t];for(let s of i)s.apply(this,e)}return this};Ft.prototype.listeners=function(r){return this._callbacks.get(r)??[]};Ft.prototype.listenerCount=function(r){if(r)return this.listeners(r).length;let e=0;for(let t of this._callbacks.values())e+=t.length;return e};Ft.prototype.hasListeners=function(r){return this.listenerCount(r)>0};Ft.prototype.addEventListener=Ft.prototype.on;Ft.prototype.removeListener=Ft.prototype.off;Ft.prototype.removeEventListener=Ft.prototype.off;Ft.prototype.removeAllListeners=Ft.prototype.off;typeof np<"u"&&(np.exports=Ft)});var R0=be((Mp,Bp)=>{(function(r,e){typeof Mp=="object"&&typeof Bp<"u"?Bp.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis<"u"?globalThis:r||self,r.Compressor=e())})(Mp,function(){"use strict";function r(R,T){var A=Object.keys(R);if(Object.getOwnPropertySymbols){var N=Object.getOwnPropertySymbols(R);T&&(N=N.filter(function(G){return Object.getOwnPropertyDescriptor(R,G).enumerable})),A.push.apply(A,N)}return A}o(r,"ownKeys");function e(R){for(var T=1;T"u"||function(T){var A=T.HTMLCanvasElement&&T.HTMLCanvasElement.prototype,N=T.Blob&&function(){try{return!!new Blob}catch{return!1}}(),G=N&&T.Uint8Array&&function(){try{return new Blob([new Uint8Array(100)]).size===100}catch{return!1}}(),Y=T.BlobBuilder||T.WebKitBlobBuilder||T.MozBlobBuilder||T.MSBlobBuilder,Fe=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,ce=(N||Y)&&T.atob&&T.ArrayBuffer&&T.Uint8Array&&function(ue){var he,Re,Ie,Ct,qe,oe,Tt,Je,$r;if(he=ue.match(Fe),!he)throw new Error("invalid data URI");for(Re=he[2]?he[1]:"text/plain"+(he[3]||";charset=US-ASCII"),Ie=!!he[4],Ct=ue.slice(he[0].length),Ie?qe=atob(Ct):qe=decodeURIComponent(Ct),oe=new ArrayBuffer(qe.length),Tt=new Uint8Array(oe),Je=0;Je"u"?!1:T instanceof Blob||Object.prototype.toString.call(T)==="[object Blob]"},"isBlob"),w={strict:!0,checkOrientation:!0,retainExif:!1,maxWidth:1/0,maxHeight:1/0,minWidth:0,minHeight:0,width:void 0,height:void 0,resize:"none",quality:.8,mimeType:"auto",convertTypes:["image/png"],convertSize:5e6,beforeDraw:null,drew:null,success:null,error:null},y=typeof window<"u"&&typeof window.document<"u",P=y?window:{},D=o(function(T){return T>0&&T<1/0},"isPositiveNumber"),C=Array.prototype.slice;function O(R){return Array.from?Array.from(R):C.call(R)}o(O,"toArray");var z=/^image\/.+$/;function X(R){return z.test(R)}o(X,"isImageType");function K(R){var T=X(R)?R.substr(6):"";return T==="jpeg"&&(T="jpg"),".".concat(T)}o(K,"imageTypeToExtension");var Z=String.fromCharCode;function $(R,T,A){var N="",G;for(A+=T,G=T;G0;)A.push(Z.apply(null,O(G.subarray(0,N)))),G=G.subarray(N);return"data:".concat(T,";base64,").concat(W(A.join("")))}o(te,"arrayBufferToDataURL");function se(R){var T=new DataView(R),A;try{var N,G,Y;if(T.getUint8(0)===255&&T.getUint8(1)===216)for(var Fe=T.byteLength,ce=2;ce+1=8&&(Y=he+Ie)}}}if(Y){var Ct=T.getUint16(Y,N),qe,oe;for(oe=0;oe1&&arguments[1]!==void 0?arguments[1]:1e11;return je.test(R)?Math.round(R*T)/T:R}o(He,"normalizeDecimalNumber");function xe(R){var T=R.aspectRatio,A=R.height,N=R.width,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"none",Y=D(N),Fe=D(A);if(Y&&Fe){var ce=A*T;(G==="contain"||G==="none")&&ce>N||G==="cover"&&ce1&&a(qe,Ae(oe))),ue&&(A.exif=De(Ct)),ce||ue?!F||oe>1?qe.url=te(Ct,Y):qe.url=F.createObjectURL(N):qe.url=Ct,A.load(qe)},he.onabort=function(){A.fail(new Error("Aborted to read the image with FileReader."))},he.onerror=function(){A.fail(new Error("Failed to read the image with FileReader."))},he.onloadend=function(){A.reader=null},ce||ue?he.readAsArrayBuffer(N):he.readAsDataURL(N)}},"init")},{key:"load",value:o(function(A){var N=this,G=this.file,Y=this.image;Y.onload=function(){N.draw(e(e({},A),{},{naturalWidth:Y.naturalWidth,naturalHeight:Y.naturalHeight}))},Y.onabort=function(){N.fail(new Error("Aborted to load the image."))},Y.onerror=function(){N.fail(new Error("Failed to load the image."))},P.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(P.navigator.userAgent)&&(Y.crossOrigin="anonymous"),Y.alt=G.name,Y.src=A.url},"load")},{key:"draw",value:o(function(A){var N=this,G=A.naturalWidth,Y=A.naturalHeight,Fe=A.rotate,ce=Fe===void 0?0:Fe,ue=A.scaleX,he=ue===void 0?1:ue,Re=A.scaleY,Ie=Re===void 0?1:Re,Ct=this.file,qe=this.image,oe=this.options,Tt=document.createElement("canvas"),Je=Tt.getContext("2d"),$r=Math.abs(ce)%180===90,Gi=(oe.resize==="contain"||oe.resize==="cover")&&D(oe.width)&&D(oe.height),Li=Math.max(oe.maxWidth,0)||1/0,Ki=Math.max(oe.maxHeight,0)||1/0,Xi=Math.max(oe.minWidth,0)||0,Yi=Math.max(oe.minHeight,0)||0,Mi=G/Y,rt=oe.width,lt=oe.height;if($r){var nl=[Ki,Li];Li=nl[0],Ki=nl[1];var de=[Yi,Xi];Xi=de[0],Yi=de[1];var Wo=[lt,rt];rt=Wo[0],lt=Wo[1]}Gi&&(Mi=rt/lt);var no=xe({aspectRatio:Mi,width:Li,height:Ki},"contain");Li=no.width,Ki=no.height;var Rr=xe({aspectRatio:Mi,width:Xi,height:Yi},"cover");if(Xi=Rr.width,Yi=Rr.height,Gi){var al=xe({aspectRatio:Mi,width:rt,height:lt},oe.resize);rt=al.width,lt=al.height}else{var Vr=xe({aspectRatio:Mi,width:rt,height:lt}),mt=Vr.width;rt=mt===void 0?G:mt;var ll=Vr.height;lt=ll===void 0?Y:ll}rt=Math.floor(He(Math.min(Math.max(rt,Xi),Li))),lt=Math.floor(He(Math.min(Math.max(lt,Yi),Ki)));var ul=-rt/2,$e=-lt/2,Ee=rt,Lu=lt,kr=[];if(Gi){var cl=0,Sr=0,Go=G,Ve=Y,Kt=xe({aspectRatio:Mi,width:G,height:Y},{contain:"cover",cover:"contain"}[oe.resize]);Go=Kt.width,Ve=Kt.height,cl=(G-Go)/2,Sr=(Y-Ve)/2,kr.push(cl,Sr,Go,Ve)}if(kr.push(ul,$e,Ee,Lu),$r){var Wr=[lt,rt];rt=Wr[0],lt=Wr[1]}Tt.width=rt,Tt.height=lt,X(oe.mimeType)||(oe.mimeType=Ct.type);var hl="transparent";Ct.size>oe.convertSize&&oe.convertTypes.indexOf(oe.mimeType)>=0&&(oe.mimeType="image/jpeg");var ao=oe.mimeType==="image/jpeg";if(ao&&(hl="#fff"),Je.fillStyle=hl,Je.fillRect(0,0,rt,lt),oe.beforeDraw&&oe.beforeDraw.call(this,Je,Tt),!this.aborted&&(Je.save(),Je.translate(rt/2,lt/2),Je.rotate(ce*Math.PI/180),Je.scale(he,Ie),Je.drawImage.apply(Je,[qe].concat(kr)),Je.restore(),oe.drew&&oe.drew.call(this,Je,Tt),!this.aborted)){var lo=o(function(Ji){if(!N.aborted){var Ko=o(function(cr){return N.done({naturalWidth:G,naturalHeight:Y,result:cr})},"done");if(Ji&&ao&&oe.retainExif&&N.exif&&N.exif.length>0){var Xo=o(function(cr){return Ko(d(te(ft(cr,N.exif),oe.mimeType)))},"next");if(Ji.arrayBuffer)Ji.arrayBuffer().then(Xo).catch(function(){N.fail(new Error("Failed to read the compressed image with Blob.arrayBuffer()."))});else{var ut=new S;N.reader=ut,ut.onload=function(Ot){var cr=Ot.target;Xo(cr.result)},ut.onabort=function(){N.fail(new Error("Aborted to read the compressed image with FileReader."))},ut.onerror=function(){N.fail(new Error("Failed to read the compressed image with FileReader."))},ut.onloadend=function(){N.reader=null},ut.readAsArrayBuffer(Ji)}}else Ko(Ji)}},"callback");Tt.toBlob?Tt.toBlob(lo,oe.mimeType,oe.quality):lo(d(Tt.toDataURL(oe.mimeType,oe.quality)))}},"draw")},{key:"done",value:o(function(A){var N=A.naturalWidth,G=A.naturalHeight,Y=A.result,Fe=this.file,ce=this.image,ue=this.options;if(F&&ce.src.indexOf("blob:")===0&&F.revokeObjectURL(ce.src),Y)if(ue.strict&&!ue.retainExif&&Y.size>Fe.size&&ue.mimeType===Fe.type&&!(ue.width>N||ue.height>G||ue.minWidth>N||ue.minHeight>G||ue.maxWidthOs,AwsS3:()=>Ro,BasePlugin:()=>Ce,Box:()=>fi,Compressor:()=>ol,Core:()=>lF,Dashboard:()=>ws,DefaultStore:()=>Sl,DragDrop:()=>Ss,DropTarget:()=>Eo,Dropbox:()=>mi,Facebook:()=>gi,FileInput:()=>Ps,Form:()=>Ho,GoldenRetriever:()=>$o,GoogleDrive:()=>yi,GooglePhotos:()=>vi,ImageEditor:()=>_s,Informer:()=>ui,Instagram:()=>bi,OneDrive:()=>wi,ProgressBar:()=>xs,ReduxDevTools:()=>Vo,ReduxStore:()=>tg,RemoteSources:()=>Co,ScreenCapture:()=>Rs,StatusBar:()=>li,ThumbnailGenerator:()=>qi,Transloadit:()=>Ui,Tus:()=>Ai,UIPlugin:()=>ne,Unsplash:()=>Si,Uppy:()=>Zu,Url:()=>vr,Webcam:()=>ks,XHRUpload:()=>zo,Zoom:()=>Pi,debugLogger:()=>rn,locales:()=>cF,server:()=>pc,views:()=>uF});function gl(r,e){if(!{}.hasOwnProperty.call(r,e))throw new TypeError("attempted to use private field on non-instance");return r}o(gl,"_classPrivateFieldLooseBase");var Pb=0;function Qp(r){return"__private_"+Pb+++"_"+r}o(Qp,"_classPrivateFieldLooseKey");function _b(r,e,t){let i=[];return r.forEach(s=>typeof s!="string"?i.push(s):e[Symbol.split](s).forEach((n,a,l)=>{n!==""&&i.push(n),a{throw new Error(`missing string: ${r}`)},"defaultOnMissingKey"),Jo=Qp("onMissingKey"),Qo=Qp("apply"),ts=class{static{o(this,"Translator")}constructor(e,t){let{onMissingKey:i=xb}=t===void 0?{}:t;Object.defineProperty(this,Qo,{value:Fb}),Object.defineProperty(this,Jo,{writable:!0,value:void 0}),this.locale={strings:{},pluralize(s){return s===1?0:1}},Array.isArray(e)?e.forEach(gl(this,Qo)[Qo],this):gl(this,Qo)[Qo](e),gl(this,Jo)[Jo]=i}translate(e,t){return this.translateArray(e,t).join("")}translateArray(e,t){let i=this.locale.strings[e];if(i==null&&(gl(this,Jo)[Jo](e),i=e),typeof i=="object"){if(t&&typeof t.smart_count<"u"){let n=this.locale.pluralize(t.smart_count);return Jp(i[n],t)}throw new Error("Attempted to use a string with plural forms, but no value was given for %{smart_count}")}if(typeof i!="string")throw new Error("string was not a string");return Jp(i,t)}};function Fb(r){if(!(r!=null&&r.strings))return;let e=this.locale;Object.assign(this.locale,{strings:{...e.strings,...r.strings},pluralize:r.pluralize||e.pluralize})}o(Fb,"_apply2");var Gf=ve(ef(),1);var Eb="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var dr=o((r=21)=>{let e="",t=r;for(;t--;)e+=Eb[Math.random()*64|0];return e},"nanoid");var Kf=ve(vl(),1);function bl(r,e){if(!{}.hasOwnProperty.call(r,e))throw new TypeError("attempted to use private field on non-instance");return r}o(bl,"_classPrivateFieldLooseBase");var b1=0;function Df(r){return"__private_"+b1+++"_"+r}o(Df,"_classPrivateFieldLooseKey");var w1={version:"4.1.0"},rs=Df("callbacks"),Vu=Df("publish"),wl=class{static{o(this,"DefaultStore")}constructor(){Object.defineProperty(this,Vu,{value:S1}),this.state={},Object.defineProperty(this,rs,{writable:!0,value:new Set})}getState(){return this.state}setState(e){let t={...this.state},i={...this.state,...e};this.state=i,bl(this,Vu)[Vu](t,i,e)}subscribe(e){return bl(this,rs)[rs].add(e),()=>{bl(this,rs)[rs].delete(e)}}};function S1(){for(var r=arguments.length,e=new Array(r),t=0;t{i(...e)})}o(S1,"_publish2");wl.VERSION=w1.version;var Sl=wl;function Dr(r){let e=r.lastIndexOf(".");return e===-1||e===r.length-1?{name:r,extension:void 0}:{name:r.slice(0,e),extension:r.slice(e+1)}}o(Dr,"getFileNameAndExtension");var en={__proto__:null,md:"text/markdown",markdown:"text/markdown",mp4:"video/mp4",mp3:"audio/mp3",svg:"image/svg+xml",jpg:"image/jpeg",png:"image/png",webp:"image/webp",gif:"image/gif",heic:"image/heic",heif:"image/heif",yaml:"text/yaml",yml:"text/yaml",csv:"text/csv",tsv:"text/tab-separated-values",tab:"text/tab-separated-values",avi:"video/x-msvideo",mks:"video/x-matroska",mkv:"video/x-matroska",mov:"video/quicktime",dicom:"application/dicom",doc:"application/msword",docm:"application/vnd.ms-word.document.macroenabled.12",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",dot:"application/msword",dotm:"application/vnd.ms-word.template.macroenabled.12",dotx:"application/vnd.openxmlformats-officedocument.wordprocessingml.template",xla:"application/vnd.ms-excel",xlam:"application/vnd.ms-excel.addin.macroenabled.12",xlc:"application/vnd.ms-excel",xlf:"application/x-xliff+xml",xlm:"application/vnd.ms-excel",xls:"application/vnd.ms-excel",xlsb:"application/vnd.ms-excel.sheet.binary.macroenabled.12",xlsm:"application/vnd.ms-excel.sheet.macroenabled.12",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xlt:"application/vnd.ms-excel",xltm:"application/vnd.ms-excel.template.macroenabled.12",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template",xlw:"application/vnd.ms-excel",txt:"text/plain",text:"text/plain",conf:"text/plain",log:"text/plain",pdf:"application/pdf",zip:"application/zip","7z":"application/x-7z-compressed",rar:"application/x-rar-compressed",tar:"application/x-tar",gz:"application/gzip",dmg:"application/x-apple-diskimage"};function tn(r){var e;if(r.type)return r.type;let t=r.name?(e=Dr(r.name).extension)==null?void 0:e.toLowerCase():null;return t&&t in en?en[t]:"application/octet-stream"}o(tn,"getFileType");function P1(r){return r.charCodeAt(0).toString(32)}o(P1,"encodeCharacter");function If(r){let e="";return r.replace(/[^A-Z0-9]/gi,t=>(e+=`-${P1(t)}`,"/"))+e}o(If,"encodeFilename");function Nf(r,e){let t=e||"uppy";return typeof r.name=="string"&&(t+=`-${If(r.name.toLowerCase())}`),r.type!==void 0&&(t+=`-${r.type}`),r.meta&&typeof r.meta.relativePath=="string"&&(t+=`-${If(r.meta.relativePath.toLowerCase())}`),r.data.size!==void 0&&(t+=`-${r.data.size}`),r.data.lastModified!==void 0&&(t+=`-${r.data.lastModified}`),t}o(Nf,"generateFileID");function _1(r){return!r.isRemote||!r.remote?!1:new Set(["box","dropbox","drive","facebook","unsplash"]).has(r.remote.provider)}o(_1,"hasFileStableId");function Pl(r,e){if(_1(r))return r.id;let t=tn(r);return Nf({...r,type:t},e)}o(Pl,"getSafeFileId");function Wu(r){if(r==null&&typeof navigator<"u"&&(r=navigator.userAgent),!r)return!0;let e=/Edge\/(\d+\.\d+)/.exec(r);if(!e)return!0;let i=e[1].split(".",2),s=parseInt(i[0],10),n=parseInt(i[1],10);return s<15||s===15&&n<15063||s>18||s===18&&n>=18218}o(Wu,"supportsUploadProgress");function Gu(r,e){return e.name?e.name:r.split("/")[0]==="image"?`${r.split("/")[0]}.${r.split("/")[1]}`:"noname"}o(Gu,"getFileName");function Ku(r){return r<10?`0${r}`:r.toString()}o(Ku,"pad");function co(){let r=new Date,e=Ku(r.getHours()),t=Ku(r.getMinutes()),i=Ku(r.getSeconds());return`${e}:${t}:${i}`}o(co,"getTimeStamp");var Lf={debug:o(()=>{},"debug"),warn:o(()=>{},"warn"),error:o(function(){for(var r=arguments.length,e=new Array(r),t=0;t{var i;let s=e();if(((i=s.restrictions)==null?void 0:i.allowedFileTypes)!=null&&!Array.isArray(s.restrictions.allowedFileTypes))throw new TypeError("`restrictions.allowedFileTypes` must be an array");return s}}validateAggregateRestrictions(e,t){let{maxTotalFileSize:i,maxNumberOfFiles:s}=this.getOpts().restrictions;if(s&&e.filter(a=>!a.isGhost).length+t.length>s)throw new qt(`${this.getI18n()("youCanOnlyUploadX",{smart_count:s})}`);if(i){let n=[...e,...t].reduce((a,l)=>{var u;return a+((u=l.size)!=null?u:0)},0);if(n>i)throw new qt(this.getI18n()("aggregateExceedsSize",{sizeAllowed:(0,on.default)(i),size:(0,on.default)(n)}))}}validateSingleFile(e){let{maxFileSize:t,minFileSize:i,allowedFileTypes:s}=this.getOpts().restrictions;if(s&&!s.some(l=>l.includes("/")?e.type?(0,$f.default)(e.type.replace(/;.*?$/,""),l):!1:l[0]==="."&&e.extension?e.extension.toLowerCase()===l.slice(1).toLowerCase():!1)){let l=s.join(", ");throw new qt(this.getI18n()("youCanOnlyUploadFileTypes",{types:l}),{file:e})}if(t&&e.size!=null&&e.size>t){var n;throw new qt(this.getI18n()("exceedsSize",{size:(0,on.default)(t),file:(n=e.name)!=null?n:this.getI18n()("unnamed")}),{file:e})}if(i&&e.size!=null&&e.size{this.validateSingleFile(i)}),this.validateAggregateRestrictions(e,t)}validateMinNumberOfFiles(e){let{minNumberOfFiles:t}=this.getOpts().restrictions;if(t&&Object.keys(e).length{let a=this.getFile(s?.id);if(s==null||!a){this.log(`Not setting progress for a file that has been removed: ${s?.id}`);return}if(a.progress.percentage===100){this.log(`Not setting progress for a file that has been already uploaded: ${s.id}`);return}let l=Number.isFinite(n.bytesTotal)&&n.bytesTotal>0;this.setFileState(s.id,{progress:{...a.progress,bytesUploaded:n.bytesUploaded,bytesTotal:n.bytesTotal,percentage:l?Math.round(n.bytesUploaded/n.bytesTotal*100):0}}),this.calculateTotalProgress()},500,{leading:!0,trailing:!0}),Object.defineProperty(this,Pr,{writable:!0,value:this.updateOnlineStatus.bind(this)}),Object.defineProperty(this,cn,{writable:!0,value:new Map}),this.defaultLocale=Wf;let t={id:"uppy",autoProceed:!1,allowMultipleUploadBatches:!0,debug:!1,restrictions:Vf,meta:{},onBeforeFileAdded:o((s,n)=>!Object.hasOwn(n,s.id),"onBeforeFileAdded"),onBeforeUpload:o(s=>s,"onBeforeUpload"),store:new Sl,logger:Lf,infoTimeout:5e3},i={...t,...e};this.opts={...i,restrictions:{...t.restrictions,...e&&e.restrictions}},e&&e.logger&&e.debug?this.log("You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.","warning"):e&&e.debug&&(this.opts.logger=rn),this.log(`Using Core v${r.VERSION}`),this.i18nInit(),this.store=this.opts.store,this.setState({...xl,plugins:{},files:{},currentUploads:{},capabilities:{uploadProgress:Wu(),individualCancellation:!0,resumableUploads:!1},meta:{...this.opts.meta},info:[]}),Q(this,Rt)[Rt]=new _l(()=>this.opts,()=>this.i18n),Q(this,nn)[nn]=this.store.subscribe((s,n,a)=>{this.emit("state-update",s,n,a),this.updateAll(n)}),this.opts.debug&&typeof window<"u"&&(window[this.opts.id]=this),Q(this,Yu)[Yu]()}emit(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s{t.update(e)})}setState(e){this.store.setState(e)}getState(){return this.store.getState()}patchFilesState(e){let t=this.getState().files;this.setState({files:{...t,...Object.fromEntries(Object.entries(e).map(i=>{let[s,n]=i;return[s,{...t[s],...n}]}))}})}setFileState(e,t){if(!this.getState().files[e])throw new Error(`Can\u2019t set state for ${e} (the file could have been removed)`);this.patchFilesState({[e]:t})}i18nInit(){let e=o(i=>this.log(`Missing i18n string: ${i}`,"error"),"onMissingKey"),t=new ts([this.defaultLocale,this.opts.locale],{onMissingKey:e});this.i18n=t.translate.bind(t),this.i18nArray=t.translateArray.bind(t),this.locale=t.locale}setOptions(e){this.opts={...this.opts,...e,restrictions:{...this.opts.restrictions,...e?.restrictions}},e.meta&&this.setMeta(e.meta),this.i18nInit(),e.locale&&this.iteratePlugins(t=>{t.setOptions(e)}),this.setState(void 0)}resetProgress(){let e={percentage:0,bytesUploaded:!1,uploadComplete:!1,uploadStarted:null},t={...this.getState().files},i=Object.create(null);Object.keys(t).forEach(s=>{i[s]={...t[s],progress:{...t[s].progress,...e},tus:void 0,transloadit:void 0}}),this.setState({files:i,...xl})}clear(){let{capabilities:e,currentUploads:t}=this.getState();if(Object.keys(t).length>0&&!e.individualCancellation)throw new Error("The installed uploader plugin does not allow removing files during an upload.");this.setState({...xl,files:{}})}addPreProcessor(e){Q(this,is)[is].add(e)}removePreProcessor(e){return Q(this,is)[is].delete(e)}addPostProcessor(e){Q(this,Qr)[Qr].add(e)}removePostProcessor(e){return Q(this,Qr)[Qr].delete(e)}addUploader(e){Q(this,ss)[ss].add(e)}removeUploader(e){return Q(this,ss)[ss].delete(e)}setMeta(e){let t={...this.getState().meta,...e},i={...this.getState().files};Object.keys(i).forEach(s=>{i[s]={...i[s],meta:{...i[s].meta,...e}}}),this.log("Adding metadata:"),this.log(e),this.setState({meta:t,files:i})}setFileMeta(e,t){let i={...this.getState().files};if(!i[e]){this.log("Was trying to set metadata for a file that has been removed: ",e);return}let s={...i[e].meta,...t};i[e]={...i[e],meta:s},this.setState({files:i})}getFile(e){return this.getState().files[e]}getFiles(){let{files:e}=this.getState();return Object.values(e)}getFilesByIds(e){return e.map(t=>this.getFile(t))}getObjectOfFilesPerState(){let{files:e,totalProgress:t,error:i}=this.getState(),s=Object.values(e),n=[],a=[],l=[],u=[],h=[],d=[],m=[],w=[],y=[];for(let P of s){let{progress:D}=P;!D.uploadComplete&&D.uploadStarted&&(n.push(P),P.isPaused||w.push(P)),D.uploadStarted||a.push(P),(D.uploadStarted||D.preprocess||D.postprocess)&&l.push(P),D.uploadStarted&&u.push(P),P.isPaused&&h.push(P),D.uploadComplete&&d.push(P),P.error&&m.push(P),(D.preprocess||D.postprocess)&&y.push(P)}return{newFiles:a,startedFiles:l,uploadStartedFiles:u,pausedFiles:h,completeFiles:d,erroredFiles:m,inProgressFiles:n,inProgressNotPausedFiles:w,processingFiles:y,isUploadStarted:u.length>0,isAllComplete:t===100&&d.length===s.length&&y.length===0,isAllErrored:!!i&&m.length===s.length,isAllPaused:n.length!==0&&h.length===n.length,isUploadInProgress:n.length>0,isSomeGhost:s.some(P=>P.isGhost)}}validateSingleFile(e){try{Q(this,Rt)[Rt].validateSingleFile(e)}catch(t){return t.message}return null}validateAggregateRestrictions(e){let t=this.getFiles();try{Q(this,Rt)[Rt].validateAggregateRestrictions(t,e)}catch(i){return i.message}return null}checkIfFileAlreadyExists(e){let{files:t}=this.getState();return!!(t[e]&&!t[e].isGhost)}addFile(e){Q(this,an)[an](e);let{nextFilesState:t,validFilesToAdd:i,errors:s}=Q(this,un)[un]([e]),n=s.filter(l=>l.isRestriction);if(Q(this,Yt)[Yt](n),s.length>0)throw s[0];this.setState({files:t});let[a]=i;return this.emit("file-added",a),this.emit("files-added",i),this.log(`Added file: ${a.name}, ${a.id}, mime type: ${a.type}`),Q(this,ln)[ln](),a.id}addFiles(e){Q(this,an)[an]();let{nextFilesState:t,validFilesToAdd:i,errors:s}=Q(this,un)[un](e),n=s.filter(l=>l.isRestriction);Q(this,Yt)[Yt](n);let a=s.filter(l=>!l.isRestriction);if(a.length>0){let l=`Multiple errors occurred while adding files: +`;if(a.forEach(u=>{l+=` + * ${u.message}`}),this.info({message:this.i18n("addBulkFilesFailed",{smart_count:a.length}),details:l},"error",this.opts.infoTimeout),typeof AggregateError=="function")throw new AggregateError(a,l);{let u=new Error(l);throw u.errors=a,u}}this.setState({files:t}),i.forEach(l=>{this.emit("file-added",l)}),this.emit("files-added",i),i.length>5?this.log(`Added batch of ${i.length} files`):Object.values(i).forEach(l=>{this.log(`Added file: ${l.name} id: ${l.id} - type: ${l.type}`)}),r.length>0&&q(this,bn)[bn]()}removeFiles(e,t){let{files:r,currentUploads:s}=this.getState(),o={...r},a={...s},l=Object.create(null);e.forEach(f=>{r[f]&&(l[f]=r[f],delete o[f])});function h(f){return l[f]===void 0}n(h,"fileIsNotRemoved"),Object.keys(a).forEach(f=>{let y=s[f].fileIDs.filter(h);if(y.length===0){delete a[f];return}let{capabilities:b}=this.getState();if(y.length!==s[f].fileIDs.length&&!b.individualCancellation)throw new Error("individualCancellation is disabled");a[f]={...s[f],fileIDs:y}});let p={currentUploads:a,files:o};Object.keys(o).length===0&&(p.allowNewUpload=!0,p.error=null,p.recoveredState=null),this.setState(p),this.calculateTotalProgress();let d=Object.keys(l);d.forEach(f=>{this.emit("file-removed",l[f],t)}),d.length>5?this.log(`Removed ${d.length} files`):this.log(`Removed files: ${d.join(", ")}`)}removeFile(e,t){t===void 0&&(t=null),this.removeFiles([e],t)}pauseResume(e){if(!this.getState().capabilities.resumableUploads||this.getFile(e).uploadComplete)return;let r=!(this.getFile(e).isPaused||!1);return this.setFileState(e,{isPaused:r}),this.emit("upload-pause",e,r),r}pauseAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!0};e[r]=s}),this.setState({files:e}),this.emit("pause-all")}resumeAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!1,error:null};e[r]=s}),this.setState({files:e}),this.emit("resume-all")}retryAll(){let e={...this.getState().files},t=Object.keys(e).filter(s=>e[s].error);if(t.forEach(s=>{let o={...e[s],isPaused:!1,error:null};e[s]=o}),this.setState({files:e,error:null}),this.emit("retry-all",t),t.length===0)return Promise.resolve({successful:[],failed:[]});let r=q(this,fr)[fr](t,{forceAllowNewUpload:!0});return q(this,mr)[mr](r)}cancelAll(e){let{reason:t="user"}=e===void 0?{}:e;if(this.emit("cancel-all",{reason:t}),t==="user"){let{files:r}=this.getState(),s=Object.keys(r);s.length&&this.removeFiles(s,"cancel-all"),this.setState(Ml())}}retryUpload(e){this.setFileState(e,{error:null,isPaused:!1}),this.emit("upload-retry",e);let t=q(this,fr)[fr]([e],{forceAllowNewUpload:!0});return q(this,mr)[mr](t)}logout(){this.iteratePlugins(e=>{e.provider&&e.provider.logout&&e.provider.logout()})}calculateTotalProgress(){let t=this.getFiles().filter(p=>p.progress.uploadStarted||p.progress.preprocess||p.progress.postprocess);if(t.length===0){this.emit("progress",0),this.setState({totalProgress:0});return}let r=t.filter(p=>p.progress.bytesTotal!=null),s=t.filter(p=>p.progress.bytesTotal==null);if(r.length===0){let p=t.length*100,d=s.reduce((y,b)=>y+b.progress.percentage,0),f=Math.round(d/p*100);this.setState({totalProgress:f});return}let o=r.reduce((p,d)=>p+d.progress.bytesTotal,0),a=o/r.length;o+=a*s.length;let l=0;r.forEach(p=>{l+=p.progress.bytesUploaded}),s.forEach(p=>{l+=a*(p.progress.percentage||0)/100});let h=o===0?0:Math.round(l/o*100);h>100&&(h=100),this.setState({totalProgress:h}),this.emit("progress",h)}updateOnlineStatus(){(typeof window.navigator.onLine<"u"?window.navigator.onLine:!0)?(this.emit("is-online"),this.wasOffline&&(this.emit("back-online"),this.info(this.i18n("connectedToInternet"),"success",3e3),this.wasOffline=!1)):(this.emit("is-offline"),this.info(this.i18n("noInternetConnection"),"error",0),this.wasOffline=!0)}getID(){return this.opts.id}use(e,t){if(typeof e!="function"){let a=`Expected a plugin class, but got ${e===null?"null":typeof e}. Please verify that the plugin was imported and spelled correctly.`;throw new TypeError(a)}let r=new e(this,t),s=r.id;if(!s)throw new Error("Your plugin must have an id");if(!r.type)throw new Error("Your plugin must have a type");let o=this.getPlugin(s);if(o){let a=`Already found a plugin named '${o.id}'. Tried to use: '${s}'. -Uppy plugins must have unique \`id\` options. See https://uppy.io/docs/plugins/#id.`;throw new Error(a)}return e.VERSION&&this.log(`Using ${s} v${e.VERSION}`),r.type in q(this,ht)[ht]?q(this,ht)[ht][r.type].push(r):q(this,ht)[ht][r.type]=[r],r.install(),this.emit("plugin-added",r),this}getPlugin(e){for(let t of Object.values(q(this,ht)[ht])){let r=t.find(s=>s.id===e);if(r!=null)return r}}[Qf](e){return q(this,ht)[ht][e]}iteratePlugins(e){Object.values(q(this,ht)[ht]).flat(1).forEach(e)}removePlugin(e){this.log(`Removing plugin ${e.id}`),this.emit("plugin-remove",e),e.uninstall&&e.uninstall();let t=q(this,ht)[ht][e.type],r=t.findIndex(a=>a.id===e.id);r!==-1&&t.splice(r,1);let o={plugins:{...this.getState().plugins,[e.id]:void 0}};this.setState(o)}close(e){let{reason:t}=e===void 0?{}:e;this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`),this.cancelAll({reason:t}),q(this,yn)[yn](),this.iteratePlugins(r=>{this.removePlugin(r)}),typeof window<"u"&&window.removeEventListener&&(window.removeEventListener("online",q(this,Si)[Si]),window.removeEventListener("offline",q(this,Si)[Si]))}hideInfo(){let{info:e}=this.getState();this.setState({info:e.slice(1)}),this.emit("info-hidden")}info(e,t,r){t===void 0&&(t="info"),r===void 0&&(r=3e3);let s=typeof e=="object";this.setState({info:[...this.getState().info,{type:t,message:s?e.message:e,details:s?e.details:null}]}),setTimeout(()=>this.hideInfo(),r),this.emit("info-visible")}log(e,t){let{logger:r}=this.opts;switch(t){case"error":r.error(e);break;case"warning":r.warn(e);break;default:r.debug(e);break}}restore(e){return this.log(`Core: attempting to restore upload "${e}"`),this.getState().currentUploads[e]?q(this,mr)[mr](e):(q(this,ws)[ws](e),Promise.reject(new Error("Nonexistent upload")))}[Jf](){return q(this,fr)[fr](...arguments)}addResultData(e,t){if(!q(this,Ch)[Ch](e)){this.log(`Not setting result for an upload that has been removed: ${e}`);return}let{currentUploads:r}=this.getState(),s={...r[e],result:{...r[e].result,...t}};this.setState({currentUploads:{...r,[e]:s}})}upload(){var e;(e=q(this,ht)[ht].uploader)!=null&&e.length||this.log("No uploader type plugins are used","warning");let{files:t}=this.getState(),r=this.opts.onBeforeUpload(t);return r===!1?Promise.reject(new Error("Not starting the upload because onBeforeUpload returned false")):(r&&typeof r=="object"&&(t=r,this.setState({files:t})),Promise.resolve().then(()=>q(this,Gt)[Gt].validateMinNumberOfFiles(t)).catch(s=>{throw q(this,Kt)[Kt]([s]),s}).then(()=>{if(!q(this,Eh)[Eh](t))throw new Tt(this.i18n("missingRequiredMetaField"))}).catch(s=>{throw s}).then(()=>{let{currentUploads:s}=this.getState(),o=Object.values(s).flatMap(h=>h.fileIDs),a=[];Object.keys(t).forEach(h=>{let p=this.getFile(h);!p.progress.uploadStarted&&o.indexOf(h)===-1&&a.push(p.id)});let l=q(this,fr)[fr](a);return q(this,mr)[mr](l)}).catch(s=>{throw this.emit("error",s),this.log(s,"error"),s}))}};n(Sn,"Uppy");function Q1(i){for(let o of i){let{file:a,isRestriction:l}=o;l?this.emit("restriction-failed",a,o):this.emit("error",o),this.log(o,"warning")}let e=i.filter(o=>o.isUserFacing),t=4,r=e.slice(0,t),s=e.slice(t);r.forEach(o=>{let{message:a,details:l=""}=o;this.info({message:a,details:l},"error",this.opts.infoTimeout)}),s.length>0&&this.info({message:this.i18n("additionalRestrictionsFailed",{count:s.length})})}n(Q1,"_informAndEmit2");function J1(i){let{missingFields:e,error:t}=q(this,Gt)[Gt].getMissingRequiredMetaFields(i);return e.length>0?(this.setFileState(i.id,{missingRequiredMetaFields:e}),this.log(t.message),this.emit("restriction-failed",i,t),!1):!0}n(J1,"_checkRequiredMetaFieldsOnFile2");function Z1(i){let e=!0;for(let t of Object.values(i))q(this,Pn)[Pn](t)||(e=!1);return e}n(Z1,"_checkRequiredMetaFields2");function ew(i){let{allowNewUpload:e}=this.getState();if(e===!1){let t=new Tt(this.i18n("noMoreFilesAllowed"),{file:i});throw q(this,Kt)[Kt]([t]),t}}n(ew,"_assertNewUploadAllowed2");function tw(i){let e=i instanceof File?{name:i.name,type:i.type,size:i.size,data:i}:i,t=ys(e),r=xh(t,e),s=Bi(r).extension,o=!!e.isRemote,a=Dl(e),l=e.meta||{};l.name=r,l.type=t;let h=Number.isFinite(e.data.size)?e.data.size:null;return{source:e.source||"",id:a,name:r,extension:s||"",meta:{...this.getState().meta,...l},type:t,data:e.data,progress:{percentage:0,bytesUploaded:0,bytesTotal:h,uploadComplete:!1,uploadStarted:null},size:h,isRemote:o,remote:e.remote||"",preview:e.preview}}n(tw,"_transformFile2");function iw(){this.opts.autoProceed&&!this.scheduledAutoProceed&&(this.scheduledAutoProceed=setTimeout(()=>{this.scheduledAutoProceed=null,this.upload().catch(i=>{i.isRestriction||this.log(i.stack||i.message||i)})},4))}n(iw,"_startIfAutoProceed2");function rw(i){let{files:e}=this.getState(),t={...e},r=[],s=[];for(let a of i)try{var o;let l=q(this,Th)[Th](a);if((o=e[l.id])!=null&&o.isGhost){let{isGhost:p,...d}=e[l.id];l={...d,data:a.data},this.log(`Replaced the blob in the restored ghost file: ${l.name}, ${l.id}`)}let h=this.opts.onBeforeFileAdded(l,t);if(!h&&this.checkIfFileAlreadyExists(l.id))throw new Tt(this.i18n("noDuplicates",{fileName:l.name}),{file:a});if(h===!1)throw new Tt("Cannot add the file because onBeforeFileAdded returned false.",{isUserFacing:!1,file:a});typeof h=="object"&&h!==null&&(l=h),q(this,Gt)[Gt].validateSingleFile(l),t[l.id]=l,r.push(l)}catch(l){s.push(l)}try{q(this,Gt)[Gt].validateAggregateRestrictions(Object.values(e),r)}catch(a){return s.push(a),{nextFilesState:e,validFilesToAdd:[],errors:s}}return{nextFilesState:t,validFilesToAdd:r,errors:s}}n(rw,"_checkAndUpdateFileState2");function sw(){let i=n((r,s,o)=>{let a=r.message||"Unknown error";r.details&&(a+=` ${r.details}`),this.setState({error:a}),s!=null&&s.id in this.getState().files&&this.setFileState(s.id,{error:a,response:o})},"errorHandler");this.on("error",i),this.on("upload-error",(r,s,o)=>{if(i(s,r,o),typeof s=="object"&&s.message){this.log(s.message,"error");let a=new Error(this.i18n("failedToUpload",{file:r?.name}));a.isUserFacing=!0,a.details=s.message,s.details&&(a.details+=` ${s.details}`),q(this,Kt)[Kt]([a])}else q(this,Kt)[Kt]([s])});let e;this.on("upload-stalled",(r,s)=>{let{message:o}=r,a=s.map(l=>l.meta.name).join(", ");e||(this.info({message:o,details:a},"warning",this.opts.infoTimeout),e=setTimeout(()=>{e=null},this.opts.infoTimeout)),this.log(`${o} ${a}`.trim(),"warning")}),this.on("upload",()=>{this.setState({error:null})});let t=n(r=>{let s=r.filter(a=>{let l=a!=null&&this.getFile(a.id);return l||this.log(`Not setting progress for a file that has been removed: ${a?.id}`),l}),o=Object.fromEntries(s.map(a=>[a.id,{progress:{uploadStarted:Date.now(),uploadComplete:!1,percentage:0,bytesUploaded:0,bytesTotal:a.size}}]));this.patchFilesState(o)},"onUploadStarted");this.on("upload-start",r=>{r.forEach(s=>{this.emit("upload-started",s)}),t(r)}),this.on("upload-progress",this.calculateProgress),this.on("upload-success",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let o=this.getFile(r.id).progress;this.setFileState(r.id,{progress:{...o,postprocess:q(this,gr)[gr].size>0?{mode:"indeterminate"}:null,uploadComplete:!0,percentage:100,bytesUploaded:o.bytesTotal},response:s,uploadURL:s.uploadURL,isPaused:!1}),r.size==null&&this.setFileState(r.id,{size:s.bytesUploaded||o.bytesTotal}),this.calculateTotalProgress()}),this.on("preprocess-progress",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getFile(r.id).progress,preprocess:s}})}),this.on("preprocess-complete",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.preprocess,this.setState({files:s})}),this.on("postprocess-progress",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getState().files[r.id].progress,postprocess:s}})}),this.on("postprocess-complete",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.postprocess,this.setState({files:s})}),this.on("restored",()=>{this.calculateTotalProgress()}),this.on("dashboard:file-edit-complete",r=>{r&&q(this,Pn)[Pn](r)}),typeof window<"u"&&window.addEventListener&&(window.addEventListener("online",q(this,Si)[Si]),window.addEventListener("offline",q(this,Si)[Si]),setTimeout(q(this,Si)[Si],3e3))}n(sw,"_addListeners2");function ow(i,e){e===void 0&&(e={});let{forceAllowNewUpload:t=!1}=e,{allowNewUpload:r,currentUploads:s}=this.getState();if(!r&&!t)throw new Error("Cannot create a new upload: already uploading.");let o=Pt();return this.emit("upload",{id:o,fileIDs:i}),this.setState({allowNewUpload:this.opts.allowMultipleUploadBatches!==!1&&this.opts.allowMultipleUploads!==!1,currentUploads:{...s,[o]:{fileIDs:i,step:0,result:{}}}}),o}n(ow,"_createUpload2");function nw(i){let{currentUploads:e}=this.getState();return e[i]}n(nw,"_getUpload2");function aw(i){let e={...this.getState().currentUploads};delete e[i],this.setState({currentUploads:e})}n(aw,"_removeUpload2");async function lw(i){let e=n(()=>{let{currentUploads:o}=this.getState();return o[i]},"getCurrentUpload"),t=e(),r=[...q(this,vs)[vs],...q(this,bs)[bs],...q(this,gr)[gr]];try{for(let o=t.step||0;o{let p=this.getFile(h);p&&p.progress.postprocess&&this.emit("postprocess-complete",p)});let o=t.fileIDs.map(h=>this.getFile(h)),a=o.filter(h=>!h.error),l=o.filter(h=>h.error);await this.addResultData(i,{successful:a,failed:l,uploadID:i}),t=e()}let s;return t&&(s=t.result,this.emit("complete",s),q(this,ws)[ws](i)),s==null&&this.log(`Not setting result for an upload that has been removed: ${i}`),s}n(lw,"_runUpload2");Sn.VERSION=Y1.version;var Ah=Sn;var Fn,ee,nm,uw,_n,tm,hw,Ll={},am=[],dw=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function yr(i,e){for(var t in e)i[t]=e[t];return i}n(yr,"s");function lm(i){var e=i.parentNode;e&&e.removeChild(i)}n(lm,"a");function u(i,e,t){var r,s,o,a={};for(o in e)o=="key"?r=e[o]:o=="ref"?s=e[o]:a[o]=e[o];if(arguments.length>2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),typeof i=="function"&&i.defaultProps!=null)for(o in i.defaultProps)a[o]===void 0&&(a[o]=i.defaultProps[o]);return xn(i,a,r,s,null)}n(u,"h");function xn(i,e,t,r,s){var o={type:i,props:e,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:s??++nm};return s==null&&ee.vnode!=null&&ee.vnode(o),o}n(xn,"v");function um(){return{current:null}}n(um,"y");function Ht(i){return i.children}n(Ht,"p");function we(i,e){this.props=i,this.context=e}n(we,"d");function Eo(i,e){if(e==null)return i.__?Eo(i.__,i.__.__k.indexOf(i)+1):null;for(var t;e0?xn(b.type,b.props,b.key,null,b.__v):b)!=null){if(b.__=t,b.__b=t.__b+1,(y=F[d])===null||y&&b.key==y.key&&b.type===y.type)F[d]=void 0;else for(f=0;f2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),xn(i.type,a,r||i.key,s||i.ref,null)}n(jl,"q");Fn=am.slice,ee={__e:function(i,e,t,r){for(var s,o,a;e=e.__;)if((s=e.__c)&&!s.__)try{if((o=s.constructor)&&o.getDerivedStateFromError!=null&&(s.setState(o.getDerivedStateFromError(i)),a=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(i,r||{}),a=s.__d),a)return s.__E=s}catch(l){i=l}throw i}},nm=0,uw=n(function(i){return i!=null&&i.constructor===void 0},"i"),we.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=yr({},this.state),typeof i=="function"&&(i=i(yr({},t),this.props)),i&&yr(t,i),i!=null&&this.__v&&(e&&this.__h.push(e),im(this))},we.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),im(this))},we.prototype.render=Ht,_n=[],Bl.__r=0,hw=0;function En(i){return typeof i!="object"||i===null||!("nodeType"in i)?!1:i.nodeType===Node.ELEMENT_NODE}n(En,"isDOMElement");function On(i,e){return e===void 0&&(e=document),typeof i=="string"?e.querySelector(i):En(i)?i:null}n(On,"findDOMElement");function mw(i){for(var e;i&&!i.dir;)i=i.parentNode;return(e=i)==null?void 0:e.dir}n(mw,"getTextDirection");var Hl=mw;var ve=class{constructor(e,t){t===void 0&&(t={}),this.uppy=e,this.opts=t}getPluginState(){let{plugins:e}=this.uppy.getState();return e[this.id]||{}}setPluginState(e){let{plugins:t}=this.uppy.getState();this.uppy.setState({plugins:{...t,[this.id]:{...t[this.id],...e}}})}setOptions(e){this.opts={...this.opts,...e},this.setPluginState(),this.i18nInit()}i18nInit(){let e=new Xr([this.defaultLocale,this.uppy.locale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.setPluginState()}addTarget(){throw new Error("Extend the addTarget method to add your plugin to another plugin's target")}install(){}uninstall(){}render(){throw new Error("Extend the render method to add your plugin to a DOM element")}update(){}afterUpdate(){}};n(ve,"BasePlugin");function ym(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ym,"_classPrivateFieldLooseBase");var gw=0;function yw(i){return"__private_"+gw+++"_"+i}n(yw,"_classPrivateFieldLooseKey");function vw(i){let e=null,t=null;return function(){for(var r=arguments.length,s=new Array(r),o=0;o(e=null,i(...t)))),e}}n(vw,"debounce");var Cn=yw("updateUI"),Oo=class extends ve{constructor(){super(...arguments),Object.defineProperty(this,Cn,{writable:!0,value:void 0})}getTargetPlugin(e){let t;if(typeof e=="object"&&e instanceof Oo)t=e;else if(typeof e=="function"){let r=e;this.uppy.iteratePlugins(s=>{s instanceof r&&(t=s)})}return t}mount(e,t){let r=t.id,s=On(e);if(s){this.isTargetDOMEl=!0;let l=document.createElement("div");return l.classList.add("uppy-Root"),ym(this,Cn)[Cn]=vw(h=>{this.uppy.getPlugin(this.id)&&(Uh(this.render(h),l),this.afterUpdate())}),this.uppy.log(`Installing ${r} to a DOM element '${e}'`),this.opts.replaceTargetContent&&(s.innerHTML=""),Uh(this.render(this.uppy.getState()),l),this.el=l,s.appendChild(l),l.dir=this.opts.direction||Hl(l)||"ltr",this.onMount(),this.el}let o=this.getTargetPlugin(e);if(o)return this.uppy.log(`Installing ${r} to ${o.id}`),this.parent=o,this.el=o.addTarget(t),this.onMount(),this.el;this.uppy.log(`Not installing ${r}`);let a=`Invalid target option given to ${r}.`;throw typeof e=="function"?a+=" The given target is not a Plugin class. Please check that you're not specifying a React Component instead of a plugin. If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.":a+="If you meant to target an HTML element, please make sure that the element exists. Check that the diff --git a/app/code/Magento/Catalog/view/adminhtml/web/css/styles.css b/app/code/Magento/Catalog/view/adminhtml/web/css/styles.css deleted file mode 100644 index 03e40f0c07298..0000000000000 --- a/app/code/Magento/Catalog/view/adminhtml/web/css/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -.no-active-category { - color: #aaa !important; -} diff --git a/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less b/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less index 0bd7264a23835..f60b454697a9e 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less +++ b/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less @@ -121,3 +121,13 @@ } } } + +// +// Catalog Category Tree +// --------------------------------------------- + +.jstree-children { + .not-active-category { + color: #aaaaaa; + } +} diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Category/TreeBlockTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Category/TreeBlockTest.php index 06796e5fffbcb..e0bf3f1c1d483 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Category/TreeBlockTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Category/TreeBlockTest.php @@ -49,6 +49,6 @@ public function testDisabledCategoriesHtml() $this->assertCount(1, $categoryTreeArray); $this->assertArrayHasKey('a_attr', $categoryTreeArray[0]); $this->assertArrayHasKey('class', $categoryTreeArray[0]['a_attr']); - $this->assertStringContainsString('no-active-category', $categoryTreeArray[0]['a_attr']['class']); + $this->assertStringContainsString('not-active-category', $categoryTreeArray[0]['a_attr']['class']); } } From 88d2f94dde36e2aacca67f3cf9e467648c9f1942 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar Date: Mon, 21 Oct 2024 21:41:05 +0530 Subject: [PATCH 348/460] AC-9755:Fix unit tests --- .../Theme/Model/Indexer/Design/IndexerHandler.php | 8 ++++---- .../Test/Unit/Model/Indexer/Design/ConfigTest.php | 12 +++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php index 205e362f75d80..4d9940c7453d6 100644 --- a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php +++ b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php @@ -27,9 +27,9 @@ class IndexerHandler extends Grid private $flatScopeResolver; /*** - * Old Charset for flat table + * check for old collation */ - private const OLDCHARSET = 'utf8|utf8mb3'; + private const OLDCOLLATION = 'utf8_general_ci|utf8mb3_general_ci'; /*** * table design_config_grid_flat @@ -88,8 +88,8 @@ public function cleanIndex($dimensions) $this->connection->delete($tableName); // change the charset to utf8mb4 if ($tableName === self::DESIGN_CONFIG_GRID_FLAT) { - $getTableSchema = $this->connection->getCreateTable($tableName) ?? ''; - if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { + $getTableSchema = $this->connection->showTableStatus($tableName) ?? ''; + if (isset($getTableSchema['Collation']) && preg_match('/\b('. SELF::OLDCOLLATION .')\b/', $getTableSchema['Collation'])) { $charset = $this->columnConfig->getDefaultCharset(); $collate = $this->columnConfig->getDefaultCollation(); $columnEncoding = " CHARACTER SET ".$charset." COLLATE ".$collate; diff --git a/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php b/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php index 753a05eda21bb..14f3812c9ff26 100644 --- a/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php +++ b/app/code/Magento/Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php @@ -22,6 +22,7 @@ use Magento\Framework\Indexer\ScopeResolver\FlatScopeResolver; use Magento\Framework\Indexer\ScopeResolver\IndexScopeResolver; use Magento\Framework\Indexer\StructureFactory; +use Magento\Framework\Setup\Declaration\Schema\Dto\Factories\Table as DtoFactoriesTable; use Magento\Theme\Model\Data\Design\Config as DesignConfig; use Magento\Theme\Model\Indexer\Design\Config; use Magento\Theme\Model\ResourceModel\Design\Config\Scope\CollectionFactory; @@ -91,6 +92,10 @@ class ConfigTest extends TestCase * @var CollectionFactory|MockObject */ private $collectionFactory; + /*** + * @var DtoFactoriesTable|MockObject + */ + private $dtoFactoriesTable; protected function setUp(): void { @@ -132,6 +137,9 @@ protected function setUp(): void ->getMock(); $this->indexerFieldset = $this->getMockBuilder(FieldsetInterface::class) ->getMockForAbstractClass(); + $this->dtoFactoriesTable = $this->getMockBuilder(DtoFactoriesTable::class) + ->disableOriginalConstructor() + ->getMock(); } /** @@ -171,7 +179,9 @@ private function getDesignConfigIndexerModel(): Config [ 'fieldsets' => [], 'indexer_id' => DesignConfig::DESIGN_CONFIG_GRID_INDEXER_ID - ] + ], + [], + $this->dtoFactoriesTable ); $this->saveHandlerFactory->expects($this->any()) From ef72911db0407d45b90395ea59b4f1cd8bca99e9 Mon Sep 17 00:00:00 2001 From: engcom-Dash Date: Mon, 21 Oct 2024 22:10:20 +0530 Subject: [PATCH 349/460] 36394: Fix integration tests --- .../Catalog/Controller/Adminhtml/CategoryTest.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php index a3c9eeb3226a6..a796ac5892b60 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php @@ -178,7 +178,7 @@ public function testDefaultValueForCategoryUrlPath(): void MessageInterface::TYPE_SUCCESS ); $category = $this->categoryRepository->get($categoryId); - $this->assertEquals($defaultUrlPath, $category->getData('url_key')); + $this->assertEquals($newUrlPath, $category->getData('url_key')); } /** @@ -783,10 +783,14 @@ public function testSaveDesign(): void $category->load(2); $this->assertEquals('2columns-left', $category->getData('page_layout')); $this->assertEmpty($category->getData('custom_layout_update_file')); - $this->assertEquals('test', $category->getData('description')); + $this->assertEquals('Custom Description', $category->getData('description')); //No new error messages + $sessionErrorMessages = [ + 'Not allowed to edit the category\'s design attributes', + 'Not allowed to edit the category\'s design attributes' + ]; $this->assertSessionMessages( - self::equalTo($sessionMessages), + self::equalTo($sessionErrorMessages), MessageInterface::TYPE_ERROR ); } From 032246add807b23d5014fe4d3b2ee3e588e3bf70 Mon Sep 17 00:00:00 2001 From: lakshmana49 Date: Tue, 22 Oct 2024 00:03:52 +0530 Subject: [PATCH 350/460] ACP2E-3350: Disabled Categories are no longer have their names grayed out in the category tree --- .../backend/Magento_Catalog/web/css/source/_module.less | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less b/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less index f60b454697a9e..96a30e32f877a 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less +++ b/app/design/adminhtml/Magento/backend/Magento_Catalog/web/css/source/_module.less @@ -3,6 +3,8 @@ // * See COPYING.txt for license details. // */ +@color-grey: #aaa; + // // Catalog product grid // --------------------------------------------- @@ -71,7 +73,7 @@ .catalog-category-edit, .catalog-category-add { - // TODO: refactor trees + //TODO refactor trees .x-tree.tree-wrapper { overflow-x: auto; } @@ -128,6 +130,6 @@ .jstree-children { .not-active-category { - color: #aaaaaa; + color: @color-grey; } } From af6e8c66ac12efa0b47c482afbeba1b10c54771e Mon Sep 17 00:00:00 2001 From: lakshmana49 Date: Tue, 22 Oct 2024 01:10:00 +0530 Subject: [PATCH 351/460] ACP2E-3350: Disabled Categories are no longer have their names grayed out in the category tree --- app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php | 4 ++-- .../backend/Magento_Catalog/web/css/source/_module.less | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php index c768783927371..fa5943f0e773c 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php @@ -1,7 +1,7 @@ Date: Tue, 22 Oct 2024 08:41:19 +0530 Subject: [PATCH 352/460] AC-9755:Fix Static Tests --- app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php index 4d9940c7453d6..cc5c154b43464 100644 --- a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php +++ b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php @@ -89,7 +89,8 @@ public function cleanIndex($dimensions) // change the charset to utf8mb4 if ($tableName === self::DESIGN_CONFIG_GRID_FLAT) { $getTableSchema = $this->connection->showTableStatus($tableName) ?? ''; - if (isset($getTableSchema['Collation']) && preg_match('/\b('. SELF::OLDCOLLATION .')\b/', $getTableSchema['Collation'])) { + if (isset($getTableSchema['Collation']) && + preg_match('/\b('. self::OLDCOLLATION .')\b/', $getTableSchema['Collation'])) { $charset = $this->columnConfig->getDefaultCharset(); $collate = $this->columnConfig->getDefaultCollation(); $columnEncoding = " CHARACTER SET ".$charset." COLLATE ".$collate; From dfd4ac3636c41fa4f61845151aa7d3a812e8bc5c Mon Sep 17 00:00:00 2001 From: engcom-Dash Date: Tue, 22 Oct 2024 12:50:15 +0530 Subject: [PATCH 353/460] 36394: Fix integration and static failures --- .../Adminhtml/Category/Save/UpdateCategoryTest.php | 3 +-- .../Catalog/Controller/Adminhtml/CategoryTest.php | 9 ++------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Save/UpdateCategoryTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Save/UpdateCategoryTest.php index 3cecc5f1a76c8..8d59193eba066 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Save/UpdateCategoryTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Save/UpdateCategoryTest.php @@ -48,10 +48,9 @@ protected function setUp(): void public function testUpdateCategoryForDefaultStoreView(array $postData): void { $storeId = (int)$this->storeManager->getStore('default')->getId(); - $postData = array_merge($postData, ['store_id' => $storeId]); $responseData = $this->performSaveCategoryRequest($postData); $this->assertRequestIsSuccessfullyPerformed($responseData); - $category = $this->categoryRepository->get($postData['entity_id'], $postData['store_id']); + $category = $this->categoryRepository->get($postData['entity_id'], $storeId); unset($postData['use_default']); unset($postData['use_config']); foreach ($postData as $key => $value) { diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php index a796ac5892b60..7fc0feb6a68cc 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/CategoryTest.php @@ -153,7 +153,6 @@ public function testDefaultValueForCategoryUrlPath(): void $categoryId = 3; $category = $this->categoryRepository->get($categoryId); $newUrlPath = 'test_url_path'; - $defaultUrlPath = $category->getData('url_path'); // update url_path and check it $category->setStoreId(1); @@ -783,14 +782,10 @@ public function testSaveDesign(): void $category->load(2); $this->assertEquals('2columns-left', $category->getData('page_layout')); $this->assertEmpty($category->getData('custom_layout_update_file')); - $this->assertEquals('Custom Description', $category->getData('description')); + $this->assertEquals('test', $category->getData('description')); //No new error messages - $sessionErrorMessages = [ - 'Not allowed to edit the category\'s design attributes', - 'Not allowed to edit the category\'s design attributes' - ]; $this->assertSessionMessages( - self::equalTo($sessionErrorMessages), + self::equalTo($sessionMessages), MessageInterface::TYPE_ERROR ); } From 4babde6f21d59fcc9b1b247982847c15d1eaa19b Mon Sep 17 00:00:00 2001 From: Saurabh Kumar Date: Tue, 22 Oct 2024 13:37:26 +0530 Subject: [PATCH 354/460] AC-9755: fix static tests --- .../Magento/Theme/Model/Indexer/Design/IndexerHandler.php | 4 ++-- .../Theme/Test/Unit/Model/Indexer/Design/ConfigTest.php | 4 ++-- .../declarative_installer/table_removal.mariadb10611.php | 4 ++-- .../fixture/declarative_installer/table_removal.mysql829.php | 4 ++-- .../declarative_installer/table_rename.mariadb10611.php | 4 ++-- .../fixture/declarative_installer/table_rename.mysql829.php | 4 ++-- .../fixture/shards.mariadb10611.php | 4 ++-- .../declarative_installer/disabling_tables.mariadb10611.php | 4 ++-- .../declarative_installer/disabling_tables.mysql829.php | 4 ++-- lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php | 4 ++-- lib/internal/Magento/Framework/Mview/View/Changelog.php | 4 ++-- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php | 4 ++-- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 4 ++-- .../Setup/Declaration/Schema/Dto/Columns/StringBinary.php | 4 ++-- .../Framework/Setup/Declaration/Schema/Dto/Columns/Text.php | 4 ++-- .../Setup/Declaration/Schema/Dto/Factories/Table.php | 4 ++-- .../Schema/Db/MySQL/Definition/Columns/StringBinaryTest.php | 4 ++-- setup/src/Magento/Setup/Model/Installer.php | 4 ++-- 18 files changed, 36 insertions(+), 36 deletions(-) diff --git a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php index cc5c154b43464..5a8bf69314e2b 100644 --- a/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php +++ b/app/code/Magento/Theme/Model/Indexer/Design/IndexerHandler.php @@ -1,7 +1,7 @@ Date: Tue, 22 Oct 2024 14:28:54 +0530 Subject: [PATCH 355/460] AC-9755:Fix Static Tests --- .../TestSetupDeclarationModule2/fixture/shards.mysql829.php | 4 ++-- lib/internal/Magento/Framework/DB/Ddl/Table.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php index 141251067def6..c40e0f45e68ea 100644 --- a/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php +++ b/dev/tests/setup-integration/_files/Magento/TestSetupDeclarationModule2/fixture/shards.mysql829.php @@ -1,7 +1,7 @@ Date: Tue, 22 Oct 2024 18:04:01 +0530 Subject: [PATCH 356/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index b38dcba75dac8..e199c9f02d6e0 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o Date: Tue, 22 Oct 2024 18:09:34 +0530 Subject: [PATCH 357/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index e199c9f02d6e0..6c1c30e8a5c6f 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o Date: Tue, 22 Oct 2024 16:53:39 +0300 Subject: [PATCH 358/460] ACP2E-3362: search_query table when of huge size, has large impact on load time frontend --- .../Search/Model/ResourceModel/Query/Collection.php | 1 - app/code/Magento/Search/etc/db_schema.xml | 8 +++++++- app/code/Magento/Search/etc/db_schema_whitelist.json | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php b/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php index 01a05c62ac3ce..a46134c4d781a 100644 --- a/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php +++ b/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php @@ -171,7 +171,6 @@ public function isTopSearchResult(string $term, int $storeId, int $maxCountCache $select = $this->getSelect(); $select->reset(\Magento\Framework\DB\Select::FROM); $select->reset(\Magento\Framework\DB\Select::COLUMNS); - $select->distinct(true); $select->from(['main_table' => $this->getTable('search_query')], ['query_text']); $select->where('main_table.store_id IN (?)', $storeId); $select->where('main_table.num_results > 0'); diff --git a/app/code/Magento/Search/etc/db_schema.xml b/app/code/Magento/Search/etc/db_schema.xml index 2502f084ac24e..1aae3cf4b5a48 100644 --- a/app/code/Magento/Search/etc/db_schema.xml +++ b/app/code/Magento/Search/etc/db_schema.xml @@ -35,7 +35,7 @@ - + @@ -48,6 +48,12 @@ + + + + + + diff --git a/app/code/Magento/Search/etc/db_schema_whitelist.json b/app/code/Magento/Search/etc/db_schema_whitelist.json index dbe5beb975831..866aa43eedf0d 100644 --- a/app/code/Magento/Search/etc/db_schema_whitelist.json +++ b/app/code/Magento/Search/etc/db_schema_whitelist.json @@ -14,9 +14,10 @@ "updated_at": true }, "index": { - "SEARCH_QUERY_QUERY_TEXT_STORE_ID_POPULARITY": true, + "SEARCH_QUERY_QUERY_TEXT_STORE_ID_NUM_RESULTS_POPULARITY": true, "SEARCH_QUERY_IS_PROCESSED": true, "SEARCH_QUERY_SYNONYM_FOR": true, + "SEARCH_QUERY_QUERY_TEXT_STORE_ID_POPULARITY": false, "SEARCH_QUERY_STORE_ID_NUM_RESULTS_POPULARITY": true, "SEARCH_QUERY_STORE_ID": false, "SEARCH_QUERY_STORE_ID_POPULARITY": false From ae8f61831a3e4f35a8b33a93c7a9f578af041f74 Mon Sep 17 00:00:00 2001 From: "Chhandak.Barua" Date: Tue, 22 Oct 2024 23:36:12 +0530 Subject: [PATCH 359/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index 6c1c30e8a5c6f..e199c9f02d6e0 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o Date: Tue, 22 Oct 2024 23:36:36 +0530 Subject: [PATCH 360/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index e199c9f02d6e0..6c1c30e8a5c6f 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o Date: Tue, 22 Oct 2024 14:58:20 -0500 Subject: [PATCH 361/460] ACP2E-3312: Tier Prices return wrong value in products GraphQL (compared to Storefront) --- .../CatalogCustomerGraphQl/Model/Resolver/PriceTiers.php | 4 ++-- .../testsuite/Magento/GraphQl/Catalog/ProductPriceTest.php | 4 ++-- .../Magento/GraphQl/CatalogCustomer/PriceTiersTest.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/CatalogCustomerGraphQl/Model/Resolver/PriceTiers.php b/app/code/Magento/CatalogCustomerGraphQl/Model/Resolver/PriceTiers.php index b2dcece27d870..8552cf22b3265 100644 --- a/app/code/Magento/CatalogCustomerGraphQl/Model/Resolver/PriceTiers.php +++ b/app/code/Magento/CatalogCustomerGraphQl/Model/Resolver/PriceTiers.php @@ -1,7 +1,7 @@ Date: Tue, 22 Oct 2024 15:13:49 -0500 Subject: [PATCH 362/460] ACP2E-3343: Critical 500 Error: Magento\Framework\Webapi\Exception Related to Accept HTTP Header --- app/code/Magento/Quote/Model/QuoteValidator.php | 4 ++-- app/code/Magento/Quote/etc/webapi_rest/di.xml | 4 ++-- .../testsuite/Magento/Framework/App/FrontControllerTest.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Quote/Model/QuoteValidator.php b/app/code/Magento/Quote/Model/QuoteValidator.php index d4ec70adc006f..afc1ecb0c6787 100644 --- a/app/code/Magento/Quote/Model/QuoteValidator.php +++ b/app/code/Magento/Quote/Model/QuoteValidator.php @@ -1,7 +1,7 @@ diff --git a/dev/tests/integration/testsuite/Magento/Framework/App/FrontControllerTest.php b/dev/tests/integration/testsuite/Magento/Framework/App/FrontControllerTest.php index 5a15f49000f3e..7ab2c8e25e125 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/App/FrontControllerTest.php +++ b/dev/tests/integration/testsuite/Magento/Framework/App/FrontControllerTest.php @@ -1,7 +1,7 @@ Date: Tue, 22 Oct 2024 15:16:03 -0500 Subject: [PATCH 363/460] ACP2E-3345: Type Error occurred when creating object: Magento\CatalogSearch\Model\Indexer\Fulltext\Interceptor Exception --- app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php index 650f22d5012cf..0507a3110dd8d 100644 --- a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php +++ b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php @@ -1,7 +1,7 @@ Date: Wed, 23 Oct 2024 10:56:04 +0530 Subject: [PATCH 364/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index 6c1c30e8a5c6f..e199c9f02d6e0 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o Date: Wed, 23 Oct 2024 10:56:48 +0530 Subject: [PATCH 365/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index e199c9f02d6e0..6c1c30e8a5c6f 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o Date: Wed, 23 Oct 2024 11:26:21 +0530 Subject: [PATCH 366/460] ACQE-7005:Several Terms and Conditions with different types are presented on Payflow Link review page Updated code --- ...hDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml index 4e6b1ca7b69c8..4f4578797233b 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml @@ -75,8 +75,8 @@ - - + + \ No newline at end of file From 6ed93bab8a80a4c2074020fb130d121b6168e6c7 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana Date: Wed, 23 Oct 2024 09:17:47 +0300 Subject: [PATCH 367/460] ACP2E-3362: search_query table when of huge size, has large impact on load time frontend --- .../Magento/Search/Model/ResourceModel/Query/Collection.php | 4 ++-- app/code/Magento/Search/etc/db_schema.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php b/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php index a46134c4d781a..230570f3765ea 100644 --- a/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php +++ b/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php @@ -1,7 +1,7 @@ Date: Wed, 23 Oct 2024 09:32:38 +0300 Subject: [PATCH 368/460] ACP2E-3377: Cart rules "Fixed amount discount for whole cart" action applies discounts incorrectly when adding bundle products --- app/code/Magento/SalesRule/Model/Quote/Discount.php | 4 ++-- .../Magento/SalesRule/Test/Unit/Model/Quote/DiscountTest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/SalesRule/Model/Quote/Discount.php b/app/code/Magento/SalesRule/Model/Quote/Discount.php index b5a349502ed9a..ef4bb3edba607 100644 --- a/app/code/Magento/SalesRule/Model/Quote/Discount.php +++ b/app/code/Magento/SalesRule/Model/Quote/Discount.php @@ -1,7 +1,7 @@ Date: Wed, 23 Oct 2024 09:38:41 +0300 Subject: [PATCH 369/460] ACP2E-3377: Cart rules "Fixed amount discount for whole cart" action applies discounts incorrectly when adding bundle products --- app/code/Magento/SalesRule/Model/Quote/Discount.php | 2 +- .../Magento/SalesRule/Test/Unit/Model/Quote/DiscountTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/SalesRule/Model/Quote/Discount.php b/app/code/Magento/SalesRule/Model/Quote/Discount.php index ef4bb3edba607..1b790bf4bfc60 100644 --- a/app/code/Magento/SalesRule/Model/Quote/Discount.php +++ b/app/code/Magento/SalesRule/Model/Quote/Discount.php @@ -1,6 +1,6 @@ Date: Wed, 23 Oct 2024 09:42:53 +0300 Subject: [PATCH 370/460] ACP2E-3362: search_query table when of huge size, has large impact on load time frontend --- .../Magento/Search/Model/ResourceModel/Query/Collection.php | 2 +- app/code/Magento/Search/etc/db_schema.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php b/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php index 230570f3765ea..824af43034adb 100644 --- a/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php +++ b/app/code/Magento/Search/Model/ResourceModel/Query/Collection.php @@ -1,6 +1,6 @@ From 4392e3b6e6f1ace7fb76a1d352985747b27c2202 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana Date: Wed, 23 Oct 2024 09:53:04 +0300 Subject: [PATCH 371/460] ACP2E-3198: [cloud] Two-finger zoom and move issue on the real mobile device --- lib/web/magnifier/magnify.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/web/magnifier/magnify.js b/lib/web/magnifier/magnify.js index 9b6bc557dad47..f7f62e44ea4a6 100644 --- a/lib/web/magnifier/magnify.js +++ b/lib/web/magnifier/magnify.js @@ -1,6 +1,9 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. +/************************* + * + * Copyright 2015 Adobe + * All Rights Reserved. + * + * *********************** */ define([ 'jquery', From 936be8c1ad32a08980e9eda897a9685d1f372357 Mon Sep 17 00:00:00 2001 From: engcom-Dash Date: Wed, 23 Oct 2024 12:25:41 +0530 Subject: [PATCH 372/460] 36394: Fix static failures realted to copyright tag --- app/code/Magento/Catalog/Model/CategoryRepository.php | 5 ++--- app/code/Magento/Catalog/Model/ResourceModel/Category.php | 4 ++-- .../Adminhtml/Category/Save/UpdateCategoryTest.php | 4 ++-- .../Magento/Catalog/Controller/Adminhtml/CategoryTest.php | 4 ++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/Catalog/Model/CategoryRepository.php b/app/code/Magento/Catalog/Model/CategoryRepository.php index e99be7aaa4d26..c9b8c2027408b 100644 --- a/app/code/Magento/Catalog/Model/CategoryRepository.php +++ b/app/code/Magento/Catalog/Model/CategoryRepository.php @@ -1,8 +1,7 @@ Date: Wed, 23 Oct 2024 12:32:05 +0530 Subject: [PATCH 373/460] ACQE-7118 | Mainline Deployment Added pr_exclude --- .../AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index bb4ba064445b4..d1b0b51b422ed 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -17,6 +17,7 @@ + From 80c3f287b85609ea0826734cb98080f6e98fb90e Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 23 Oct 2024 12:32:56 +0530 Subject: [PATCH 374/460] ACQE-7118 | Mainline Deployment added pr_exclude --- .../Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml index 50f3116582778..4cfa59c5d81b8 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml @@ -16,6 +16,7 @@ + From 8c237d570fe39e66b514f6efea2433faf3bf91d2 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 23 Oct 2024 12:35:30 +0530 Subject: [PATCH 375/460] ACQE-7118 | Mainline Deployment Removed extra space --- .../Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml index 17ad08c15ebf9..2f022d5a7a0af 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml @@ -11,7 +11,6 @@ On Storefront Login To PayPal Express Checkout Payflow Edition . - From 6b743fe6c73c2526f6da0da80933faabc65e1d21 Mon Sep 17 00:00:00 2001 From: engcom-Dash Date: Wed, 23 Oct 2024 12:43:14 +0530 Subject: [PATCH 376/460] 39241: Fix static failure related to copyright tag --- app/code/Magento/Directory/Model/AllowedCountries.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Directory/Model/AllowedCountries.php b/app/code/Magento/Directory/Model/AllowedCountries.php index ea162988b8d3c..5cb6762048cbb 100644 --- a/app/code/Magento/Directory/Model/AllowedCountries.php +++ b/app/code/Magento/Directory/Model/AllowedCountries.php @@ -1,7 +1,7 @@ Date: Wed, 23 Oct 2024 10:37:30 +0300 Subject: [PATCH 377/460] ACP2E-3361: Some of the relations records are saved to DB when order record is saved --- .../ResourceModel/Db/VersionControl/AddressSnapshotTest.php | 4 ++-- .../Model/Observer/SaveDownloadableOrderItemObserverTest.php | 4 ++-- .../Model/ResourceModel/Db/VersionControl/Snapshot.php | 4 ++-- .../Unit/ResourceModel/Db/VersionControl/SnapshotTest.php | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/Customer/Test/Unit/Model/ResourceModel/Db/VersionControl/AddressSnapshotTest.php b/app/code/Magento/Customer/Test/Unit/Model/ResourceModel/Db/VersionControl/AddressSnapshotTest.php index 133714f457767..8286370a8e525 100644 --- a/app/code/Magento/Customer/Test/Unit/Model/ResourceModel/Db/VersionControl/AddressSnapshotTest.php +++ b/app/code/Magento/Customer/Test/Unit/Model/ResourceModel/Db/VersionControl/AddressSnapshotTest.php @@ -1,7 +1,7 @@ Date: Wed, 23 Oct 2024 13:08:02 +0530 Subject: [PATCH 378/460] 39241: update copyright year --- app/code/Magento/Directory/Model/AllowedCountries.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Directory/Model/AllowedCountries.php b/app/code/Magento/Directory/Model/AllowedCountries.php index 5cb6762048cbb..dfac85e3f97b7 100644 --- a/app/code/Magento/Directory/Model/AllowedCountries.php +++ b/app/code/Magento/Directory/Model/AllowedCountries.php @@ -1,6 +1,6 @@ Date: Wed, 23 Oct 2024 14:19:03 +0530 Subject: [PATCH 379/460] ACQE-5754 | [AC-6147]Registered Checkout Using PayPal Express Checkout Method and Flat Rate (Payment Action = Sale) --- .../PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml index 92e54740e6b2f..98e7600b78245 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalExpressCheckoutConfigSection/PayPalPaymentSection.xml @@ -30,7 +30,7 @@ - + From af46b6e072686450fb8629e3efaf8289b16908cf Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 23 Oct 2024 14:19:57 +0530 Subject: [PATCH 380/460] ACQE-5754 | [AC-6147]Registered Checkout Using PayPal Express Checkout Method and Flat Rate (Payment Action = Sale) --- ...nRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 63da698dba00d..351e81792d1aa 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -17,7 +17,6 @@ - From cc228722db71fae65c0e57179b24c88aaefcc490 Mon Sep 17 00:00:00 2001 From: Shanthi Rajendran Date: Wed, 23 Oct 2024 14:26:13 +0530 Subject: [PATCH 381/460] ACQE-7005:Several Terms and Conditions with different types are presented on Payflow Link review page Updated code --- ...ermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml | 4 ++-- ...hDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml index c3be2df2f63f9..a00a94d63e7dd 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml @@ -23,7 +23,7 @@ - + @@ -80,4 +80,4 @@ - + \ No newline at end of file diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml index 4f4578797233b..b79060485a0cb 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml @@ -73,7 +73,6 @@ - From bd59bb7520f4a0f596e28dfc825d481d0d0a821e Mon Sep 17 00:00:00 2001 From: "Chhandak.Barua" Date: Wed, 23 Oct 2024 16:26:16 +0530 Subject: [PATCH 382/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index 6c1c30e8a5c6f..b38dcba75dac8 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(//g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||HF?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K>>0;H>>0;H>>0;H>>0;H"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="test";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["","
    ",1],TBODY:["","
    ",2],TR:["","
    ",3],TD:["
    ","
    ",4],SELECT:["",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o Date: Wed, 23 Oct 2024 15:20:14 +0300 Subject: [PATCH 383/460] ACP2E-3362: search_query table when of huge size, has large impact on load time frontend --- .../ResourceModel/Query/CollectionTest.php | 121 ++++++++++++++++++ .../ResourceModel/Query/CollectionTest.php | 21 +-- 2 files changed, 133 insertions(+), 9 deletions(-) create mode 100644 app/code/Magento/Search/Test/Unit/Model/ResourceModel/Query/CollectionTest.php diff --git a/app/code/Magento/Search/Test/Unit/Model/ResourceModel/Query/CollectionTest.php b/app/code/Magento/Search/Test/Unit/Model/ResourceModel/Query/CollectionTest.php new file mode 100644 index 0000000000000..7c308ba4eebf3 --- /dev/null +++ b/app/code/Magento/Search/Test/Unit/Model/ResourceModel/Query/CollectionTest.php @@ -0,0 +1,121 @@ +_storeManager = $this->createMock(StoreManagerInterface::class); + $this->_resourceHelper = $this->createMock(Helper::class); + $this->entityFactory = $this->createMock(EntityFactoryInterface::class); + $this->logger = $this->createMock(LoggerInterface::class); + $this->fetchStrategy = $this->createMock(FetchStrategyInterface::class); + $this->eventManager = $this->createMock(ManagerInterface::class); + $this->connection = $this->createMock(AdapterInterface::class); + $this->resource = $this->createMock(AbstractDb::class); + } + + /** + * @return void + */ + public function testIsTopSearchResult(): void + { + $term = 'test'; + $storeId = 1; + $maxCountCacheableSearchTerms = 10; + + $this->resource->expects($this->once())->method('getConnection')->willReturn($this->connection); + $select = $this->getMockBuilder(Select::class) + ->disableOriginalConstructor() + ->getMock(); + $select->expects($this->exactly(7))->method('reset')->willReturnSelf(); + $select->expects($this->exactly(3))->method('from')->willReturnSelf(); + $select->expects($this->exactly(3))->method('where')->willReturnSelf(); + $select->expects($this->once())->method('order')->with(['main_table.popularity desc'])->willReturnSelf(); + $select->expects($this->once())->method('limit')->with($maxCountCacheableSearchTerms)->willReturnSelf(); + $select->expects($this->once())->method('assemble')->willReturn( + "SELECT COUNT(*) FROM (SELECT DISTINCT `main_table`.`query_text` FROM `search_query` AS `main_table`" . + " WHERE (main_table.store_id IN (1)) AND (main_table.num_results > 0) " . + " ORDER BY `main_table`.`popularity` desc LIMIT {$maxCountCacheableSearchTerms}) AS `result` + WHERE (result.query_text = '{$term}')" + ); + $select->expects($this->never())->method('distinct'); + $this->connection->expects($this->any())->method('select')->willReturn($select); + + $collection = new Collection( + $this->entityFactory, + $this->logger, + $this->fetchStrategy, + $this->eventManager, + $this->_storeManager, + $this->_resourceHelper, + $this->connection, + $this->resource + ); + $collection->isTopSearchResult($term, $storeId, $maxCountCacheableSearchTerms); + } +} diff --git a/dev/tests/integration/testsuite/Magento/Search/Model/ResourceModel/Query/CollectionTest.php b/dev/tests/integration/testsuite/Magento/Search/Model/ResourceModel/Query/CollectionTest.php index 4723b07b1538c..dbe252dcbb59f 100644 --- a/dev/tests/integration/testsuite/Magento/Search/Model/ResourceModel/Query/CollectionTest.php +++ b/dev/tests/integration/testsuite/Magento/Search/Model/ResourceModel/Query/CollectionTest.php @@ -1,24 +1,22 @@ queryResource = $objectManager->get(Query::class); } - public function testSearchQueryTableHasProperIndex() + /** + * @return void + */ + public function testSearchQueryTableHasProperIndex(): void { $table = $this->queryResource->getTable('search_query'); - $indexName = 'SEARCH_QUERY_STORE_ID_NUM_RESULTS_POPULARITY'; + $indexQueryStoreNumPopularity = 'SEARCH_QUERY_STORE_ID_NUM_RESULTS_POPULARITY'; + $indexQueryTextStoreNumPopularity = 'SEARCH_QUERY_QUERY_TEXT_STORE_ID_NUM_RESULTS_POPULARITY'; $connection = $this->queryResource->getConnection(); $tableIndexes = $connection->getIndexList($table); - $this->assertArrayHasKey($indexName, $tableIndexes); + $this->assertArrayHasKey($indexQueryStoreNumPopularity, $tableIndexes); + $this->assertArrayHasKey($indexQueryTextStoreNumPopularity, $tableIndexes); } } From 00cfdc8fc3c6fbb799bceed312a09f23d40d6450 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK Date: Wed, 23 Oct 2024 18:25:06 +0530 Subject: [PATCH 384/460] ACQE-7048:AdminEmailTemplateForStoredXSSTest --- .../Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml index 769c2c2a9e17e..ec718d2e33b0b 100644 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml +++ b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml @@ -10,7 +10,7 @@ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - + <description value="Admin creates a email template with stored XSS and it should not appear in template preview"/> From 284471573115bda75531a7a8ec2dc24e257efb40 Mon Sep 17 00:00:00 2001 From: "Chhandak.Barua" <chhandak.barua@BLR1-LMC-N73490.local> Date: Wed, 23 Oct 2024 19:26:34 +0530 Subject: [PATCH 385/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index b38dcba75dac8..a808626aee6b6 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h<o;h++){g.addMethods(l[h])}if(!g.prototype.initialize){g.prototype.initialize=Prototype.emptyFunction}g.prototype.constructor=g;return g}function e(q){var l=this.superclass&&this.superclass.prototype,h=Object.keys(q);if(f){if(q.toString!=Object.prototype.toString){h.push("toString")}if(q.valueOf!=Object.prototype.valueOf){h.push("valueOf")}}for(var g=0,n=h.length;g<n;g++){var p=h[g],o=q[p];if(l&&Object.isFunction(o)&&o.argumentNames()[0]=="$super"){var r=o;o=(function(s){return function(){return l[s].apply(this,arguments)}})(p).wrap(r);o.valueOf=(function(s){return function(){return s.valueOf.call(s)}})(r);o.toString=(function(s){return function(){return s.toString.call(s)}})(r)}this.prototype[p]=o}return this}return{create:d,Methods:{addMethods:e}}})();(function(){var F=Object.prototype.toString,q=Object.prototype.hasOwnProperty,G="Null",I="Undefined",R="Boolean",D="Number",C="String",P="Object",o="[object Function]",f="[object Boolean]",p="[object Number]",h="[object String]",d="[object Array]",O="[object Date]",g=window.JSON&&typeof JSON.stringify==="function"&&JSON.stringify(0)==="0"&&typeof JSON.stringify(Prototype.K)==="undefined";var w=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var b=(function(){for(var S in {toString:1}){if(S==="toString"){return false}}return true})();function K(T){switch(T){case null:return G;case (void 0):return I}var S=typeof T;switch(S){case"boolean":return R;case"number":return D;case"string":return C}return P}function n(S,U){for(var T in U){S[T]=U[T]}return S}function r(S){try{if(u(S)){return"undefined"}if(S===null){return"null"}return S.inspect?S.inspect():String(S)}catch(T){if(T instanceof RangeError){return"..."}throw T}}function H(S){return s("",{"":S},[])}function s(ab,Y,Z){var aa=Y[ab];if(K(aa)===P&&typeof aa.toJSON==="function"){aa=aa.toJSON(ab)}var U=F.call(aa);switch(U){case p:case f:case h:aa=aa.valueOf()}switch(aa){case null:return"null";case true:return"true";case false:return"false"}var X=typeof aa;switch(X){case"string":return aa.inspect(true);case"number":return isFinite(aa)?String(aa):"null";case"object":for(var T=0,S=Z.length;T<S;T++){if(Z[T]===aa){throw new TypeError("Cyclic reference to '"+aa+"' in object")}}Z.push(aa);var W=[];if(U===d){for(var T=0,S=aa.length;T<S;T++){var V=s(T,aa,Z);W.push(typeof V==="undefined"?"null":V)}W="["+W.join(",")+"]"}else{var ac=Object.keys(aa);for(var T=0,S=ac.length;T<S;T++){var ab=ac[T],V=s(ab,aa,Z);if(typeof V!=="undefined"){W.push(ab.inspect(true)+":"+V)}}W="{"+W.join(",")+"}"}Z.pop();return W}}function Q(S){return JSON.stringify(S)}function J(S){return $H(S).toQueryString()}function v(S){return S&&S.toHTML?S.toHTML():String.interpret(S)}function E(S){if(K(S)!==P){throw new TypeError()}var U=[];for(var V in S){if(q.call(S,V)){U.push(V)}}if(b){for(var T=0;V=w[T];T++){if(q.call(S,V)){U.push(V)}}}return U}function N(S){var T=[];for(var U in S){T.push(S[U])}return T}function z(S){return n({},S)}function L(S){return !!(S&&S.nodeType==1)}function B(S){return F.call(S)===d}var e=(typeof Array.isArray=="function")&&Array.isArray([])&&!Array.isArray({});if(e){B=Array.isArray}function y(S){return S instanceof Hash}function t(S){return F.call(S)===o}function l(S){return F.call(S)===h}function M(S){return F.call(S)===p}function A(S){return F.call(S)===O}function u(S){return typeof S==="undefined"}n(Object,{extend:n,inspect:r,toJSON:g?Q:H,toQueryString:J,toHTML:v,keys:Object.keys||E,values:N,clone:z,isElement:L,isArray:B,isHash:y,isFunction:t,isString:l,isNumber:M,isDate:A,isUndefined:u})})();Object.extend(Function.prototype,(function(){var r=Array.prototype.slice;function f(v,s){var u=v.length,t=s.length;while(t--){v[u+t]=s[t]}return v}function p(t,s){t=r.call(t,0);return f(t,s)}function l(){var s=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return s.length==1&&!s[0]?[]:s}function n(u){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this}if(!Object.isFunction(this)){throw new TypeError("The object is not callable.")}var w=function(){};var s=this,t=r.call(arguments,1);var v=function(){var y=p(t,arguments);var z=this instanceof v?this:u;return s.apply(z,y)};w.prototype=this.prototype;v.prototype=new w();return v}function h(u){var s=this,t=r.call(arguments,1);return function(w){var v=f([w||window.event],t);return s.apply(u,v)}}function q(){if(!arguments.length){return this}var s=this,t=r.call(arguments,0);return function(){var u=p(t,arguments);return s.apply(this,u)}}function g(u){var s=this,t=r.call(arguments,1);u=u*1000;return window.setTimeout(function(){return s.apply(s,t)},u)}function b(){var s=f([0.01],arguments);return this.delay.apply(this,s)}function e(t){var s=this;return function(){var u=f([s.bind(this)],arguments);return t.apply(this,u)}}function d(){if(this._methodized){return this._methodized}var s=this;return this._methodized=function(){var t=f([this],arguments);return s.apply(null,t)}}var o={argumentNames:l,bindAsEventListener:h,curry:q,delay:g,defer:b,wrap:e,methodize:d};if(!Function.prototype.bind){o.bind=n}return o})());(function(e){function d(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+"Z"}function b(){return this.toISOString()}if(!e.toISOString){e.toISOString=d}if(!e.toJSON){e.toJSON=b}})(Date.prototype);RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(b){return String(b).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var PeriodicalExecuter=Class.create({initialize:function(d,b){this.callback=d;this.frequency=b;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000)},execute:function(){this.callback(this)},stop:function(){if(!this.timer){return}clearInterval(this.timer);this.timer=null},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();this.currentlyExecuting=false}catch(b){this.currentlyExecuting=false;throw b}}}});Object.extend(String,{interpret:function(b){return b==null?"":String(b)},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,(function(){var NATIVE_JSON_PARSE_SUPPORT=window.JSON&&typeof JSON.parse==="function"&&JSON.parse('{"test": true}').test;function prepareReplacement(replacement){if(Object.isFunction(replacement)){return replacement}var template=new Template(replacement);return function(match){return template.evaluate(match)}}function isNonEmptyRegExp(regexp){return regexp.source&®exp.source!=="(?:)"}function gsub(pattern,replacement){var result="",source=this,match;replacement=prepareReplacement(replacement);if(Object.isString(pattern)){pattern=RegExp.escape(pattern)}if(!(pattern.length||isNonEmptyRegExp(pattern))){replacement=replacement("");return replacement+source.split("").join(replacement)+replacement}while(source.length>0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)<I.length){H.push(I.slice(D,D+G))}return H.collect(F,E)}function d(F,E){F=F||Prototype.K;var D=true;this.each(function(H,G){D=D&&!!F.call(E,H,G,this);if(!D){throw $break}},this);return D}function o(F,E){F=F||Prototype.K;var D=false;this.each(function(H,G){if(D=!!F.call(E,H,G,this)){throw $break}},this);return D}function p(F,E){F=F||Prototype.K;var D=[];this.each(function(H,G){D.push(F.call(E,H,G,this))},this);return D}function A(F,E){var D;this.each(function(H,G){if(F.call(E,H,G,this)){D=H;throw $break}},this);return D}function n(F,E){var D=[];this.each(function(H,G){if(F.call(E,H,G,this)){D.push(H)}},this);return D}function l(G,F,E){F=F||Prototype.K;var D=[];if(Object.isString(G)){G=new RegExp(RegExp.escape(G))}this.each(function(I,H){if(G.match(I)){D.push(F.call(E,I,H,this))}},this);return D}function b(D){if(Object.isFunction(this.indexOf)&&this.indexOf(D)!=-1){return true}var E=false;this.each(function(F){if(F==D){E=true;throw $break}});return E}function w(E,D){D=Object.isUndefined(D)?null:D;return this.eachSlice(E,function(F){while(F.length<E){F.push(D)}return F})}function r(D,F,E){this.each(function(H,G){D=F.call(E,D,H,G,this)},this);return D}function C(E){var D=$A(arguments).slice(1);return this.map(function(F){return F[E].apply(F,D)})}function v(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H>=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H<D){D=H}},this);return D}function g(G,E){G=G||Prototype.K;var F=[],D=[];this.each(function(I,H){(G.call(E,I,H,this)?F:D).push(I)},this);return[F,D]}function h(E){var D=[];this.each(function(F){D.push(F[E])});return D}function f(F,E){var D=[];this.each(function(H,G){if(!F.call(E,H,G,this)){D.push(H)}},this);return D}function s(E,D){return this.map(function(G,F){return{value:G,criteria:E.call(D,G,F,this)}},this).sort(function(I,H){var G=I.criteria,F=H.criteria;return G<F?-1:G>F?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#<Enumerable:"+this.toArray().inspect()+">"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G<J;G++){if(G in this){I.call(H,this[G],G,this)}}}if(!w){w=d}function t(){this.length=0;return this}function f(){return this[0]}function l(){return this[this.length-1]}function q(){return this.select(function(G){return G!=null})}function F(){return this.inject([],function(H,G){if(Object.isArray(G)){return H.concat(G.flatten())}H.push(G);return H})}function p(){var G=u.call(arguments,0);return this.select(function(H){return !G.include(H)})}function h(G){return(G===false?this.toArray():this)._reverse()}function s(G){return this.inject([],function(J,I,H){if(0==H||(G?J.last()!=I:!J.include(I))){J.push(I)}return J})}function y(G){return this.uniq().findAll(function(H){return G.indexOf(H)!==-1})}function A(){return u.call(this,0)}function r(){return this.length}function D(){return"["+this.map(Object.inspect).join(", ")+"]"}function b(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G<I;G++){if(G in K&&K[G]===J){return G}}return -1}function v(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K<G;K++){O=M[K];if(Object.isArray(O)&&!("callee" in O)){for(var J=0,I=O.length;J<I;J++){if(J in O){L[H]=O[J]}H++}}else{L[H++]=O}}L.length=H;return L}function z(G){return function(){if(arguments.length===0){return G.call(this,Prototype.K)}else{if(arguments[0]===undefined){var H=u.call(arguments,1);H.unshift(Prototype.K);return G.apply(this,H)}else{return G.apply(this,arguments)}}}}function B(K){if(this==null){throw new TypeError()}K=K||Prototype.K;var G=Object(this);var J=[],I=arguments[1],M=0;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){J[M]=K.call(I,G[H],H,G)}M++}J.length=M;return J}if(C.map){B=z(Array.prototype.map)}function n(K){if(this==null||!Object.isFunction(K)){throw new TypeError()}var G=Object(this);var J=[],I=arguments[1],M;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){M=G[H];if(K.call(I,M,H,G)){J.push(M)}}}return J}if(C.filter){n=Array.prototype.filter}function o(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&J.call(I,G[H],H,G)){return true}}return false}if(C.some){o=z(Array.prototype.some)}function E(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&!J.call(I,G[H],H,G)){return false}}return true}if(C.every){E=z(Array.prototype.every)}Object.extend(C,Enumerable);if(C.entries===Enumerable.entries){delete C.entries}if(!C._reverse){C._reverse=C.reverse}Object.extend(C,{_each:w,map:B,collect:B,select:n,filter:n,findAll:n,some:o,any:o,every:E,all:E,clear:t,first:f,last:l,compact:q,flatten:F,without:p,reverse:h,uniq:s,intersect:y,clone:A,toArray:A,size:r,inspect:D});var g=(function(){return[].concat(arguments)[0][0]!==1})(1,2);if(g){C.concat=e}if(!C.indexOf){C.indexOf=b}if(!C.lastIndexOf){C.lastIndexOf=v}})();function $H(b){return new Hash(b)}var Hash=Class.create(Enumerable,(function(){function g(v){this._object=Object.isHash(v)?v.toObject():Object.clone(v)}function h(z,y){var w=0;for(var v in this._object){var A=this._object[v],B=[v,A];B.key=v;B.value=A;z.call(y,B,w);w++}}function p(v,w){return this._object[v]=w}function e(v){if(this._object[v]!==Object.prototype[v]){return this._object[v]}}function s(v){var w=this._object[v];delete this._object[v];return w}function u(){return Object.clone(this._object)}function t(){return this.pluck("key")}function r(){return this.pluck("value")}function l(w){var v=this.detect(function(y){return y.value===w});return v&&v.key}function o(v){return this.clone().update(v)}function f(v){return new Hash(v).inject(this,function(w,y){w.set(y.key,y.value);return w})}function d(v,w){if(Object.isUndefined(w)){return v}w=String.interpret(w);w=w.gsub(/(\r)?\n/,"\r\n");w=encodeURIComponent(w);w=w.gsub(/%20/,"+");return v+"="+w}function b(){return this.inject([],function(A,D){var z=encodeURIComponent(D.key),w=D.value;if(w&&typeof w=="object"){if(Object.isArray(w)){var C=[];for(var y=0,v=w.length,B;y<v;y++){B=w[y];C.push(d(z,B))}return A.concat(C)}}else{A.push(d(z,w))}return A}).join("&")}function q(){return"#<Hash:{"+this.map(function(v){return v.map(Object.inspect).join(": ")}).join(", ")+"}>"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f<this.start){return false}if(this.exclusive){return f<this.end}return f<=this.end}return{initialize:d,_each:e,include:b}})());var Abstract={};var Try={these:function(){var f;for(var d=0,g=arguments.length;d<g;d++){var b=arguments[d];try{f=b();break}catch(h){}}return f}};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||false},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(d,b){this.responders._each(d,b)},register:function(b){if(!this.include(b)){this.responders.push(b)}},unregister:function(b){this.responders=this.responders.without(b)},dispatch:function(f,d,e,b){this.each(function(g){if(Object.isFunction(g[f])){try{g[f].apply(g,[d,e,b])}catch(h){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(b){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,b||{});this.options.method=this.options.method.toLowerCase();if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject()}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,d,b){$super(b);this.transport=Ajax.getTransport();this.request(d)},request:function(d){this.url=d;this.method=this.options.method;var g=Object.isString(this.options.parameters)?this.options.parameters:Object.toQueryString(this.options.parameters);if(!["get","post"].include(this.method)){g+=(g?"&":"")+"_method="+this.method;this.method="post"}if(g&&this.method==="get"){this.url+=(this.url.include("?")?"&":"?")+g}this.parameters=g.toQueryParams();try{var b=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(b)}Ajax.Responders.dispatch("onCreate",this,b);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1)}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||g):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()}}catch(f){this.dispatchException(f)}},onStateChange:function(){var b=this.transport.readyState;if(b>1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d<f;d+=2){g[e[d]]=e[d+1]}}else{$H(e).each(function(h){g[h.key]=h.value})}}for(var b in g){if(g[b]!=null){this.transport.setRequestHeader(b,g[b])}}},success:function(){var b=this.getStatus();return !b||(b>=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F<bw;F++){bx.push(a5(arguments[F]))}return bx}if(Object.isString(bv)){bv=document.getElementById(bv)}return aL.extend(bv)}be.$=a5;if(!be.Node){be.Node={}}if(!be.Node.ELEMENT_NODE){Object.extend(be.Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12})}var w={};function aW(bv,F){if(bv==="select"){return false}if("type" in F){return false}return true}var f=(function(){try{var F=document.createElement('<input name="x">');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='<option value="test">test</option>';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="<link />";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("<link")>-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('<input type="checkbox">');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#<Element.Layout>"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#<Element.Offset left: #{left} top: #{top}>".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o<p;o++){if(l(q[o],r)&&n==h++){return Element.extend(q[o])}}}function g(n){for(var h=0,l=n.length;h<l;h++){Element.extend(n[h])}return n}var d=Prototype.K;return{select:b,match:e,find:f,extendElements:(Element.extend===d)?d:g,extendElement:Element.extend}})();Prototype._original_property=window.Sizzle;(function(){function b(d){Prototype._actual_sizzle=d()}b.amd=true;if(typeof define!=="undefined"&&define.amd){Prototype._original_define=define;Prototype._actual_sizzle=null;window.define=b}})(); +var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h<o;h++){g.addMethods(l[h])}if(!g.prototype.initialize){g.prototype.initialize=Prototype.emptyFunction}g.prototype.constructor=g;return g}function e(q){var l=this.superclass&&this.superclass.prototype,h=Object.keys(q);if(f){if(q.toString!=Object.prototype.toString){h.push("toString")}if(q.valueOf!=Object.prototype.valueOf){h.push("valueOf")}}for(var g=0,n=h.length;g<n;g++){var p=h[g],o=q[p];if(l&&Object.isFunction(o)&&o.argumentNames()[0]=="$super"){var r=o;o=(function(s){return function(){return l[s].apply(this,arguments)}})(p).wrap(r);o.valueOf=(function(s){return function(){return s.valueOf.call(s)}})(r);o.toString=(function(s){return function(){return s.toString.call(s)}})(r)}this.prototype[p]=o}return this}return{create:d,Methods:{addMethods:e}}})();(function(){var F=Object.prototype.toString,q=Object.prototype.hasOwnProperty,G="Null",I="Undefined",R="Boolean",D="Number",C="String",P="Object",o="[object Function]",f="[object Boolean]",p="[object Number]",h="[object String]",d="[object Array]",O="[object Date]",g=window.JSON&&typeof JSON.stringify==="function"&&JSON.stringify(0)==="0"&&typeof JSON.stringify(Prototype.K)==="undefined";var w=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var b=(function(){for(var S in {toString:1}){if(S==="toString"){return false}}return true})();function K(T){switch(T){case null:return G;case (void 0):return I}var S=typeof T;switch(S){case"boolean":return R;case"number":return D;case"string":return C}return P}function n(S,U){for(var T in U){S[T]=U[T]}return S}function r(S){try{if(u(S)){return"undefined"}if(S===null){return"null"}return S.inspect?S.inspect():String(S)}catch(T){if(T instanceof RangeError){return"..."}throw T}}function H(S){return s("",{"":S},[])}function s(ab,Y,Z){var aa=Y[ab];if(K(aa)===P&&typeof aa.toJSON==="function"){aa=aa.toJSON(ab)}var U=F.call(aa);switch(U){case p:case f:case h:aa=aa.valueOf()}switch(aa){case null:return"null";case true:return"true";case false:return"false"}var X=typeof aa;switch(X){case"string":return aa.inspect(true);case"number":return isFinite(aa)?String(aa):"null";case"object":for(var T=0,S=Z.length;T<S;T++){if(Z[T]===aa){throw new TypeError("Cyclic reference to '"+aa+"' in object")}}Z.push(aa);var W=[];if(U===d){for(var T=0,S=aa.length;T<S;T++){var V=s(T,aa,Z);W.push(typeof V==="undefined"?"null":V)}W="["+W.join(",")+"]"}else{var ac=Object.keys(aa);for(var T=0,S=ac.length;T<S;T++){var ab=ac[T],V=s(ab,aa,Z);if(typeof V!=="undefined"){W.push(ab.inspect(true)+":"+V)}}W="{"+W.join(",")+"}"}Z.pop();return W}}function Q(S){return JSON.stringify(S)}function J(S){return $H(S).toQueryString()}function v(S){return S&&S.toHTML?S.toHTML():String.interpret(S)}function E(S){if(K(S)!==P){throw new TypeError()}var U=[];for(var V in S){if(q.call(S,V)){U.push(V)}}if(b){for(var T=0;V=w[T];T++){if(q.call(S,V)){U.push(V)}}}return U}function N(S){return Array.isArray(S)?S:"object"==typeof S?Object.keys(S).filter(function(n){return S.hasOwnProperty(n)}).map(function(n){return S[n]}):[]}function z(S){return n({},S)}function L(S){return !!(S&&S.nodeType==1)}function B(S){return F.call(S)===d}var e=(typeof Array.isArray=="function")&&Array.isArray([])&&!Array.isArray({});if(e){B=Array.isArray}function y(S){return S instanceof Hash}function t(S){return F.call(S)===o}function l(S){return F.call(S)===h}function M(S){return F.call(S)===p}function A(S){return F.call(S)===O}function u(S){return typeof S==="undefined"}n(Object,{extend:n,inspect:r,toJSON:g?Q:H,toQueryString:J,toHTML:v,keys:Object.keys||E,values:N,clone:z,isElement:L,isArray:B,isHash:y,isFunction:t,isString:l,isNumber:M,isDate:A,isUndefined:u})})();Object.extend(Function.prototype,(function(){var r=Array.prototype.slice;function f(v,s){var u=v.length,t=s.length;while(t--){v[u+t]=s[t]}return v}function p(t,s){t=r.call(t,0);return f(t,s)}function l(){var s=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return s.length==1&&!s[0]?[]:s}function n(u){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this}if(!Object.isFunction(this)){throw new TypeError("The object is not callable.")}var w=function(){};var s=this,t=r.call(arguments,1);var v=function(){var y=p(t,arguments);var z=this instanceof v?this:u;return s.apply(z,y)};w.prototype=this.prototype;v.prototype=new w();return v}function h(u){var s=this,t=r.call(arguments,1);return function(w){var v=f([w||window.event],t);return s.apply(u,v)}}function q(){if(!arguments.length){return this}var s=this,t=r.call(arguments,0);return function(){var u=p(t,arguments);return s.apply(this,u)}}function g(u){var s=this,t=r.call(arguments,1);u=u*1000;return window.setTimeout(function(){return s.apply(s,t)},u)}function b(){var s=f([0.01],arguments);return this.delay.apply(this,s)}function e(t){var s=this;return function(){var u=f([s.bind(this)],arguments);return t.apply(this,u)}}function d(){if(this._methodized){return this._methodized}var s=this;return this._methodized=function(){var t=f([this],arguments);return s.apply(null,t)}}var o={argumentNames:l,bindAsEventListener:h,curry:q,delay:g,defer:b,wrap:e,methodize:d};if(!Function.prototype.bind){o.bind=n}return o})());(function(e){function d(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+"Z"}function b(){return this.toISOString()}if(!e.toISOString){e.toISOString=d}if(!e.toJSON){e.toJSON=b}})(Date.prototype);RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(b){return String(b).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var PeriodicalExecuter=Class.create({initialize:function(d,b){this.callback=d;this.frequency=b;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000)},execute:function(){this.callback(this)},stop:function(){if(!this.timer){return}clearInterval(this.timer);this.timer=null},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();this.currentlyExecuting=false}catch(b){this.currentlyExecuting=false;throw b}}}});Object.extend(String,{interpret:function(b){return b==null?"":String(b)},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,(function(){var NATIVE_JSON_PARSE_SUPPORT=window.JSON&&typeof JSON.parse==="function"&&JSON.parse('{"test": true}').test;function prepareReplacement(replacement){if(Object.isFunction(replacement)){return replacement}var template=new Template(replacement);return function(match){return template.evaluate(match)}}function isNonEmptyRegExp(regexp){return regexp.source&®exp.source!=="(?:)"}function gsub(pattern,replacement){var result="",source=this,match;replacement=prepareReplacement(replacement);if(Object.isString(pattern)){pattern=RegExp.escape(pattern)}if(!(pattern.length||isNonEmptyRegExp(pattern))){replacement=replacement("");return replacement+source.split("").join(replacement)+replacement}while(source.length>0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)<I.length){H.push(I.slice(D,D+G))}return H.collect(F,E)}function d(F,E){F=F||Prototype.K;var D=true;this.each(function(H,G){D=D&&!!F.call(E,H,G,this);if(!D){throw $break}},this);return D}function o(F,E){F=F||Prototype.K;var D=false;this.each(function(H,G){if(D=!!F.call(E,H,G,this)){throw $break}},this);return D}function p(F,E){F=F||Prototype.K;var D=[];this.each(function(H,G){D.push(F.call(E,H,G,this))},this);return D}function A(F,E){var D;this.each(function(H,G){if(F.call(E,H,G,this)){D=H;throw $break}},this);return D}function n(F,E){var D=[];this.each(function(H,G){if(F.call(E,H,G,this)){D.push(H)}},this);return D}function l(G,F,E){F=F||Prototype.K;var D=[];if(Object.isString(G)){G=new RegExp(RegExp.escape(G))}this.each(function(I,H){if(G.match(I)){D.push(F.call(E,I,H,this))}},this);return D}function b(D){if(Object.isFunction(this.indexOf)&&this.indexOf(D)!=-1){return true}var E=false;this.each(function(F){if(F==D){E=true;throw $break}});return E}function w(E,D){D=Object.isUndefined(D)?null:D;return this.eachSlice(E,function(F){while(F.length<E){F.push(D)}return F})}function r(D,F,E){this.each(function(H,G){D=F.call(E,D,H,G,this)},this);return D}function C(E){var D=$A(arguments).slice(1);return this.map(function(F){return F[E].apply(F,D)})}function v(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H>=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H<D){D=H}},this);return D}function g(G,E){G=G||Prototype.K;var F=[],D=[];this.each(function(I,H){(G.call(E,I,H,this)?F:D).push(I)},this);return[F,D]}function h(E){var D=[];this.each(function(F){D.push(F[E])});return D}function f(F,E){var D=[];this.each(function(H,G){if(!F.call(E,H,G,this)){D.push(H)}},this);return D}function s(E,D){return this.map(function(G,F){return{value:G,criteria:E.call(D,G,F,this)}},this).sort(function(I,H){var G=I.criteria,F=H.criteria;return G<F?-1:G>F?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#<Enumerable:"+this.toArray().inspect()+">"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G<J;G++){if(G in this){I.call(H,this[G],G,this)}}}if(!w){w=d}function t(){this.length=0;return this}function f(){return this[0]}function l(){return this[this.length-1]}function q(){return this.select(function(G){return G!=null})}function F(){return this.inject([],function(H,G){if(Object.isArray(G)){return H.concat(G.flatten())}H.push(G);return H})}function p(){var G=u.call(arguments,0);return this.select(function(H){return !G.include(H)})}function h(G){return(G===false?this.toArray():this)._reverse()}function s(G){return this.inject([],function(J,I,H){if(0==H||(G?J.last()!=I:!J.include(I))){J.push(I)}return J})}function y(G){return this.uniq().findAll(function(H){return G.indexOf(H)!==-1})}function A(){return u.call(this,0)}function r(){return this.length}function D(){return"["+this.map(Object.inspect).join(", ")+"]"}function b(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G<I;G++){if(G in K&&K[G]===J){return G}}return -1}function v(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K<G;K++){O=M[K];if(Object.isArray(O)&&!("callee" in O)){for(var J=0,I=O.length;J<I;J++){if(J in O){L[H]=O[J]}H++}}else{L[H++]=O}}L.length=H;return L}function z(G){return function(){if(arguments.length===0){return G.call(this,Prototype.K)}else{if(arguments[0]===undefined){var H=u.call(arguments,1);H.unshift(Prototype.K);return G.apply(this,H)}else{return G.apply(this,arguments)}}}}function B(K){if(this==null){throw new TypeError()}K=K||Prototype.K;var G=Object(this);var J=[],I=arguments[1],M=0;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){J[M]=K.call(I,G[H],H,G)}M++}J.length=M;return J}if(C.map){B=z(Array.prototype.map)}function n(K){if(this==null||!Object.isFunction(K)){throw new TypeError()}var G=Object(this);var J=[],I=arguments[1],M;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){M=G[H];if(K.call(I,M,H,G)){J.push(M)}}}return J}if(C.filter){n=Array.prototype.filter}function o(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&J.call(I,G[H],H,G)){return true}}return false}if(C.some){o=z(Array.prototype.some)}function E(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&!J.call(I,G[H],H,G)){return false}}return true}if(C.every){E=z(Array.prototype.every)}Object.extend(C,Enumerable);if(C.entries===Enumerable.entries){delete C.entries}if(!C._reverse){C._reverse=C.reverse}Object.extend(C,{_each:w,map:B,collect:B,select:n,filter:n,findAll:n,some:o,any:o,every:E,all:E,clear:t,first:f,last:l,compact:q,flatten:F,without:p,reverse:h,uniq:s,intersect:y,clone:A,toArray:A,size:r,inspect:D});var g=(function(){return[].concat(arguments)[0][0]!==1})(1,2);if(g){C.concat=e}if(!C.indexOf){C.indexOf=b}if(!C.lastIndexOf){C.lastIndexOf=v}})();function $H(b){return new Hash(b)}var Hash=Class.create(Enumerable,(function(){function g(v){this._object=Object.isHash(v)?v.toObject():Object.clone(v)}function h(z,y){var w=0;for(var v in this._object){var A=this._object[v],B=[v,A];B.key=v;B.value=A;z.call(y,B,w);w++}}function p(v,w){return this._object[v]=w}function e(v){if(this._object[v]!==Object.prototype[v]){return this._object[v]}}function s(v){var w=this._object[v];delete this._object[v];return w}function u(){return Object.clone(this._object)}function t(){return this.pluck("key")}function r(){return this.pluck("value")}function l(w){var v=this.detect(function(y){return y.value===w});return v&&v.key}function o(v){return this.clone().update(v)}function f(v){return new Hash(v).inject(this,function(w,y){w.set(y.key,y.value);return w})}function d(v,w){if(Object.isUndefined(w)){return v}w=String.interpret(w);w=w.gsub(/(\r)?\n/,"\r\n");w=encodeURIComponent(w);w=w.gsub(/%20/,"+");return v+"="+w}function b(){return this.inject([],function(A,D){var z=encodeURIComponent(D.key),w=D.value;if(w&&typeof w=="object"){if(Object.isArray(w)){var C=[];for(var y=0,v=w.length,B;y<v;y++){B=w[y];C.push(d(z,B))}return A.concat(C)}}else{A.push(d(z,w))}return A}).join("&")}function q(){return"#<Hash:{"+this.map(function(v){return v.map(Object.inspect).join(": ")}).join(", ")+"}>"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f<this.start){return false}if(this.exclusive){return f<this.end}return f<=this.end}return{initialize:d,_each:e,include:b}})());var Abstract={};var Try={these:function(){var f;for(var d=0,g=arguments.length;d<g;d++){var b=arguments[d];try{f=b();break}catch(h){}}return f}};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||false},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(d,b){this.responders._each(d,b)},register:function(b){if(!this.include(b)){this.responders.push(b)}},unregister:function(b){this.responders=this.responders.without(b)},dispatch:function(f,d,e,b){this.each(function(g){if(Object.isFunction(g[f])){try{g[f].apply(g,[d,e,b])}catch(h){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(b){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,b||{});this.options.method=this.options.method.toLowerCase();if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject()}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,d,b){$super(b);this.transport=Ajax.getTransport();this.request(d)},request:function(d){this.url=d;this.method=this.options.method;var g=Object.isString(this.options.parameters)?this.options.parameters:Object.toQueryString(this.options.parameters);if(!["get","post"].include(this.method)){g+=(g?"&":"")+"_method="+this.method;this.method="post"}if(g&&this.method==="get"){this.url+=(this.url.include("?")?"&":"?")+g}this.parameters=g.toQueryParams();try{var b=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(b)}Ajax.Responders.dispatch("onCreate",this,b);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1)}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||g):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()}}catch(f){this.dispatchException(f)}},onStateChange:function(){var b=this.transport.readyState;if(b>1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d<f;d+=2){g[e[d]]=e[d+1]}}else{$H(e).each(function(h){g[h.key]=h.value})}}for(var b in g){if(g[b]!=null){this.transport.setRequestHeader(b,g[b])}}},success:function(){var b=this.getStatus();return !b||(b>=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F<bw;F++){bx.push(a5(arguments[F]))}return bx}if(Object.isString(bv)){bv=document.getElementById(bv)}return aL.extend(bv)}be.$=a5;if(!be.Node){be.Node={}}if(!be.Node.ELEMENT_NODE){Object.extend(be.Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12})}var w={};function aW(bv,F){if(bv==="select"){return false}if("type" in F){return false}return true}var f=(function(){try{var F=document.createElement('<input name="x">');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='<option value="test">test</option>';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="<link />";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("<link")>-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('<input type="checkbox">');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#<Element.Layout>"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#<Element.Offset left: #{left} top: #{top}>".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o<p;o++){if(l(q[o],r)&&n==h++){return Element.extend(q[o])}}}function g(n){for(var h=0,l=n.length;h<l;h++){Element.extend(n[h])}return n}var d=Prototype.K;return{select:b,match:e,find:f,extendElements:(Element.extend===d)?d:g,extendElement:Element.extend}})();Prototype._original_property=window.Sizzle;(function(){function b(d){Prototype._actual_sizzle=d()}b.amd=true;if(typeof define!=="undefined"&&define.amd){Prototype._original_define=define;Prototype._actual_sizzle=null;window.define=b}})(); /*! * Sizzle CSS Selector Engine v1.10.18 * http://sizzlejs.com/ From 71a5a3a82e9f7b8f136900d145627e4ae0fd7eaa Mon Sep 17 00:00:00 2001 From: "Chhandak.Barua" <chhandak.barua@BLR1-LMC-N73490.local> Date: Wed, 23 Oct 2024 23:19:36 +0530 Subject: [PATCH 386/460] ACP2E-3375: [CLOUD] In admin there are many javascript error in console --- lib/web/legacy-build.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js index a808626aee6b6..b52de55222fb0 100644 --- a/lib/web/legacy-build.min.js +++ b/lib/web/legacy-build.min.js @@ -1,4 +1,4 @@ -var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h<o;h++){g.addMethods(l[h])}if(!g.prototype.initialize){g.prototype.initialize=Prototype.emptyFunction}g.prototype.constructor=g;return g}function e(q){var l=this.superclass&&this.superclass.prototype,h=Object.keys(q);if(f){if(q.toString!=Object.prototype.toString){h.push("toString")}if(q.valueOf!=Object.prototype.valueOf){h.push("valueOf")}}for(var g=0,n=h.length;g<n;g++){var p=h[g],o=q[p];if(l&&Object.isFunction(o)&&o.argumentNames()[0]=="$super"){var r=o;o=(function(s){return function(){return l[s].apply(this,arguments)}})(p).wrap(r);o.valueOf=(function(s){return function(){return s.valueOf.call(s)}})(r);o.toString=(function(s){return function(){return s.toString.call(s)}})(r)}this.prototype[p]=o}return this}return{create:d,Methods:{addMethods:e}}})();(function(){var F=Object.prototype.toString,q=Object.prototype.hasOwnProperty,G="Null",I="Undefined",R="Boolean",D="Number",C="String",P="Object",o="[object Function]",f="[object Boolean]",p="[object Number]",h="[object String]",d="[object Array]",O="[object Date]",g=window.JSON&&typeof JSON.stringify==="function"&&JSON.stringify(0)==="0"&&typeof JSON.stringify(Prototype.K)==="undefined";var w=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var b=(function(){for(var S in {toString:1}){if(S==="toString"){return false}}return true})();function K(T){switch(T){case null:return G;case (void 0):return I}var S=typeof T;switch(S){case"boolean":return R;case"number":return D;case"string":return C}return P}function n(S,U){for(var T in U){S[T]=U[T]}return S}function r(S){try{if(u(S)){return"undefined"}if(S===null){return"null"}return S.inspect?S.inspect():String(S)}catch(T){if(T instanceof RangeError){return"..."}throw T}}function H(S){return s("",{"":S},[])}function s(ab,Y,Z){var aa=Y[ab];if(K(aa)===P&&typeof aa.toJSON==="function"){aa=aa.toJSON(ab)}var U=F.call(aa);switch(U){case p:case f:case h:aa=aa.valueOf()}switch(aa){case null:return"null";case true:return"true";case false:return"false"}var X=typeof aa;switch(X){case"string":return aa.inspect(true);case"number":return isFinite(aa)?String(aa):"null";case"object":for(var T=0,S=Z.length;T<S;T++){if(Z[T]===aa){throw new TypeError("Cyclic reference to '"+aa+"' in object")}}Z.push(aa);var W=[];if(U===d){for(var T=0,S=aa.length;T<S;T++){var V=s(T,aa,Z);W.push(typeof V==="undefined"?"null":V)}W="["+W.join(",")+"]"}else{var ac=Object.keys(aa);for(var T=0,S=ac.length;T<S;T++){var ab=ac[T],V=s(ab,aa,Z);if(typeof V!=="undefined"){W.push(ab.inspect(true)+":"+V)}}W="{"+W.join(",")+"}"}Z.pop();return W}}function Q(S){return JSON.stringify(S)}function J(S){return $H(S).toQueryString()}function v(S){return S&&S.toHTML?S.toHTML():String.interpret(S)}function E(S){if(K(S)!==P){throw new TypeError()}var U=[];for(var V in S){if(q.call(S,V)){U.push(V)}}if(b){for(var T=0;V=w[T];T++){if(q.call(S,V)){U.push(V)}}}return U}function N(S){return Array.isArray(S)?S:"object"==typeof S?Object.keys(S).filter(function(n){return S.hasOwnProperty(n)}).map(function(n){return S[n]}):[]}function z(S){return n({},S)}function L(S){return !!(S&&S.nodeType==1)}function B(S){return F.call(S)===d}var e=(typeof Array.isArray=="function")&&Array.isArray([])&&!Array.isArray({});if(e){B=Array.isArray}function y(S){return S instanceof Hash}function t(S){return F.call(S)===o}function l(S){return F.call(S)===h}function M(S){return F.call(S)===p}function A(S){return F.call(S)===O}function u(S){return typeof S==="undefined"}n(Object,{extend:n,inspect:r,toJSON:g?Q:H,toQueryString:J,toHTML:v,keys:Object.keys||E,values:N,clone:z,isElement:L,isArray:B,isHash:y,isFunction:t,isString:l,isNumber:M,isDate:A,isUndefined:u})})();Object.extend(Function.prototype,(function(){var r=Array.prototype.slice;function f(v,s){var u=v.length,t=s.length;while(t--){v[u+t]=s[t]}return v}function p(t,s){t=r.call(t,0);return f(t,s)}function l(){var s=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return s.length==1&&!s[0]?[]:s}function n(u){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this}if(!Object.isFunction(this)){throw new TypeError("The object is not callable.")}var w=function(){};var s=this,t=r.call(arguments,1);var v=function(){var y=p(t,arguments);var z=this instanceof v?this:u;return s.apply(z,y)};w.prototype=this.prototype;v.prototype=new w();return v}function h(u){var s=this,t=r.call(arguments,1);return function(w){var v=f([w||window.event],t);return s.apply(u,v)}}function q(){if(!arguments.length){return this}var s=this,t=r.call(arguments,0);return function(){var u=p(t,arguments);return s.apply(this,u)}}function g(u){var s=this,t=r.call(arguments,1);u=u*1000;return window.setTimeout(function(){return s.apply(s,t)},u)}function b(){var s=f([0.01],arguments);return this.delay.apply(this,s)}function e(t){var s=this;return function(){var u=f([s.bind(this)],arguments);return t.apply(this,u)}}function d(){if(this._methodized){return this._methodized}var s=this;return this._methodized=function(){var t=f([this],arguments);return s.apply(null,t)}}var o={argumentNames:l,bindAsEventListener:h,curry:q,delay:g,defer:b,wrap:e,methodize:d};if(!Function.prototype.bind){o.bind=n}return o})());(function(e){function d(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+"Z"}function b(){return this.toISOString()}if(!e.toISOString){e.toISOString=d}if(!e.toJSON){e.toJSON=b}})(Date.prototype);RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(b){return String(b).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var PeriodicalExecuter=Class.create({initialize:function(d,b){this.callback=d;this.frequency=b;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000)},execute:function(){this.callback(this)},stop:function(){if(!this.timer){return}clearInterval(this.timer);this.timer=null},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();this.currentlyExecuting=false}catch(b){this.currentlyExecuting=false;throw b}}}});Object.extend(String,{interpret:function(b){return b==null?"":String(b)},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,(function(){var NATIVE_JSON_PARSE_SUPPORT=window.JSON&&typeof JSON.parse==="function"&&JSON.parse('{"test": true}').test;function prepareReplacement(replacement){if(Object.isFunction(replacement)){return replacement}var template=new Template(replacement);return function(match){return template.evaluate(match)}}function isNonEmptyRegExp(regexp){return regexp.source&®exp.source!=="(?:)"}function gsub(pattern,replacement){var result="",source=this,match;replacement=prepareReplacement(replacement);if(Object.isString(pattern)){pattern=RegExp.escape(pattern)}if(!(pattern.length||isNonEmptyRegExp(pattern))){replacement=replacement("");return replacement+source.split("").join(replacement)+replacement}while(source.length>0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)<I.length){H.push(I.slice(D,D+G))}return H.collect(F,E)}function d(F,E){F=F||Prototype.K;var D=true;this.each(function(H,G){D=D&&!!F.call(E,H,G,this);if(!D){throw $break}},this);return D}function o(F,E){F=F||Prototype.K;var D=false;this.each(function(H,G){if(D=!!F.call(E,H,G,this)){throw $break}},this);return D}function p(F,E){F=F||Prototype.K;var D=[];this.each(function(H,G){D.push(F.call(E,H,G,this))},this);return D}function A(F,E){var D;this.each(function(H,G){if(F.call(E,H,G,this)){D=H;throw $break}},this);return D}function n(F,E){var D=[];this.each(function(H,G){if(F.call(E,H,G,this)){D.push(H)}},this);return D}function l(G,F,E){F=F||Prototype.K;var D=[];if(Object.isString(G)){G=new RegExp(RegExp.escape(G))}this.each(function(I,H){if(G.match(I)){D.push(F.call(E,I,H,this))}},this);return D}function b(D){if(Object.isFunction(this.indexOf)&&this.indexOf(D)!=-1){return true}var E=false;this.each(function(F){if(F==D){E=true;throw $break}});return E}function w(E,D){D=Object.isUndefined(D)?null:D;return this.eachSlice(E,function(F){while(F.length<E){F.push(D)}return F})}function r(D,F,E){this.each(function(H,G){D=F.call(E,D,H,G,this)},this);return D}function C(E){var D=$A(arguments).slice(1);return this.map(function(F){return F[E].apply(F,D)})}function v(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H>=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H<D){D=H}},this);return D}function g(G,E){G=G||Prototype.K;var F=[],D=[];this.each(function(I,H){(G.call(E,I,H,this)?F:D).push(I)},this);return[F,D]}function h(E){var D=[];this.each(function(F){D.push(F[E])});return D}function f(F,E){var D=[];this.each(function(H,G){if(!F.call(E,H,G,this)){D.push(H)}},this);return D}function s(E,D){return this.map(function(G,F){return{value:G,criteria:E.call(D,G,F,this)}},this).sort(function(I,H){var G=I.criteria,F=H.criteria;return G<F?-1:G>F?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#<Enumerable:"+this.toArray().inspect()+">"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G<J;G++){if(G in this){I.call(H,this[G],G,this)}}}if(!w){w=d}function t(){this.length=0;return this}function f(){return this[0]}function l(){return this[this.length-1]}function q(){return this.select(function(G){return G!=null})}function F(){return this.inject([],function(H,G){if(Object.isArray(G)){return H.concat(G.flatten())}H.push(G);return H})}function p(){var G=u.call(arguments,0);return this.select(function(H){return !G.include(H)})}function h(G){return(G===false?this.toArray():this)._reverse()}function s(G){return this.inject([],function(J,I,H){if(0==H||(G?J.last()!=I:!J.include(I))){J.push(I)}return J})}function y(G){return this.uniq().findAll(function(H){return G.indexOf(H)!==-1})}function A(){return u.call(this,0)}function r(){return this.length}function D(){return"["+this.map(Object.inspect).join(", ")+"]"}function b(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G<I;G++){if(G in K&&K[G]===J){return G}}return -1}function v(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K<G;K++){O=M[K];if(Object.isArray(O)&&!("callee" in O)){for(var J=0,I=O.length;J<I;J++){if(J in O){L[H]=O[J]}H++}}else{L[H++]=O}}L.length=H;return L}function z(G){return function(){if(arguments.length===0){return G.call(this,Prototype.K)}else{if(arguments[0]===undefined){var H=u.call(arguments,1);H.unshift(Prototype.K);return G.apply(this,H)}else{return G.apply(this,arguments)}}}}function B(K){if(this==null){throw new TypeError()}K=K||Prototype.K;var G=Object(this);var J=[],I=arguments[1],M=0;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){J[M]=K.call(I,G[H],H,G)}M++}J.length=M;return J}if(C.map){B=z(Array.prototype.map)}function n(K){if(this==null||!Object.isFunction(K)){throw new TypeError()}var G=Object(this);var J=[],I=arguments[1],M;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){M=G[H];if(K.call(I,M,H,G)){J.push(M)}}}return J}if(C.filter){n=Array.prototype.filter}function o(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&J.call(I,G[H],H,G)){return true}}return false}if(C.some){o=z(Array.prototype.some)}function E(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&!J.call(I,G[H],H,G)){return false}}return true}if(C.every){E=z(Array.prototype.every)}Object.extend(C,Enumerable);if(C.entries===Enumerable.entries){delete C.entries}if(!C._reverse){C._reverse=C.reverse}Object.extend(C,{_each:w,map:B,collect:B,select:n,filter:n,findAll:n,some:o,any:o,every:E,all:E,clear:t,first:f,last:l,compact:q,flatten:F,without:p,reverse:h,uniq:s,intersect:y,clone:A,toArray:A,size:r,inspect:D});var g=(function(){return[].concat(arguments)[0][0]!==1})(1,2);if(g){C.concat=e}if(!C.indexOf){C.indexOf=b}if(!C.lastIndexOf){C.lastIndexOf=v}})();function $H(b){return new Hash(b)}var Hash=Class.create(Enumerable,(function(){function g(v){this._object=Object.isHash(v)?v.toObject():Object.clone(v)}function h(z,y){var w=0;for(var v in this._object){var A=this._object[v],B=[v,A];B.key=v;B.value=A;z.call(y,B,w);w++}}function p(v,w){return this._object[v]=w}function e(v){if(this._object[v]!==Object.prototype[v]){return this._object[v]}}function s(v){var w=this._object[v];delete this._object[v];return w}function u(){return Object.clone(this._object)}function t(){return this.pluck("key")}function r(){return this.pluck("value")}function l(w){var v=this.detect(function(y){return y.value===w});return v&&v.key}function o(v){return this.clone().update(v)}function f(v){return new Hash(v).inject(this,function(w,y){w.set(y.key,y.value);return w})}function d(v,w){if(Object.isUndefined(w)){return v}w=String.interpret(w);w=w.gsub(/(\r)?\n/,"\r\n");w=encodeURIComponent(w);w=w.gsub(/%20/,"+");return v+"="+w}function b(){return this.inject([],function(A,D){var z=encodeURIComponent(D.key),w=D.value;if(w&&typeof w=="object"){if(Object.isArray(w)){var C=[];for(var y=0,v=w.length,B;y<v;y++){B=w[y];C.push(d(z,B))}return A.concat(C)}}else{A.push(d(z,w))}return A}).join("&")}function q(){return"#<Hash:{"+this.map(function(v){return v.map(Object.inspect).join(": ")}).join(", ")+"}>"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f<this.start){return false}if(this.exclusive){return f<this.end}return f<=this.end}return{initialize:d,_each:e,include:b}})());var Abstract={};var Try={these:function(){var f;for(var d=0,g=arguments.length;d<g;d++){var b=arguments[d];try{f=b();break}catch(h){}}return f}};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||false},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(d,b){this.responders._each(d,b)},register:function(b){if(!this.include(b)){this.responders.push(b)}},unregister:function(b){this.responders=this.responders.without(b)},dispatch:function(f,d,e,b){this.each(function(g){if(Object.isFunction(g[f])){try{g[f].apply(g,[d,e,b])}catch(h){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(b){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,b||{});this.options.method=this.options.method.toLowerCase();if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject()}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,d,b){$super(b);this.transport=Ajax.getTransport();this.request(d)},request:function(d){this.url=d;this.method=this.options.method;var g=Object.isString(this.options.parameters)?this.options.parameters:Object.toQueryString(this.options.parameters);if(!["get","post"].include(this.method)){g+=(g?"&":"")+"_method="+this.method;this.method="post"}if(g&&this.method==="get"){this.url+=(this.url.include("?")?"&":"?")+g}this.parameters=g.toQueryParams();try{var b=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(b)}Ajax.Responders.dispatch("onCreate",this,b);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1)}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||g):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()}}catch(f){this.dispatchException(f)}},onStateChange:function(){var b=this.transport.readyState;if(b>1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d<f;d+=2){g[e[d]]=e[d+1]}}else{$H(e).each(function(h){g[h.key]=h.value})}}for(var b in g){if(g[b]!=null){this.transport.setRequestHeader(b,g[b])}}},success:function(){var b=this.getStatus();return !b||(b>=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F<bw;F++){bx.push(a5(arguments[F]))}return bx}if(Object.isString(bv)){bv=document.getElementById(bv)}return aL.extend(bv)}be.$=a5;if(!be.Node){be.Node={}}if(!be.Node.ELEMENT_NODE){Object.extend(be.Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12})}var w={};function aW(bv,F){if(bv==="select"){return false}if("type" in F){return false}return true}var f=(function(){try{var F=document.createElement('<input name="x">');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='<option value="test">test</option>';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="<link />";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("<link")>-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('<input type="checkbox">');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#<Element.Layout>"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#<Element.Offset left: #{left} top: #{top}>".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o<p;o++){if(l(q[o],r)&&n==h++){return Element.extend(q[o])}}}function g(n){for(var h=0,l=n.length;h<l;h++){Element.extend(n[h])}return n}var d=Prototype.K;return{select:b,match:e,find:f,extendElements:(Element.extend===d)?d:g,extendElement:Element.extend}})();Prototype._original_property=window.Sizzle;(function(){function b(d){Prototype._actual_sizzle=d()}b.amd=true;if(typeof define!=="undefined"&&define.amd){Prototype._original_define=define;Prototype._actual_sizzle=null;window.define=b}})(); +var Prototype={Version:"1.7.3",Browser:(function(){var d=navigator.userAgent;var b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:d.indexOf("AppleWebKit/")>-1,Gecko:d.indexOf("Gecko")>-1&&d.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(d)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var b=window.Element||window.HTMLElement;return !!(b&&b.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var e=document.createElement("div"),d=document.createElement("form"),b=false;if(e.__proto__&&(e.__proto__!==d.__proto__)){b=true}e=d=null;return b})()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script\\s*>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(b){return b}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var f=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();function b(){}function d(){var n=null,l=$A(arguments);if(Object.isFunction(l[0])){n=l.shift()}function g(){this.initialize.apply(this,arguments)}Object.extend(g,Class.Methods);g.superclass=n;g.subclasses=[];if(n){b.prototype=n.prototype;g.prototype=new b;n.subclasses.push(g)}for(var h=0,o=l.length;h<o;h++){g.addMethods(l[h])}if(!g.prototype.initialize){g.prototype.initialize=Prototype.emptyFunction}g.prototype.constructor=g;return g}function e(q){var l=this.superclass&&this.superclass.prototype,h=Object.keys(q);if(f){if(q.toString!=Object.prototype.toString){h.push("toString")}if(q.valueOf!=Object.prototype.valueOf){h.push("valueOf")}}for(var g=0,n=h.length;g<n;g++){var p=h[g],o=q[p];if(l&&Object.isFunction(o)&&o.argumentNames()[0]=="$super"){var r=o;o=(function(s){return function(){return l[s].apply(this,arguments)}})(p).wrap(r);o.valueOf=(function(s){return function(){return s.valueOf.call(s)}})(r);o.toString=(function(s){return function(){return s.toString.call(s)}})(r)}this.prototype[p]=o}return this}return{create:d,Methods:{addMethods:e}}})();(function(){var F=Object.prototype.toString,q=Object.prototype.hasOwnProperty,G="Null",I="Undefined",R="Boolean",D="Number",C="String",P="Object",o="[object Function]",f="[object Boolean]",p="[object Number]",h="[object String]",d="[object Array]",O="[object Date]",g=window.JSON&&typeof JSON.stringify==="function"&&JSON.stringify(0)==="0"&&typeof JSON.stringify(Prototype.K)==="undefined";var w=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var b=(function(){for(var S in {toString:1}){if(S==="toString"){return false}}return true})();function K(T){switch(T){case null:return G;case (void 0):return I}var S=typeof T;switch(S){case"boolean":return R;case"number":return D;case"string":return C}return P}function n(S,U){for(var T in U){S[T]=U[T]}return S}function r(S){try{if(u(S)){return"undefined"}if(S===null){return"null"}return S.inspect?S.inspect():String(S)}catch(T){if(T instanceof RangeError){return"..."}throw T}}function H(S){return s("",{"":S},[])}function s(ab,Y,Z){var aa=Y[ab];if(K(aa)===P&&typeof aa.toJSON==="function"){aa=aa.toJSON(ab)}var U=F.call(aa);switch(U){case p:case f:case h:aa=aa.valueOf()}switch(aa){case null:return"null";case true:return"true";case false:return"false"}var X=typeof aa;switch(X){case"string":return aa.inspect(true);case"number":return isFinite(aa)?String(aa):"null";case"object":for(var T=0,S=Z.length;T<S;T++){if(Z[T]===aa){throw new TypeError("Cyclic reference to '"+aa+"' in object")}}Z.push(aa);var W=[];if(U===d){for(var T=0,S=aa.length;T<S;T++){var V=s(T,aa,Z);W.push(typeof V==="undefined"?"null":V)}W="["+W.join(",")+"]"}else{var ac=Object.keys(aa);for(var T=0,S=ac.length;T<S;T++){var ab=ac[T],V=s(ab,aa,Z);if(typeof V!=="undefined"){W.push(ab.inspect(true)+":"+V)}}W="{"+W.join(",")+"}"}Z.pop();return W}}function Q(S){return JSON.stringify(S)}function J(S){return $H(S).toQueryString()}function v(S){return S&&S.toHTML?S.toHTML():String.interpret(S)}function E(S){if(K(S)!==P){throw new TypeError()}var U=[];for(var V in S){if(q.call(S,V)){U.push(V)}}if(b){for(var T=0;V=w[T];T++){if(q.call(S,V)){U.push(V)}}}return U}function N(S){var T=[];for(var U in S){T.push(S[U])}return T}function z(S){return n({},S)}function L(S){return !!(S&&S.nodeType==1)}function B(S){return F.call(S)===d}var e=(typeof Array.isArray=="function")&&Array.isArray([])&&!Array.isArray({});if(e){B=Array.isArray}function y(S){return S instanceof Hash}function t(S){return F.call(S)===o}function l(S){return F.call(S)===h}function M(S){return F.call(S)===p}function A(S){return F.call(S)===O}function u(S){return typeof S==="undefined"}n(Object,{extend:n,inspect:r,toJSON:g?Q:H,toQueryString:J,toHTML:v,keys:Object.keys||E,values:Object.values||N,clone:z,isElement:L,isArray:B,isHash:y,isFunction:t,isString:l,isNumber:M,isDate:A,isUndefined:u})})();Object.extend(Function.prototype,(function(){var r=Array.prototype.slice;function f(v,s){var u=v.length,t=s.length;while(t--){v[u+t]=s[t]}return v}function p(t,s){t=r.call(t,0);return f(t,s)}function l(){var s=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return s.length==1&&!s[0]?[]:s}function n(u){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this}if(!Object.isFunction(this)){throw new TypeError("The object is not callable.")}var w=function(){};var s=this,t=r.call(arguments,1);var v=function(){var y=p(t,arguments);var z=this instanceof v?this:u;return s.apply(z,y)};w.prototype=this.prototype;v.prototype=new w();return v}function h(u){var s=this,t=r.call(arguments,1);return function(w){var v=f([w||window.event],t);return s.apply(u,v)}}function q(){if(!arguments.length){return this}var s=this,t=r.call(arguments,0);return function(){var u=p(t,arguments);return s.apply(this,u)}}function g(u){var s=this,t=r.call(arguments,1);u=u*1000;return window.setTimeout(function(){return s.apply(s,t)},u)}function b(){var s=f([0.01],arguments);return this.delay.apply(this,s)}function e(t){var s=this;return function(){var u=f([s.bind(this)],arguments);return t.apply(this,u)}}function d(){if(this._methodized){return this._methodized}var s=this;return this._methodized=function(){var t=f([this],arguments);return s.apply(null,t)}}var o={argumentNames:l,bindAsEventListener:h,curry:q,delay:g,defer:b,wrap:e,methodize:d};if(!Function.prototype.bind){o.bind=n}return o})());(function(e){function d(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+"Z"}function b(){return this.toISOString()}if(!e.toISOString){e.toISOString=d}if(!e.toJSON){e.toJSON=b}})(Date.prototype);RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(b){return String(b).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var PeriodicalExecuter=Class.create({initialize:function(d,b){this.callback=d;this.frequency=b;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000)},execute:function(){this.callback(this)},stop:function(){if(!this.timer){return}clearInterval(this.timer);this.timer=null},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();this.currentlyExecuting=false}catch(b){this.currentlyExecuting=false;throw b}}}});Object.extend(String,{interpret:function(b){return b==null?"":String(b)},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,(function(){var NATIVE_JSON_PARSE_SUPPORT=window.JSON&&typeof JSON.parse==="function"&&JSON.parse('{"test": true}').test;function prepareReplacement(replacement){if(Object.isFunction(replacement)){return replacement}var template=new Template(replacement);return function(match){return template.evaluate(match)}}function isNonEmptyRegExp(regexp){return regexp.source&®exp.source!=="(?:)"}function gsub(pattern,replacement){var result="",source=this,match;replacement=prepareReplacement(replacement);if(Object.isString(pattern)){pattern=RegExp.escape(pattern)}if(!(pattern.length||isNonEmptyRegExp(pattern))){replacement=replacement("");return replacement+source.split("").join(replacement)+replacement}while(source.length>0){match=source.match(pattern);if(match&&match[0].length>0){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>'"])+)?\s*("[^">]*|'[^'>])?(\/)?>|<\/\w+>/gi, '')}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=value.gsub("+"," ");value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern,position){position=Object.isNumber(position)?position:0;return this.lastIndexOf(pattern,position)===position}function endsWith(pattern,position){pattern=String(pattern);position=Object.isNumber(position)?position:this.length;if(position<0){position=0}if(position>this.length){position=this.length}var d=position-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:String.prototype.startsWith||startsWith,endsWith:String.prototype.endsWith||endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(b,d){this.template=b.toString();this.pattern=d||Template.Pattern},evaluate:function(b){if(b&&Object.isFunction(b.toTemplateReplacements)){b=b.toTemplateReplacements()}return this.template.gsub(this.pattern,function(f){if(b==null){return(f[1]+"")}var h=f[1]||"";if(h=="\\"){return f[2]}var d=b,l=f[3],g=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;f=g.exec(l);if(f==null){return h}while(f!=null){var e=f[1].startsWith("[")?f[2].replace(/\\\\]/g,"]"):f[1];d=d[e];if(null==d||""==f[3]){break}l=l.substring("["==f[3]?f[1].length:f[0].length);f=g.exec(l)}return h+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function e(E,D){try{this._each(E,D)}catch(F){if(F!=$break){throw F}}return this}function y(G,F,E){var D=-G,H=[],I=this.toArray();if(G<1){return I}while((D+=G)<I.length){H.push(I.slice(D,D+G))}return H.collect(F,E)}function d(F,E){F=F||Prototype.K;var D=true;this.each(function(H,G){D=D&&!!F.call(E,H,G,this);if(!D){throw $break}},this);return D}function o(F,E){F=F||Prototype.K;var D=false;this.each(function(H,G){if(D=!!F.call(E,H,G,this)){throw $break}},this);return D}function p(F,E){F=F||Prototype.K;var D=[];this.each(function(H,G){D.push(F.call(E,H,G,this))},this);return D}function A(F,E){var D;this.each(function(H,G){if(F.call(E,H,G,this)){D=H;throw $break}},this);return D}function n(F,E){var D=[];this.each(function(H,G){if(F.call(E,H,G,this)){D.push(H)}},this);return D}function l(G,F,E){F=F||Prototype.K;var D=[];if(Object.isString(G)){G=new RegExp(RegExp.escape(G))}this.each(function(I,H){if(G.match(I)){D.push(F.call(E,I,H,this))}},this);return D}function b(D){if(Object.isFunction(this.indexOf)&&this.indexOf(D)!=-1){return true}var E=false;this.each(function(F){if(F==D){E=true;throw $break}});return E}function w(E,D){D=Object.isUndefined(D)?null:D;return this.eachSlice(E,function(F){while(F.length<E){F.push(D)}return F})}function r(D,F,E){this.each(function(H,G){D=F.call(E,D,H,G,this)},this);return D}function C(E){var D=$A(arguments).slice(1);return this.map(function(F){return F[E].apply(F,D)})}function v(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H>=D){D=H}},this);return D}function t(F,E){F=F||Prototype.K;var D;this.each(function(H,G){H=F.call(E,H,G,this);if(D==null||H<D){D=H}},this);return D}function g(G,E){G=G||Prototype.K;var F=[],D=[];this.each(function(I,H){(G.call(E,I,H,this)?F:D).push(I)},this);return[F,D]}function h(E){var D=[];this.each(function(F){D.push(F[E])});return D}function f(F,E){var D=[];this.each(function(H,G){if(!F.call(E,H,G,this)){D.push(H)}},this);return D}function s(E,D){return this.map(function(G,F){return{value:G,criteria:E.call(D,G,F,this)}},this).sort(function(I,H){var G=I.criteria,F=H.criteria;return G<F?-1:G>F?1:0}).pluck("value")}function u(){return this.map()}function z(){var E=Prototype.K,D=$A(arguments);if(Object.isFunction(D.last())){E=D.pop()}var F=[this].concat(D).map($A);return this.map(function(H,G){return E(F.pluck(G))})}function q(){return this.toArray().length}function B(){return"#<Enumerable:"+this.toArray().inspect()+">"}return{each:e,eachSlice:y,all:d,every:d,any:o,some:o,collect:p,map:p,detect:A,findAll:n,select:n,filter:n,grep:l,include:b,member:b,inGroupsOf:w,inject:r,invoke:C,max:v,min:t,partition:g,pluck:h,reject:f,sortBy:s,toArray:u,entries:u,zip:z,size:q,inspect:B,find:A}})();function $A(e){if(!e){return[]}if("toArray" in Object(e)){return e.toArray()}var d=e.length||0,b=new Array(d);while(d--){b[d]=e[d]}return b}function $w(b){if(!Object.isString(b)){return[]}b=b.strip();return b?b.split(/\s+/):[]}Array.from=Array.from||$A;(function(){var C=Array.prototype,u=C.slice,w=C.forEach;function d(I,H){for(var G=0,J=this.length>>>0;G<J;G++){if(G in this){I.call(H,this[G],G,this)}}}if(!w){w=d}function t(){this.length=0;return this}function f(){return this[0]}function l(){return this[this.length-1]}function q(){return this.select(function(G){return G!=null})}function F(){return this.inject([],function(H,G){if(Object.isArray(G)){return H.concat(G.flatten())}H.push(G);return H})}function p(){var G=u.call(arguments,0);return this.select(function(H){return !G.include(H)})}function h(G){return(G===false?this.toArray():this)._reverse()}function s(G){return this.inject([],function(J,I,H){if(0==H||(G?J.last()!=I:!J.include(I))){J.push(I)}return J})}function y(G){return this.uniq().findAll(function(H){return G.indexOf(H)!==-1})}function A(){return u.call(this,0)}function r(){return this.length}function D(){return"["+this.map(Object.inspect).join(", ")+"]"}function b(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}if(H>I){return -1}var G=H>=0?H:Math.max(I-Math.abs(H),0);for(;G<I;G++){if(G in K&&K[G]===J){return G}}return -1}function v(J,H){if(this==null){throw new TypeError()}var K=Object(this),I=K.length>>>0;if(I===0){return -1}if(!Object.isUndefined(H)){H=Number(H);if(isNaN(H)){H=0}else{if(H!==0&&isFinite(H)){H=(H>0?1:-1)*Math.floor(Math.abs(H))}}}else{H=I}var G=H>=0?Math.min(H,I-1):I-Math.abs(H);for(;G>=0;G--){if(G in K&&K[G]===J){return G}}return -1}function e(N){var L=[],M=u.call(arguments,0),O,H=0;M.unshift(this);for(var K=0,G=M.length;K<G;K++){O=M[K];if(Object.isArray(O)&&!("callee" in O)){for(var J=0,I=O.length;J<I;J++){if(J in O){L[H]=O[J]}H++}}else{L[H++]=O}}L.length=H;return L}function z(G){return function(){if(arguments.length===0){return G.call(this,Prototype.K)}else{if(arguments[0]===undefined){var H=u.call(arguments,1);H.unshift(Prototype.K);return G.apply(this,H)}else{return G.apply(this,arguments)}}}}function B(K){if(this==null){throw new TypeError()}K=K||Prototype.K;var G=Object(this);var J=[],I=arguments[1],M=0;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){J[M]=K.call(I,G[H],H,G)}M++}J.length=M;return J}if(C.map){B=z(Array.prototype.map)}function n(K){if(this==null||!Object.isFunction(K)){throw new TypeError()}var G=Object(this);var J=[],I=arguments[1],M;for(var H=0,L=G.length>>>0;H<L;H++){if(H in G){M=G[H];if(K.call(I,M,H,G)){J.push(M)}}}return J}if(C.filter){n=Array.prototype.filter}function o(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&J.call(I,G[H],H,G)){return true}}return false}if(C.some){o=z(Array.prototype.some)}function E(J){if(this==null){throw new TypeError()}J=J||Prototype.K;var I=arguments[1];var G=Object(this);for(var H=0,K=G.length>>>0;H<K;H++){if(H in G&&!J.call(I,G[H],H,G)){return false}}return true}if(C.every){E=z(Array.prototype.every)}Object.extend(C,Enumerable);if(C.entries===Enumerable.entries){delete C.entries}if(!C._reverse){C._reverse=C.reverse}Object.extend(C,{_each:w,map:B,collect:B,select:n,filter:n,findAll:n,some:o,any:o,every:E,all:E,clear:t,first:f,last:l,compact:q,flatten:F,without:p,reverse:h,uniq:s,intersect:y,clone:A,toArray:A,size:r,inspect:D});var g=(function(){return[].concat(arguments)[0][0]!==1})(1,2);if(g){C.concat=e}if(!C.indexOf){C.indexOf=b}if(!C.lastIndexOf){C.lastIndexOf=v}})();function $H(b){return new Hash(b)}var Hash=Class.create(Enumerable,(function(){function g(v){this._object=Object.isHash(v)?v.toObject():Object.clone(v)}function h(z,y){var w=0;for(var v in this._object){var A=this._object[v],B=[v,A];B.key=v;B.value=A;z.call(y,B,w);w++}}function p(v,w){return this._object[v]=w}function e(v){if(this._object[v]!==Object.prototype[v]){return this._object[v]}}function s(v){var w=this._object[v];delete this._object[v];return w}function u(){return Object.clone(this._object)}function t(){return this.pluck("key")}function r(){return this.pluck("value")}function l(w){var v=this.detect(function(y){return y.value===w});return v&&v.key}function o(v){return this.clone().update(v)}function f(v){return new Hash(v).inject(this,function(w,y){w.set(y.key,y.value);return w})}function d(v,w){if(Object.isUndefined(w)){return v}w=String.interpret(w);w=w.gsub(/(\r)?\n/,"\r\n");w=encodeURIComponent(w);w=w.gsub(/%20/,"+");return v+"="+w}function b(){return this.inject([],function(A,D){var z=encodeURIComponent(D.key),w=D.value;if(w&&typeof w=="object"){if(Object.isArray(w)){var C=[];for(var y=0,v=w.length,B;y<v;y++){B=w[y];C.push(d(z,B))}return A.concat(C)}}else{A.push(d(z,w))}return A}).join("&")}function q(){return"#<Hash:{"+this.map(function(v){return v.map(Object.inspect).join(": ")}).join(", ")+"}>"}function n(){return new Hash(this)}return{initialize:g,_each:h,set:p,get:e,unset:s,toObject:u,toTemplateReplacements:u,keys:t,values:r,index:l,merge:o,update:f,toQueryString:b,inspect:q,toJSON:u,clone:n}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function f(){return this.toPaddedString(2,16)}function d(){return this+1}function n(p,o){$R(0,this,true).each(p,o);return this}function l(q,p){var o=this.toString(p||10);return"0".times(q-o.length)+o}function b(){return Math.abs(this)}function e(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:f,succ:d,times:n,toPaddedString:l,abs:b,round:e,ceil:g,floor:h}})());function $R(e,b,d){return new ObjectRange(e,b,d)}var ObjectRange=Class.create(Enumerable,(function(){function d(h,f,g){this.start=h;this.end=f;this.exclusive=g}function e(h,g){var l=this.start,f;for(f=0;this.include(l);f++){h.call(g,l,f);l=l.succ()}}function b(f){if(f<this.start){return false}if(this.exclusive){return f<this.end}return f<=this.end}return{initialize:d,_each:e,include:b}})());var Abstract={};var Try={these:function(){var f;for(var d=0,g=arguments.length;d<g;d++){var b=arguments[d];try{f=b();break}catch(h){}}return f}};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||false},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(d,b){this.responders._each(d,b)},register:function(b){if(!this.include(b)){this.responders.push(b)}},unregister:function(b){this.responders=this.responders.without(b)},dispatch:function(f,d,e,b){this.each(function(g){if(Object.isFunction(g[f])){try{g[f].apply(g,[d,e,b])}catch(h){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(b){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,b||{});this.options.method=this.options.method.toLowerCase();if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject()}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,d,b){$super(b);this.transport=Ajax.getTransport();this.request(d)},request:function(d){this.url=d;this.method=this.options.method;var g=Object.isString(this.options.parameters)?this.options.parameters:Object.toQueryString(this.options.parameters);if(!["get","post"].include(this.method)){g+=(g?"&":"")+"_method="+this.method;this.method="post"}if(g&&this.method==="get"){this.url+=(this.url.include("?")?"&":"?")+g}this.parameters=g.toQueryParams();try{var b=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(b)}Ajax.Responders.dispatch("onCreate",this,b);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1)}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||g):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()}}catch(f){this.dispatchException(f)}},onStateChange:function(){var b=this.transport.readyState;if(b>1&&!((b==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var g={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){g["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){g.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var e=this.options.requestHeaders;if(Object.isFunction(e.push)){for(var d=0,f=e.length;d<f;d+=2){g[e[d]]=e[d+1]}}else{$H(e).each(function(h){g[h.key]=h.value})}}for(var b in g){if(g[b]!=null){this.transport.setRequestHeader(b,g[b])}}},success:function(){var b=this.getStatus();return !b||(b>=200&&b<300)||b==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(b){return 0}},respondToReadyState:function(b){var f=Ajax.Request.Events[b],d=new Ajax.Response(this);if(f=="Complete"){try{this._complete=true;(this.options["on"+d.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(d,d.headerJSON)}catch(g){this.dispatchException(g)}var h=d.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&h&&h.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+f]||Prototype.emptyFunction)(d,d.headerJSON);Ajax.Responders.dispatch("on"+f,this,d,d.headerJSON)}catch(g){this.dispatchException(g)}if(f=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var b=this.url.match(/^\s*https?:\/\/[^\/]*/);return !b||(b[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(b){try{return this.transport.getResponseHeader(b)||null}catch(d){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(b){(this.options.onException||Prototype.emptyFunction)(this,b);Ajax.Responders.dispatch("onException",this,b)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(e){this.request=e;var f=this.transport=e.transport,b=this.readyState=f.readyState;if((b>2&&!Prototype.Browser.IE)||b==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(f.responseText);this.headerJSON=this._getHeaderJSON()}if(b==4){var d=f.responseXML;this.responseXML=Object.isUndefined(d)?null:d;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(b){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(b){return null}},getResponseHeader:function(b){return this.transport.getResponseHeader(b)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var b=this.getHeader("X-JSON");if(!b){return null}try{b=decodeURIComponent(escape(b))}catch(d){}try{return b.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}},_getResponseJSON:function(){var b=this.request.options;if(!b.evalJSON||(b.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(b.sanitizeJSON||!this.request.isSameOrigin())}catch(d){this.request.dispatchException(d)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,b,e,d){this.container={success:(b.success||b),failure:(b.failure||(b.success?null:b))};d=Object.clone(d);var f=d.onComplete;d.onComplete=(function(g,h){this.updateContent(g.responseText);if(Object.isFunction(f)){f(g,h)}}).bind(this);$super(e,d)},updateContent:function(f){var e=this.container[this.success()?"success":"failure"],b=this.options;if(!b.evalScripts){f=f.stripScripts()}if(e=$(e)){if(b.insertion){if(Object.isString(b.insertion)){var d={};d[b.insertion]=f;e.insert(d)}else{b.insertion(e,f)}}else{e.update(f)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,b,e,d){$super(d);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=b;this.url=e;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(b){if(this.options.decay){this.decay=(b.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=b.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});(function(be){var aK;var a7=Array.prototype.slice;var aB=document.createElement("div");function a5(bv){if(arguments.length>1){for(var F=0,bx=[],bw=arguments.length;F<bw;F++){bx.push(a5(arguments[F]))}return bx}if(Object.isString(bv)){bv=document.getElementById(bv)}return aL.extend(bv)}be.$=a5;if(!be.Node){be.Node={}}if(!be.Node.ELEMENT_NODE){Object.extend(be.Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12})}var w={};function aW(bv,F){if(bv==="select"){return false}if("type" in F){return false}return true}var f=(function(){try{var F=document.createElement('<input name="x">');return F.tagName.toLowerCase()==="input"&&F.name==="x"}catch(bv){return false}})();var aO=be.Element;function aL(bv,F){F=F||{};bv=bv.toLowerCase();if(f&&F.name){bv="<"+bv+' name="'+F.name+'">';delete F.name;return aL.writeAttribute(document.createElement(bv),F)}if(!w[bv]){w[bv]=aL.extend(document.createElement(bv))}var bw=aW(bv,F)?w[bv].cloneNode(false):document.createElement(bv);return aL.writeAttribute(bw,F)}be.Element=aL;Object.extend(be.Element,aO||{});if(aO){be.Element.prototype=aO.prototype}aL.Methods={ByTag:{},Simulated:{}};var a9={};var N={id:"id",className:"class"};function bg(bv){bv=a5(bv);var F="<"+bv.tagName.toLowerCase();var bw,by;for(var bx in N){bw=N[bx];by=(bv[bx]||"").toString();if(by){F+=" "+bw+"="+by.inspect(true)}}return F+">"}a9.inspect=bg;function B(F){return a5(F).getStyle("display")!=="none"}function aD(bv,F){bv=a5(bv);if(typeof F!=="boolean"){F=!aL.visible(bv)}aL[F?"show":"hide"](bv);return bv}function aN(F){F=a5(F);F.style.display="none";return F}function o(F){F=a5(F);F.style.display="";return F}Object.extend(a9,{visible:B,toggle:aD,hide:aN,show:o});function aj(F){F=a5(F);F.parentNode&&F.parentNode.removeChild(F);return F}var aZ=(function(){var F=document.createElement("select"),bv=true;F.innerHTML='<option value="test">test</option>';if(F.options&&F.options[0]){bv=F.options[0].nodeName.toUpperCase()!=="OPTION"}F=null;return bv})();var O=(function(){try{var F=document.createElement("table");if(F&&F.tBodies){F.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var bw=typeof F.tBodies[0]=="undefined";F=null;return bw}}catch(bv){return true}})();var a8=(function(){try{var F=document.createElement("div");F.innerHTML="<link />";var bw=(F.childNodes.length===0);F=null;return bw}catch(bv){return true}})();var D=aZ||O||a8;var ax=(function(){var F=document.createElement("script"),bw=false;try{F.appendChild(document.createTextNode(""));bw=!F.firstChild||F.firstChild&&F.firstChild.nodeType!==3}catch(bv){bw=true}F=null;return bw})();function U(bx,bz){bx=a5(bx);var bA=bx.getElementsByTagName("*"),bw=bA.length;while(bw--){af(bA[bw])}if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){return bx.update().insert(bz)}bz=Object.toHTML(bz);var bv=bx.tagName.toUpperCase();if(bv==="SCRIPT"&&ax){bx.text=bz;return bx}if(D){if(bv in R.tags){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts());for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{if(a8&&Object.isString(bz)&&bz.indexOf("<link")>-1){while(bx.firstChild){bx.removeChild(bx.firstChild)}var F=z(bv,bz.stripScripts(),true);for(var bw=0,by;by=F[bw];bw++){bx.appendChild(by)}}else{bx.innerHTML=bz.stripScripts()}}}else{bx.innerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bx}function an(bv,bw){bv=a5(bv);if(bw&&bw.toElement){bw=bw.toElement()}else{if(!Object.isElement(bw)){bw=Object.toHTML(bw);var F=bv.ownerDocument.createRange();F.selectNode(bv);bw.evalScripts.bind(bw).defer();bw=F.createContextualFragment(bw.stripScripts())}}bv.parentNode.replaceChild(bw,bv);return bv}var R={before:function(F,bv){F.parentNode.insertBefore(bv,F)},top:function(F,bv){F.insertBefore(bv,F.firstChild)},bottom:function(F,bv){F.appendChild(bv)},after:function(F,bv){F.parentNode.insertBefore(bv,F.nextSibling)},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};var aP=R.tags;Object.extend(aP,{THEAD:aP.TBODY,TFOOT:aP.TBODY,TH:aP.TD});function av(bw,bz){bw=a5(bw);if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bw.parentNode.replaceChild(bz,bw);return bw}bz=Object.toHTML(bz);var by=bw.parentNode,bv=by.tagName.toUpperCase();if(bv in R.tags){var bA=aL.next(bw);var F=z(bv,bz.stripScripts());by.removeChild(bw);var bx;if(bA){bx=function(bB){by.insertBefore(bB,bA)}}else{bx=function(bB){by.appendChild(bB)}}F.each(bx)}else{bw.outerHTML=bz.stripScripts()}bz.evalScripts.bind(bz).defer();return bw}if("outerHTML" in document.documentElement){an=av}function bd(F){if(Object.isUndefined(F)||F===null){return false}if(Object.isString(F)||Object.isNumber(F)){return true}if(Object.isElement(F)){return true}if(F.toElement||F.toHTML){return true}return false}function bt(bx,bz,F){F=F.toLowerCase();var bB=R[F];if(bz&&bz.toElement){bz=bz.toElement()}if(Object.isElement(bz)){bB(bx,bz);return bx}bz=Object.toHTML(bz);var bw=((F==="before"||F==="after")?bx.parentNode:bx).tagName.toUpperCase();var bA=z(bw,bz.stripScripts());if(F==="top"||F==="after"){bA.reverse()}for(var bv=0,by;by=bA[bv];bv++){bB(bx,by)}bz.evalScripts.bind(bz).defer()}function W(bv,bw){bv=a5(bv);if(bd(bw)){bw={bottom:bw}}for(var F in bw){bt(bv,bw[F],F)}return bv}function A(bv,bw,F){bv=a5(bv);if(Object.isElement(bw)){a5(bw).writeAttribute(F||{})}else{if(Object.isString(bw)){bw=new aL(bw,F)}else{bw=new aL("div",bw)}}if(bv.parentNode){bv.parentNode.replaceChild(bw,bv)}bw.appendChild(bv);return bw}function C(bv){bv=a5(bv);var bw=bv.firstChild;while(bw){var F=bw.nextSibling;if(bw.nodeType===Node.TEXT_NODE&&!/\S/.test(bw.nodeValue)){bv.removeChild(bw)}bw=F}return bv}function ba(F){return a5(F).innerHTML.blank()}function z(by,bx,bz){var bw=R.tags[by],bA=aB;var F=!!bw;if(!F&&bz){F=true;bw=["","",0]}if(F){bA.innerHTML=" "+bw[0]+bx+bw[1];bA.removeChild(bA.firstChild);for(var bv=bw[2];bv--;){bA=bA.firstChild}}else{bA.innerHTML=bx}return $A(bA.childNodes)}function L(bw,F){if(!(bw=a5(bw))){return}var by=bw.cloneNode(F);if(!a4){by._prototypeUID=aK;if(F){var bx=aL.select(by,"*"),bv=bx.length;while(bv--){bx[bv]._prototypeUID=aK}}}return aL.extend(by)}function af(bv){var F=S(bv);if(F){aL.stopObserving(bv);if(!a4){bv._prototypeUID=aK}delete aL.Storage[F]}}function br(bv){var F=bv.length;while(F--){af(bv[F])}}function az(bx){var bw=bx.length,bv,F;while(bw--){bv=bx[bw];F=S(bv);delete aL.Storage[F];delete Event.cache[F]}}if(a4){br=az}function r(bv){if(!(bv=a5(bv))){return}af(bv);var bw=bv.getElementsByTagName("*"),F=bw.length;while(F--){af(bw[F])}return null}Object.extend(a9,{remove:aj,update:U,replace:an,insert:W,wrap:A,cleanWhitespace:C,empty:ba,clone:L,purge:r});function at(F,bw,bx){F=a5(F);bx=bx||-1;var bv=[];while(F=F[bw]){if(F.nodeType===Node.ELEMENT_NODE){bv.push(aL.extend(F))}if(bv.length===bx){break}}return bv}function aR(F){return at(F,"parentNode")}function bs(F){return aL.select(F,"*")}function ad(F){F=a5(F).firstChild;while(F&&F.nodeType!==Node.ELEMENT_NODE){F=F.nextSibling}return a5(F)}function bo(bv){var F=[],bw=a5(bv).firstChild;while(bw){if(bw.nodeType===Node.ELEMENT_NODE){F.push(aL.extend(bw))}bw=bw.nextSibling}return F}function u(F){return at(F,"previousSibling")}function bn(F){return at(F,"nextSibling")}function a1(F){F=a5(F);var bw=u(F),bv=bn(F);return bw.reverse().concat(bv)}function aX(bv,F){bv=a5(bv);if(Object.isString(F)){return Prototype.Selector.match(bv,F)}return F.match(bv)}function a2(bv,bw,bx,F){bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx=null}while(bv=bv[bw]){if(bv.nodeType!==1){continue}if(bx&&!Prototype.Selector.match(bv,bx)){continue}if(--F>=0){continue}return aL.extend(bv)}}function ag(bv,bw,F){bv=a5(bv);if(arguments.length===1){return a5(bv.parentNode)}return a2(bv,"parentNode",bw,F)}function E(bv,bx,F){if(arguments.length===1){return ad(bv)}bv=a5(bv),bx=bx||0,F=F||0;if(Object.isNumber(bx)){F=bx,bx="*"}var bw=Prototype.Selector.select(bx,bv)[F];return aL.extend(bw)}function n(bv,bw,F){return a2(bv,"previousSibling",bw,F)}function aH(bv,bw,F){return a2(bv,"nextSibling",bw,F)}function bh(F){F=a5(F);var bv=a7.call(arguments,1).join(", ");return Prototype.Selector.select(bv,F)}function aJ(bw){bw=a5(bw);var by=a7.call(arguments,1).join(", ");var bz=aL.siblings(bw),bv=[];for(var F=0,bx;bx=bz[F];F++){if(Prototype.Selector.match(bx,by)){bv.push(bx)}}return bv}function K(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}while(bv=bv.parentNode){if(bv===F){return true}}return false}function I(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}if(!F.contains){return K(bv,F)}return F.contains(bv)&&F!==bv}function P(bv,F){bv=a5(bv),F=a5(F);if(!bv||!F){return false}return(bv.compareDocumentPosition(F)&8)===8}var aS;if(aB.compareDocumentPosition){aS=P}else{if(aB.contains){aS=I}else{aS=K}}Object.extend(a9,{recursivelyCollect:at,ancestors:aR,descendants:bs,firstDescendant:ad,immediateDescendants:bo,previousSiblings:u,nextSiblings:bn,siblings:a1,match:aX,up:ag,down:E,previous:n,next:aH,select:bh,adjacent:aJ,descendantOf:aS,getElementsBySelector:bh,childElements:bo});var Z=1;function a0(F){F=a5(F);var bv=aL.readAttribute(F,"id");if(bv){return bv}do{bv="anonymous_element_"+Z++}while(a5(bv));aL.writeAttribute(F,"id",bv);return bv}function bf(bv,F){return a5(bv).getAttribute(F)}function Q(bv,F){bv=a5(bv);var bw=aM.read;if(bw.values[F]){return bw.values[F](bv,F)}if(bw.names[F]){F=bw.names[F]}if(F.include(":")){if(!bv.attributes||!bv.attributes[F]){return null}return bv.attributes[F].value}return bv.getAttribute(F)}function g(bv,F){if(F==="title"){return bv.title}return bv.getAttribute(F)}var aa=(function(){aB.setAttribute("onclick",[]);var F=aB.getAttribute("onclick");var bv=Object.isArray(F);aB.removeAttribute("onclick");return bv});if(Prototype.Browser.IE&&aa()){bf=Q}else{if(Prototype.Browser.Opera){bf=g}}function a6(bx,bw,bz){bx=a5(bx);var bv={},by=aM.write;if(typeof bw==="object"){bv=bw}else{bv[bw]=Object.isUndefined(bz)?true:bz}for(var F in bv){bw=by.names[F]||F;bz=bv[F];if(by.values[F]){bz=by.values[F](bx,bz);if(Object.isUndefined(bz)){continue}}if(bz===false||bz===null){bx.removeAttribute(bw)}else{if(bz===true){bx.setAttribute(bw,bw)}else{bx.setAttribute(bw,bz)}}}return bx}var b=(function(){if(!f){return false}var bv=document.createElement('<input type="checkbox">');bv.checked=true;var F=bv.getAttributeNode("checked");return !F||!F.specified})();function ae(F,bw){bw=aM.has[bw]||bw;var bv=a5(F).getAttributeNode(bw);return !!(bv&&bv.specified)}function bm(F,bv){if(bv==="checked"){return F.checked}return ae(F,bv)}be.Element.Methods.Simulated.hasAttribute=b?bm:ae;function p(F){return new aL.ClassNames(F)}var ab={};function h(bv){if(ab[bv]){return ab[bv]}var F=new RegExp("(^|\\s+)"+bv+"(\\s+|$)");ab[bv]=F;return F}function ar(F,bv){if(!(F=a5(F))){return}var bw=F.className;if(bw.length===0){return false}if(bw===bv){return true}return h(bv).test(bw)}function t(F,bv){if(!(F=a5(F))){return}if(!ar(F,bv)){F.className+=(F.className?" ":"")+bv}return F}function aA(F,bv){if(!(F=a5(F))){return}F.className=F.className.replace(h(bv)," ").strip();return F}function ak(bv,bw,F){if(!(bv=a5(bv))){return}if(Object.isUndefined(F)){F=!ar(bv,bw)}var bx=aL[F?"addClassName":"removeClassName"];return bx(bv,bw)}var aM={};var aV="className",ay="for";aB.setAttribute(aV,"x");if(aB.className!=="x"){aB.setAttribute("class","x");if(aB.className==="x"){aV="class"}}var aQ=document.createElement("label");aQ.setAttribute(ay,"x");if(aQ.htmlFor!=="x"){aQ.setAttribute("htmlFor","x");if(aQ.htmlFor==="x"){ay="htmlFor"}}aQ=null;function ai(F,bv){return F.getAttribute(bv)}function l(F,bv){return F.getAttribute(bv,2)}function H(F,bw){var bv=F.getAttributeNode(bw);return bv?bv.value:""}function bp(F,bv){return a5(F).hasAttribute(bv)?bv:null}aB.onclick=Prototype.emptyFunction;var V=aB.getAttribute("onclick");var aC;if(String(V).indexOf("{")>-1){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}bw=bw.toString();bw=bw.split("{")[1];bw=bw.split("}")[0];return bw.strip()}}else{if(V===""){aC=function(F,bv){var bw=F.getAttribute(bv);if(!bw){return null}return bw.strip()}}}aM.read={names:{"class":aV,className:aV,"for":ay,htmlFor:ay},values:{style:function(F){return F.style.cssText.toLowerCase()},title:function(F){return F.title}}};aM.write={names:{className:"class",htmlFor:"for",cellpadding:"cellPadding",cellspacing:"cellSpacing"},values:{checked:function(F,bv){bv=!!bv;F.checked=bv;return bv?"checked":null},style:function(F,bv){F.style.cssText=bv?bv:""}}};aM.has={names:{}};Object.extend(aM.write.names,aM.read.names);var bc=$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");for(var al=0,am;am=bc[al];al++){aM.write.names[am.toLowerCase()]=am;aM.has.names[am.toLowerCase()]=am}Object.extend(aM.read.values,{href:l,src:l,type:ai,action:H,disabled:bp,checked:bp,readonly:bp,multiple:bp,onload:aC,onunload:aC,onclick:aC,ondblclick:aC,onmousedown:aC,onmouseup:aC,onmouseover:aC,onmousemove:aC,onmouseout:aC,onfocus:aC,onblur:aC,onkeypress:aC,onkeydown:aC,onkeyup:aC,onsubmit:aC,onreset:aC,onselect:aC,onchange:aC});Object.extend(a9,{identify:a0,readAttribute:bf,writeAttribute:a6,classNames:p,hasClassName:ar,addClassName:t,removeClassName:aA,toggleClassName:ak});function ac(F){if(F==="float"||F==="styleFloat"){return"cssFloat"}return F.camelize()}function bu(F){if(F==="float"||F==="cssFloat"){return"styleFloat"}return F.camelize()}function J(bw,bx){bw=a5(bw);var bA=bw.style,bv;if(Object.isString(bx)){bA.cssText+=";"+bx;if(bx.include("opacity")){var F=bx.match(/opacity:\s*(\d?\.?\d*)/)[1];aL.setOpacity(bw,F)}return bw}for(var bz in bx){if(bz==="opacity"){aL.setOpacity(bw,bx[bz])}else{var by=bx[bz];if(bz==="float"||bz==="cssFloat"){bz=Object.isUndefined(bA.styleFloat)?"cssFloat":"styleFloat"}bA[bz]=by}}return bw}function aU(bv,bw){bv=a5(bv);bw=ac(bw);var bx=bv.style[bw];if(!bx||bx==="auto"){var F=document.defaultView.getComputedStyle(bv,null);bx=F?F[bw]:null}if(bw==="opacity"){return bx?parseFloat(bx):1}return bx==="auto"?null:bx}function y(F,bv){switch(bv){case"height":case"width":if(!aL.visible(F)){return null}var bw=parseInt(aU(F,bv),10);if(bw!==F["offset"+bv.capitalize()]){return bw+"px"}return aL.measure(F,bv);default:return aU(F,bv)}}function ap(F,bv){F=a5(F);bv=bu(bv);var bw=F.style[bv];if(!bw&&F.currentStyle){bw=F.currentStyle[bv]}if(bv==="opacity"){if(!T){return bk(F)}else{return bw?parseFloat(bw):1}}if(bw==="auto"){if((bv==="width"||bv==="height")&&aL.visible(F)){return aL.measure(F,bv)+"px"}return null}return bw}function aG(F){return(F||"").replace(/alpha\([^\)]*\)/gi,"")}function ah(F){if(!F.currentStyle||!F.currentStyle.hasLayout){F.style.zoom=1}return F}var T=(function(){aB.style.cssText="opacity:.55";return/^0.55/.test(aB.style.opacity)})();function G(F,bv){F=a5(F);if(bv==1||bv===""){bv=""}else{if(bv<0.00001){bv=0}}F.style.opacity=bv;return F}function bl(F,bx){if(T){return G(F,bx)}F=ah(a5(F));var bw=aL.getStyle(F,"filter"),bv=F.style;if(bx==1||bx===""){bw=aG(bw);if(bw){bv.filter=bw}else{bv.removeAttribute("filter")}return F}if(bx<0.00001){bx=0}bv.filter=aG(bw)+" alpha(opacity="+(bx*100)+")";return F}function bj(F){return aL.getStyle(F,"opacity")}function bk(bv){if(T){return bj(bv)}var bw=aL.getStyle(bv,"filter");if(bw.length===0){return 1}var F=(bw||"").match(/alpha\(opacity=(.*)\)/i);if(F&&F[1]){return parseFloat(F[1])/100}return 1}Object.extend(a9,{setStyle:J,getStyle:aU,setOpacity:G,getOpacity:bj});if("styleFloat" in aB.style){a9.getStyle=ap;a9.setOpacity=bl;a9.getOpacity=bk}var q=0;be.Element.Storage={UID:1};function S(F){if(F===window){return 0}if(typeof F._prototypeUID==="undefined"){F._prototypeUID=aL.Storage.UID++}return F._prototypeUID}function e(F){if(F===window){return 0}if(F==document){return 1}return F.uniqueID}var a4=("uniqueID" in aB);if(a4){S=e}function d(bv){if(!(bv=a5(bv))){return}var F=S(bv);if(!aL.Storage[F]){aL.Storage[F]=$H()}return aL.Storage[F]}function bb(bv,F,bw){if(!(bv=a5(bv))){return}var bx=d(bv);if(arguments.length===2){bx.update(F)}else{bx.set(F,bw)}return bv}function aT(bw,bv,F){if(!(bw=a5(bw))){return}var by=d(bw),bx=by.get(bv);if(Object.isUndefined(bx)){by.set(bv,F);bx=F}return bx}Object.extend(a9,{getStorage:d,store:bb,retrieve:aT});var au={},a3=aL.Methods.ByTag,aI=Prototype.BrowserFeatures;if(!aI.ElementExtensions&&("__proto__" in aB)){be.HTMLElement={};be.HTMLElement.prototype=aB.__proto__;aI.ElementExtensions=true}function bi(F){if(typeof window.Element==="undefined"){return false}if(!f){return false}var bw=window.Element.prototype;if(bw){var by="_"+(Math.random()+"").slice(2),bv=document.createElement(F);bw[by]="x";var bx=(bv[by]!=="x");delete bw[by];bv=null;return bx}return false}var aw=bi("object");function aq(bv,F){for(var bx in F){var bw=F[bx];if(Object.isFunction(bw)&&!(bx in bv)){bv[bx]=bw.methodize()}}}var bq={};function aE(bv){var F=S(bv);return(F in bq)}function aF(bw){if(!bw||aE(bw)){return bw}if(bw.nodeType!==Node.ELEMENT_NODE||bw==window){return bw}var F=Object.clone(au),bv=bw.tagName.toUpperCase();if(a3[bv]){Object.extend(F,a3[bv])}aq(bw,F);bq[S(bw)]=true;return bw}function aY(bv){if(!bv||aE(bv)){return bv}var F=bv.tagName;if(F&&(/^(?:object|applet|embed)$/i.test(F))){aq(bv,aL.Methods);aq(bv,aL.Methods.Simulated);aq(bv,aL.Methods.ByTag[F.toUpperCase()])}return bv}if(aI.SpecificElementExtensions){aF=aw?aY:Prototype.K}function Y(bv,F){bv=bv.toUpperCase();if(!a3[bv]){a3[bv]={}}Object.extend(a3[bv],F)}function v(bv,bw,F){if(Object.isUndefined(F)){F=false}for(var by in bw){var bx=bw[by];if(!Object.isFunction(bx)){continue}if(!F||!(by in bv)){bv[by]=bx.methodize()}}}function ao(bx){var F;var bw={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(bw[bx]){F="HTML"+bw[bx]+"Element"}if(window[F]){return window[F]}F="HTML"+bx+"Element";if(window[F]){return window[F]}F="HTML"+bx.capitalize()+"Element";if(window[F]){return window[F]}var bv=document.createElement(bx),by=bv.__proto__||bv.constructor.prototype;bv=null;return by}function X(bx){if(arguments.length===0){M()}if(arguments.length===2){var bz=bx;bx=arguments[1]}if(!bz){Object.extend(aL.Methods,bx||{})}else{if(Object.isArray(bz)){for(var by=0,bw;bw=bz[by];by++){Y(bw,bx)}}else{Y(bz,bx)}}var bv=window.HTMLElement?HTMLElement.prototype:aL.prototype;if(aI.ElementExtensions){v(bv,aL.Methods);v(bv,aL.Methods.Simulated,true)}if(aI.SpecificElementExtensions){for(var bw in aL.Methods.ByTag){var F=ao(bw);if(Object.isUndefined(F)){continue}v(F.prototype,a3[bw])}}Object.extend(aL,aL.Methods);Object.extend(aL,aL.Methods.Simulated);delete aL.ByTag;delete aL.Simulated;aL.extend.refresh();w={}}Object.extend(be.Element,{extend:aF,addMethods:X});if(aF===Prototype.K){be.Element.extend.refresh=Prototype.emptyFunction}else{be.Element.extend.refresh=function(){if(Prototype.BrowserFeatures.ElementExtensions){return}Object.extend(au,aL.Methods);Object.extend(au,aL.Methods.Simulated);bq={}}}function M(){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(aL.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}aL.addMethods(a9);function s(){aB=null;w=null}if(window.attachEvent){window.attachEvent("onunload",s)}})(this);(function(){function q(N){var M=N.match(/^(\d+)%?$/i);if(!M){return null}return(Number(M[1])/100)}function F(N,O){N=$(N);var P=N.style[O];if(!P||P==="auto"){var M=document.defaultView.getComputedStyle(N,null);P=M?M[O]:null}if(O==="opacity"){return P?parseFloat(P):1}return P==="auto"?null:P}function I(M,N){var O=M.style[N];if(!O&&M.currentStyle){O=M.currentStyle[N]}return O}function y(O,N){var Q=O.offsetWidth;var S=B(O,"borderLeftWidth",N)||0;var M=B(O,"borderRightWidth",N)||0;var P=B(O,"paddingLeft",N)||0;var R=B(O,"paddingRight",N)||0;return Q-S-M-P-R}if(!Object.isUndefined(document.documentElement.currentStyle)&&!Prototype.Browser.Opera){F=I}function B(W,X,N){var Q=null;if(Object.isElement(W)){Q=W;W=F(Q,X)}if(W===null||Object.isUndefined(W)){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(W)){return window.parseFloat(W)}var R=W.include("%"),O=(N===document.viewport);if(/\d/.test(W)&&Q&&Q.runtimeStyle&&!(R&&O)){var M=Q.style.left,V=Q.runtimeStyle.left;Q.runtimeStyle.left=Q.currentStyle.left;Q.style.left=W||0;W=Q.style.pixelLeft;Q.style.left=M;Q.runtimeStyle.left=V;return W}if(Q&&R){N=N||Q.parentNode;var P=q(W),S=null;var U=X.include("left")||X.include("right")||X.include("width");var T=X.include("top")||X.include("bottom")||X.include("height");if(N===document.viewport){if(U){S=document.viewport.getWidth()}else{if(T){S=document.viewport.getHeight()}}}else{if(U){S=$(N).measure("width")}else{if(T){S=$(N).measure("height")}}}return(S===null)?0:S*P}return 0}function p(M){if(Object.isString(M)&&M.endsWith("px")){return M}return M+"px"}function s(M){while(M&&M.parentNode){var N=M.getStyle("display");if(N==="none"){return false}M=$(M.parentNode)}return true}var l=Prototype.K;if("currentStyle" in document.documentElement){l=function(M){if(!M.currentStyle.hasLayout){M.style.zoom=1}return M}}function o(M){if(M.include("border")){M=M+"-width"}return M.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,N,M){$super();this.element=$(N);Element.Layout.PROPERTIES.each(function(O){this._set(O,null)},this);if(M){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(N,M){return Hash.prototype.set.call(this,N,M)},set:function(N,M){throw"Properties of Element.Layout are read-only."},get:function($super,N){var M=$super(N);return M===null?this._compute(N):M},_begin:function(){if(this._isPrepared()){return}var Q=this.element;if(s(Q)){this._setPrepared(true);return}var S={position:Q.style.position||"",width:Q.style.width||"",visibility:Q.style.visibility||"",display:Q.style.display||""};Q.store("prototype_original_styles",S);var T=F(Q,"position"),M=Q.offsetWidth;if(M===0||M===null){Q.style.display="block";M=Q.offsetWidth}var N=(T==="fixed")?document.viewport:Q.parentNode;var U={visibility:"hidden",display:"block"};if(T!=="fixed"){U.position="absolute"}Q.setStyle(U);var O=Q.offsetWidth,P;if(M&&(O===M)){P=y(Q,N)}else{if(T==="absolute"||T==="fixed"){P=y(Q,N)}else{var V=Q.parentNode,R=$(V).getLayout();P=R.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}Q.setStyle({width:P+"px"});this._setPrepared(true)},_end:function(){var N=this.element;var M=N.retrieve("prototype_original_styles");N.store("prototype_original_styles",null);N.setStyle(M);this._setPrepared(false)},_compute:function(N){var M=Element.Layout.COMPUTATIONS;if(!(N in M)){throw"Property not found."}return this._set(N,M[N].call(this,this.element))},_isPrepared:function(){return this.element.retrieve("prototype_element_layout_prepared",false)},_setPrepared:function(M){return this.element.store("prototype_element_layout_prepared",M)},toObject:function(){var M=$A(arguments);var N=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var O={};N.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){O[P]=Q}},this);return O},toHash:function(){var M=this.toObject.apply(this,arguments);return new Hash(M)},toCSS:function(){var M=$A(arguments);var O=(M.length===0)?Element.Layout.PROPERTIES:M.join(" ").split(" ");var N={};O.each(function(P){if(!Element.Layout.PROPERTIES.include(P)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(P)){return}var Q=this.get(P);if(Q!=null){N[o(P)]=Q+"px"}},this);return N},inspect:function(){return"#<Element.Layout>"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(O){if(!this._preComputing){this._begin()}var M=this.get("border-box-height");if(M<=0){if(!this._preComputing){this._end()}return 0}var P=this.get("border-top"),N=this.get("border-bottom");var R=this.get("padding-top"),Q=this.get("padding-bottom");if(!this._preComputing){this._end()}return M-P-N-R-Q},width:function(O){if(!this._preComputing){this._begin()}var N=this.get("border-box-width");if(N<=0){if(!this._preComputing){this._end()}return 0}var R=this.get("border-left"),M=this.get("border-right");var P=this.get("padding-left"),Q=this.get("padding-right");if(!this._preComputing){this._end()}return N-R-M-P-Q},"padding-box-height":function(N){var M=this.get("height"),P=this.get("padding-top"),O=this.get("padding-bottom");return M+P+O},"padding-box-width":function(M){var N=this.get("width"),O=this.get("padding-left"),P=this.get("padding-right");return N+O+P},"border-box-height":function(N){if(!this._preComputing){this._begin()}var M=N.offsetHeight;if(!this._preComputing){this._end()}return M},"border-box-width":function(M){if(!this._preComputing){this._begin()}var N=M.offsetWidth;if(!this._preComputing){this._end()}return N},"margin-box-height":function(N){var M=this.get("border-box-height"),O=this.get("margin-top"),P=this.get("margin-bottom");if(M<=0){return 0}return M+O+P},"margin-box-width":function(O){var N=this.get("border-box-width"),P=this.get("margin-left"),M=this.get("margin-right");if(N<=0){return 0}return N+P+M},top:function(M){var N=M.positionedOffset();return N.top},bottom:function(M){var P=M.positionedOffset(),N=M.getOffsetParent(),O=N.measure("height");var Q=this.get("border-box-height");return O-Q-P.top},left:function(M){var N=M.positionedOffset();return N.left},right:function(O){var Q=O.positionedOffset(),P=O.getOffsetParent(),M=P.measure("width");var N=this.get("border-box-width");return M-N-Q.left},"padding-top":function(M){return B(M,"paddingTop")},"padding-bottom":function(M){return B(M,"paddingBottom")},"padding-left":function(M){return B(M,"paddingLeft")},"padding-right":function(M){return B(M,"paddingRight")},"border-top":function(M){return B(M,"borderTopWidth")},"border-bottom":function(M){return B(M,"borderBottomWidth")},"border-left":function(M){return B(M,"borderLeftWidth")},"border-right":function(M){return B(M,"borderRightWidth")},"margin-top":function(M){return B(M,"marginTop")},"margin-bottom":function(M){return B(M,"marginBottom")},"margin-left":function(M){return B(M,"marginLeft")},"margin-right":function(M){return B(M,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.right-P.right).round()},bottom:function(N){var O=l(N.getOffsetParent());var P=N.getBoundingClientRect(),M=O.getBoundingClientRect();return(M.bottom-P.bottom).round()}})}Element.Offset=Class.create({initialize:function(N,M){this.left=N.round();this.top=M.round();this[0]=this.left;this[1]=this.top},relativeTo:function(M){return new Element.Offset(this.left-M.left,this.top-M.top)},inspect:function(){return"#<Element.Offset left: #{left} top: #{top}>".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function G(N,M){return new Element.Layout(N,M)}function f(M,N){return $(M).getLayout().get(N)}function w(M){return Element.getDimensions(M).height}function e(M){return Element.getDimensions(M).width}function z(N){N=$(N);var R=Element.getStyle(N,"display");if(R&&R!=="none"){return{width:N.offsetWidth,height:N.offsetHeight}}var O=N.style;var M={visibility:O.visibility,position:O.position,display:O.display};var Q={visibility:"hidden",display:"block"};if(M.position!=="fixed"){Q.position="absolute"}Element.setStyle(N,Q);var P={width:N.offsetWidth,height:N.offsetHeight};Element.setStyle(N,M);return P}function v(M){M=$(M);function O(P){return t(P)?$(document.body):$(P)}if(n(M)||h(M)||u(M)||t(M)){return $(document.body)}var N=(Element.getStyle(M,"display")==="inline");if(!N&&M.offsetParent){return O(M.offsetParent)}while((M=M.parentNode)&&M!==document.body){if(Element.getStyle(M,"position")!=="static"){return O(M)}}return $(document.body)}function J(N){N=$(N);var M=0,O=0;if(N.parentNode){do{M+=N.offsetTop||0;O+=N.offsetLeft||0;N=N.offsetParent}while(N)}return new Element.Offset(O,M)}function D(N){N=$(N);var O=N.getLayout();var M=0,Q=0;do{M+=N.offsetTop||0;Q+=N.offsetLeft||0;N=N.offsetParent;if(N){if(u(N)){break}var P=Element.getStyle(N,"position");if(P!=="static"){break}}}while(N);Q-=O.get("margin-left");M-=O.get("margin-top");return new Element.Offset(Q,M)}function d(N){var M=0,O=0;do{if(N===document.body){var P=document.documentElement||document.body.parentNode||document.body;M+=!Object.isUndefined(window.pageYOffset)?window.pageYOffset:P.scrollTop||0;O+=!Object.isUndefined(window.pageXOffset)?window.pageXOffset:P.scrollLeft||0;break}else{M+=N.scrollTop||0;O+=N.scrollLeft||0;N=N.parentNode}}while(N);return new Element.Offset(O,M)}function H(Q){var M=0,P=0,O=document.body;Q=$(Q);var N=Q;do{M+=N.offsetTop||0;P+=N.offsetLeft||0;if(N.offsetParent==O&&Element.getStyle(N,"position")=="absolute"){break}}while(N=N.offsetParent);N=Q;do{if(N!=O){M-=N.scrollTop||0;P-=N.scrollLeft||0}}while(N=N.parentNode);return new Element.Offset(P,M)}function E(M){M=$(M);if(Element.getStyle(M,"position")==="absolute"){return M}var Q=v(M);var P=M.viewportOffset(),N=Q.viewportOffset();var R=P.relativeTo(N);var O=M.getLayout();M.store("prototype_absolutize_original_styles",{position:M.getStyle("position"),left:M.getStyle("left"),top:M.getStyle("top"),width:M.getStyle("width"),height:M.getStyle("height")});M.setStyle({position:"absolute",top:R.top+"px",left:R.left+"px",width:O.get("width")+"px",height:O.get("height")+"px"});return M}function r(N){N=$(N);if(Element.getStyle(N,"position")==="relative"){return N}var M=N.retrieve("prototype_absolutize_original_styles");if(M){N.setStyle(M)}return N}function b(M){M=$(M);var N=Element.cumulativeOffset(M);window.scrollTo(N.left,N.top);return M}function C(N){N=$(N);var M=Element.getStyle(N,"position"),O={};if(M==="static"||!M){O.position="relative";if(Prototype.Browser.Opera){O.top=0;O.left=0}Element.setStyle(N,O);Element.store(N,"prototype_made_positioned",true)}return N}function A(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_positioned");if(N){O.unset("prototype_made_positioned");Element.setStyle(M,{position:"",top:"",bottom:"",left:"",right:""})}return M}function g(N){N=$(N);var P=Element.getStorage(N),M=P.get("prototype_made_clipping");if(Object.isUndefined(M)){var O=Element.getStyle(N,"overflow");P.set("prototype_made_clipping",O);if(O!=="hidden"){N.style.overflow="hidden"}}return N}function K(M){M=$(M);var O=Element.getStorage(M),N=O.get("prototype_made_clipping");if(!Object.isUndefined(N)){O.unset("prototype_made_clipping");M.style.overflow=N||""}return M}function L(P,M,X){X=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},X||{});var O=document.documentElement;M=$(M);P=$(P);var N,V,R,W={};if(X.setLeft||X.setTop){N=Element.viewportOffset(M);V=[0,0];if(Element.getStyle(P,"position")==="absolute"){var U=Element.getOffsetParent(P);if(U!==document.body){V=Element.viewportOffset(U)}}}function S(){var Y=0,Z=0;if(Object.isNumber(window.pageXOffset)){Y=window.pageXOffset;Z=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){Y=document.body.scrollLeft;Z=document.body.scrollTop}else{if(O&&(O.scrollLeft||O.scrollTop)){Y=O.scrollLeft;Z=O.scrollTop}}}return{x:Y,y:Z}}var Q=S();if(X.setWidth||X.setHeight){R=Element.getLayout(M)}if(X.setLeft){W.left=(N[0]+Q.x-V[0]+X.offsetLeft)+"px"}if(X.setTop){W.top=(N[1]+Q.y-V[1]+X.offsetTop)+"px"}var T=P.getLayout();if(X.setWidth){W.width=R.get("width")+"px"}if(X.setHeight){W.height=R.get("height")+"px"}return Element.setStyle(P,W)}if(Prototype.Browser.IE){v=v.wrap(function(O,N){N=$(N);if(n(N)||h(N)||u(N)||t(N)){return $(document.body)}var M=N.getStyle("position");if(M!=="static"){return O(N)}N.setStyle({position:"relative"});var P=O(N);N.setStyle({position:M});return P});D=D.wrap(function(P,N){N=$(N);if(!N.parentNode){return new Element.Offset(0,0)}var M=N.getStyle("position");if(M!=="static"){return P(N)}var O=N.getOffsetParent();if(O&&O.getStyle("position")==="fixed"){l(O)}N.setStyle({position:"relative"});var Q=P(N);N.setStyle({position:M});return Q})}else{if(Prototype.Browser.Webkit){J=function(N){N=$(N);var M=0,O=0;do{M+=N.offsetTop||0;O+=N.offsetLeft||0;if(N.offsetParent==document.body){if(Element.getStyle(N,"position")=="absolute"){break}}N=N.offsetParent}while(N);return new Element.Offset(O,M)}}}Element.addMethods({getLayout:G,measure:f,getWidth:e,getHeight:w,getDimensions:z,getOffsetParent:v,cumulativeOffset:J,positionedOffset:D,cumulativeScrollOffset:d,viewportOffset:H,absolutize:E,relativize:r,scrollTo:b,makePositioned:C,undoPositioned:A,makeClipping:g,undoClipping:K,clonePosition:L});function u(M){return M.nodeName.toUpperCase()==="BODY"}function t(M){return M.nodeName.toUpperCase()==="HTML"}function n(M){return M.nodeType===Node.DOCUMENT_NODE}function h(M){return M!==document.body&&!Element.descendantOf(M,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(M){M=$(M);if(h(M)){return new Element.Offset(0,0)}var N=M.getBoundingClientRect(),O=document.documentElement;return new Element.Offset(N.left-O.clientLeft,N.top-O.clientTop)}})}})();(function(){var e=Prototype.Browser.Opera&&(window.parseFloat(window.opera.version())<9.5);var h=null;function d(){if(h){return h}h=e?document.body:document.documentElement;return h}function f(){return{width:this.getWidth(),height:this.getHeight()}}function b(){return d().clientWidth}function l(){return d().clientHeight}function g(){var n=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft;var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;return new Element.Offset(n,o)}document.viewport={getDimensions:f,getWidth:b,getHeight:l,getScrollOffsets:g}})();window.$$=function(){var b=$A(arguments).join(", ");return Prototype.Selector.select(b,document)};Prototype.Selector=(function(){function b(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function e(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function f(q,r,n){n=n||0;var l=Prototype.Selector.match,p=q.length,h=0,o;for(o=0;o<p;o++){if(l(q[o],r)&&n==h++){return Element.extend(q[o])}}}function g(n){for(var h=0,l=n.length;h<l;h++){Element.extend(n[h])}return n}var d=Prototype.K;return{select:b,match:e,find:f,extendElements:(Element.extend===d)?d:g,extendElement:Element.extend}})();Prototype._original_property=window.Sizzle;(function(){function b(d){Prototype._actual_sizzle=d()}b.amd=true;if(typeof define!=="undefined"&&define.amd){Prototype._original_define=define;Prototype._actual_sizzle=null;window.define=b}})(); /*! * Sizzle CSS Selector Engine v1.10.18 * http://sizzlejs.com/ From 66ec14220460217dcdba069024c27cf5b4a12b17 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 24 Oct 2024 10:43:41 +0530 Subject: [PATCH 387/460] ACQE-6966 | [MFTF PR TESTS] StorefrontCashOnDeliveryPaymentForSpecificCountryTest Test Fix --- .../StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml index 1cc873d325c39..268799c9bed0d 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml @@ -18,8 +18,6 @@ <testCaseId value="AC-3216"/> <useCaseId value="ACP2E-862"/> <group value="checkout"/> - <!--Will be fixed in the scope of --> - <group value="pr_exclude"/> </annotations> <before> <!--Enable flat rate shipping--> @@ -65,6 +63,8 @@ <!-- Select Shipping Method--> <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatRateShippingMethod"/> + <actionGroup ref="CheckoutSelectCheckMoneyOrderPaymentActionGroup" stepKey="selectPaymentMethod"/> + <!--Click next button to open payment section--> <actionGroup ref="StorefrontGuestCheckoutProceedToPaymentStepActionGroup" stepKey="clickNext"/> From 81fb9cfd5ef9a444b9fee16c0022cca9c7c6da1e Mon Sep 17 00:00:00 2001 From: Shanthi <103998768+glo25731@users.noreply.github.com> Date: Thu, 24 Oct 2024 11:57:53 +0530 Subject: [PATCH 388/460] ACQE-7005: Several Terms and Conditions with different types are presented on Payflow Link review page Removed changes --- ...ermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml index a00a94d63e7dd..c3be2df2f63f9 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontAssertSeveralTermsAndConditionsOnPayPalExpressCheckoutReviewPageTest.xml @@ -23,7 +23,7 @@ <before> <actionGroup ref="AdminLoginActionGroup" stepKey="adminLogin"/> <createData entity="SimpleProduct" stepKey="createSimpleProduct"/> - <actionGroup ref="AdminEnableTermsAndConditionsConfigurationActionGroup" stepKey="enableTermsAndConditions"/> + <actionGroup ref="AdminEnableTermsAndConditionsConfigurationActionGroup" stepKey="EnableTermsAndConditions"/> <createData entity="Simple_US_Customer_NY" stepKey="createCustomer"/> </before> <after> @@ -80,4 +80,4 @@ <click selector="{{StorefrontCheckoutAgreementsSection.automaticCheckoutAgreementLink('agreement_paypal_express')}}" stepKey="clickAutomaticTermTextInCheckoutIsClickable"/> <waitForElement selector="{{StorefrontCheckoutAgreementsSection.contentArea(newHtmlAutomaticallyTerm.content)}}" stepKey="verifyAutomaticTermContentTextMessage"/> </test> -</tests> \ No newline at end of file +</tests> From 97690c3617defc61d03c04bb76d6d2ab6fc451cc Mon Sep 17 00:00:00 2001 From: Shanthi Rajendran <glo25731@adobe.com> Date: Thu, 24 Oct 2024 12:30:15 +0530 Subject: [PATCH 389/460] ACQE-7005: Several Terms and Conditions with different types are presented on Payflow Link review page Updated copywrite --- ...hDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml | 4 ++-- .../Test/Mftf/Suite/AdminConfigurePaypalPayflowLinkSuite.xml | 4 ++-- ...hDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml index b79060485a0cb..b587908aa80b6 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/AdminConfigurePaypalPayflowLinkSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/AdminConfigurePaypalPayflowLinkSuite.xml index 8f6b60cefa74c..f2d8494e69033 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Suite/AdminConfigurePaypalPayflowLinkSuite.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/AdminConfigurePaypalPayflowLinkSuite.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml index 3ac3f0702707f..c57ef7e1b98a1 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" From 85b611924a4b054cfb5ac3ed402fa3bcf929f863 Mon Sep 17 00:00:00 2001 From: Dnyaneshwar Jambhulkar <pru34625@adobe.com> Date: Mon, 21 Oct 2024 18:58:10 +0530 Subject: [PATCH 390/460] AC-13242::Magento upgrade fails on MariaDB 11.4 + 2.4.8-beta1 --- .../Declaration/Schema/Db/MySQL/DbSchemaReader.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php index b4a1863dc9692..102417cef6026 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php @@ -54,6 +54,15 @@ public function getTableOptions($tableName, $resource) { $adapter = $this->resourceConnection->getConnection($resource); $dbName = $this->resourceConnection->getSchemaName($resource); + $collationNameColumn = 'charset_applicability.collation_name'; + + /* In case of mariadb>=11.4 check if column FULL_COLLATION_NAME is exist */ + if($adapter->tableColumnExists('COLLATION_CHARACTER_SET_APPLICABILITY', + 'FULL_COLLATION_NAME', + 'information_schema')){ + $collationNameColumn = 'charset_applicability.full_collation_name'; + } + $stmt = $adapter->select() ->from( ['i_tables' => 'information_schema.TABLES'], @@ -65,7 +74,7 @@ public function getTableOptions($tableName, $resource) ) ->joinInner( ['charset_applicability' => 'information_schema.COLLATION_CHARACTER_SET_APPLICABILITY'], - 'i_tables.table_collation = charset_applicability.collation_name', + 'i_tables.table_collation = '.$collationNameColumn, [ 'charset' => 'charset_applicability.CHARACTER_SET_NAME' ] From 9cce1578e9fc423125eed5931c964f33ff87840a Mon Sep 17 00:00:00 2001 From: Dnyaneshwar Jambhulkar <pru34625@adobe.com> Date: Mon, 21 Oct 2024 21:18:00 +0530 Subject: [PATCH 391/460] AC-13242::Magento upgrade fails on MariaDB 11.4 + 2.4.8-beta1 --- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php index 102417cef6026..321dbe3ff44fb 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaReader.php @@ -57,9 +57,11 @@ public function getTableOptions($tableName, $resource) $collationNameColumn = 'charset_applicability.collation_name'; /* In case of mariadb>=11.4 check if column FULL_COLLATION_NAME is exist */ - if($adapter->tableColumnExists('COLLATION_CHARACTER_SET_APPLICABILITY', - 'FULL_COLLATION_NAME', - 'information_schema')){ + if ($adapter->tableColumnExists( + 'COLLATION_CHARACTER_SET_APPLICABILITY', + 'FULL_COLLATION_NAME', + 'information_schema' + )) { $collationNameColumn = 'charset_applicability.full_collation_name'; } From 0fc01d94ecd59d34406a608083a020ba7d1056cc Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 24 Oct 2024 12:55:09 +0530 Subject: [PATCH 392/460] AC-9755: Fix issue with MariaDB 11.4 --- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index 711525adf17ce..d40b22f170189 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -347,8 +347,7 @@ public function compile(StatementAggregator $statementAggregator, $dryRun) */ private function isNeedToSplitSql() : bool { - return str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_10_4_VERSION) || - str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_10_6_VERSION); + return $this->sqlVersionProvider->isMariaDbEngine(); } /** From 9cc2100f0926aa2d27a8e3d03d125e63b377bf28 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:46:35 +0530 Subject: [PATCH 393/460] ACQE-6966 | [MFTF PR TESTS] StorefrontCashOnDeliveryPaymentForSpecificCountryTest --- .../StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml index 268799c9bed0d..917e25ae717be 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml @@ -18,6 +18,7 @@ <testCaseId value="AC-3216"/> <useCaseId value="ACP2E-862"/> <group value="checkout"/> + <group value="pr_exclude"/> </annotations> <before> <!--Enable flat rate shipping--> From b8fc41030730641d200e3020bd3d23e74ef9621c Mon Sep 17 00:00:00 2001 From: Shanthi <103998768+glo25731@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:52:57 +0530 Subject: [PATCH 394/460] ACQE-7005: Several Terms and Conditions with different types are presented on Payflow Link review page Updated copyright --- .../Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml index 075edd073082d..59bb6c21d3764 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> From ebd865c4f9a3f1fdc39186cd58792a96012f11a3 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Thu, 24 Oct 2024 14:57:21 +0530 Subject: [PATCH 395/460] AC-9755: Fix Unit for 11.4 --- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index d40b22f170189..ed19e8d5d369d 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -347,7 +347,9 @@ public function compile(StatementAggregator $statementAggregator, $dryRun) */ private function isNeedToSplitSql() : bool { - return $this->sqlVersionProvider->isMariaDbEngine(); + return str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_10_4_VERSION) || + str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_10_6_VERSION) || + str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_11_4_VERSION); } /** From 29e4a5f517bc3225e61d6664f410b984d032a4ff Mon Sep 17 00:00:00 2001 From: Oleksandr Iegorov <oiegorov@adobe.com> Date: Thu, 24 Oct 2024 11:48:41 -0500 Subject: [PATCH 396/460] ACP2E-3389: Adobe Commerce backend loads categories very slowly --- .../ResourceModel/Category/Collection.php | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php index 259399ece827b..952b08e619cfa 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php @@ -337,10 +337,44 @@ public function loadProductCount($items, $countRegular = true, $countAnchor = tr $categoryIds = array_keys($anchor); $countSelect = $this->getProductsCountQuery($categoryIds, (bool)$websiteId); $categoryProductsCount = $this->_conn->fetchPairs($countSelect); + + $subSelect = clone $this->_conn->select(); + $subSelect->from(['ce2' => $this->getTable('catalog_category_entity')], 'ce2.entity_id') + ->where("ce2.path LIKE CONCAT(ce.path, '/%')"); + + $select = clone $this->_conn->select(); + $select->from(['ce' => $this->getTable( + 'catalog_category_entity')], + 'ce.entity_id' + ); + $joinCondition = new \Zend_Db_Expr("ce.entity_id=cp.category_id OR cp.category_id IN ({$subSelect})"); + $select->joinLeft([ + 'cp' => $this->getProductTable()], + $joinCondition, + 'COUNT(DISTINCT cp.product_id) AS product_count' + ); + if ($websiteId) { + $select->join( + ['w' => $this->getProductWebsiteTable()], + 'cp.product_id = w.product_id', + [] + )->where( + 'w.website_id = ?', + $websiteId + ); + } + $select->where('ce.entity_id IN(?)', $categoryIds); + $select->group('ce.entity_id'); + + $countFromCategoryTable = $this->_conn->fetchPairs($select); + foreach ($anchor as $item) { - $productsCount = isset($categoryProductsCount[$item->getId()]) - ? (int)$categoryProductsCount[$item->getId()] - : $this->getProductsCountFromCategoryTable($item, $websiteId); + $productsCount = 0; + if (isset($categoryProductsCount[$item->getId()])) { + $productsCount = (int)$categoryProductsCount[$item->getId()]; + } elseif (isset($countFromCategoryTable[$item->getId()])) { + $productsCount = (int)$countFromCategoryTable[$item->getId()]; + } $item->setProductCount($productsCount); } } From b2dd08ca3ed21d24c52529877ce1e289c07af03f Mon Sep 17 00:00:00 2001 From: Oleksandr Iegorov <oiegorov@adobe.com> Date: Thu, 24 Oct 2024 13:42:46 -0500 Subject: [PATCH 397/460] ACP2E-3389: Adobe Commerce backend loads categories very slowly --- .../ResourceModel/Category/Collection.php | 77 +++++++++++-------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php index 952b08e619cfa..a5a8a335ad6ee 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2011 Adobe + * All Rights Reserved. */ namespace Magento\Catalog\Model\ResourceModel\Category; @@ -337,36 +337,7 @@ public function loadProductCount($items, $countRegular = true, $countAnchor = tr $categoryIds = array_keys($anchor); $countSelect = $this->getProductsCountQuery($categoryIds, (bool)$websiteId); $categoryProductsCount = $this->_conn->fetchPairs($countSelect); - - $subSelect = clone $this->_conn->select(); - $subSelect->from(['ce2' => $this->getTable('catalog_category_entity')], 'ce2.entity_id') - ->where("ce2.path LIKE CONCAT(ce.path, '/%')"); - - $select = clone $this->_conn->select(); - $select->from(['ce' => $this->getTable( - 'catalog_category_entity')], - 'ce.entity_id' - ); - $joinCondition = new \Zend_Db_Expr("ce.entity_id=cp.category_id OR cp.category_id IN ({$subSelect})"); - $select->joinLeft([ - 'cp' => $this->getProductTable()], - $joinCondition, - 'COUNT(DISTINCT cp.product_id) AS product_count' - ); - if ($websiteId) { - $select->join( - ['w' => $this->getProductWebsiteTable()], - 'cp.product_id = w.product_id', - [] - )->where( - 'w.website_id = ?', - $websiteId - ); - } - $select->where('ce.entity_id IN(?)', $categoryIds); - $select->group('ce.entity_id'); - - $countFromCategoryTable = $this->_conn->fetchPairs($select); + $countFromCategoryTable = $this->getCountFromCategoryTable($categoryIds, (int)$websiteId); foreach ($anchor as $item) { $productsCount = 0; @@ -381,6 +352,48 @@ public function loadProductCount($items, $countRegular = true, $countAnchor = tr return $this; } + /** + * Get products number for each category with bulk query + * + * @param array $categoryIds + * @param int $websiteId + * @return array + */ + private function getCountFromCategoryTable( + array $categoryIds, + int $websiteId + ) : array { + $subSelect = clone $this->_conn->select(); + $subSelect->from(['ce2' => $this->getTable('catalog_category_entity')], 'ce2.entity_id') + ->where("ce2.path LIKE CONCAT(ce.path, '/%')"); + + $select = clone $this->_conn->select(); + $select->from( + ['ce' => $this->getTable('catalog_category_entity')], + 'ce.entity_id' + ); + $joinCondition = new \Zend_Db_Expr("ce.entity_id=cp.category_id OR cp.category_id IN ({$subSelect})"); + $select->joinLeft( + ['cp' => $this->getProductTable()], + $joinCondition, + 'COUNT(DISTINCT cp.product_id) AS product_count' + ); + if ($websiteId) { + $select->join( + ['w' => $this->getProductWebsiteTable()], + 'cp.product_id = w.product_id', + [] + )->where( + 'w.website_id = ?', + $websiteId + ); + } + $select->where('ce.entity_id IN(?)', $categoryIds); + $select->group('ce.entity_id'); + + return $this->_conn->fetchPairs($select); + } + /** * Add category path filter * From 0faaa1627018a08aa93d0ca4f271a81bfd801952 Mon Sep 17 00:00:00 2001 From: Oleksandr Iegorov <oiegorov@adobe.com> Date: Thu, 24 Oct 2024 13:44:14 -0500 Subject: [PATCH 398/460] ACP2E-3389: Adobe Commerce backend loads categories very slowly --- .../ResourceModel/Category/Collection.php | 39 ------------------- 1 file changed, 39 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php index a5a8a335ad6ee..238f8ad730645 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php @@ -566,45 +566,6 @@ public function getProductTable() return $this->_productTable; } - /** - * Get products count using catalog_category_entity table - * - * @param Category $item - * @param string $websiteId - * @return int - */ - private function getProductsCountFromCategoryTable(Category $item, string $websiteId): int - { - $productCount = 0; - - if ($item->getAllChildren()) { - $bind = ['entity_id' => $item->getId(), 'c_path' => $item->getPath() . '/%']; - $select = $this->_conn->select(); - $select->from( - ['main_table' => $this->getProductTable()], - new \Zend_Db_Expr('COUNT(DISTINCT main_table.product_id)') - )->joinInner( - ['e' => $this->getTable('catalog_category_entity')], - 'main_table.category_id=e.entity_id', - [] - )->where( - '(e.entity_id = :entity_id OR e.path LIKE :c_path)' - ); - if ($websiteId) { - $select->join( - ['w' => $this->getProductWebsiteTable()], - 'main_table.product_id = w.product_id', - [] - )->where( - 'w.website_id = ?', - $websiteId - ); - } - $productCount = (int)$this->_conn->fetchOne($select, $bind); - } - return $productCount; - } - /** * Get query for retrieve count of products per category * From 89f84caa03f4aa5de7c8ff628ea259d90b6a3638 Mon Sep 17 00:00:00 2001 From: "sarmistha.martha" <glo23503@adobe.com> Date: Fri, 25 Oct 2024 09:08:19 +0530 Subject: [PATCH 399/460] ACP2E-3311: [Cloud] Cannot create order in admin on one store if only the Default Billing Address was not set up --- .../Model/Address/Validator/Customer.php | 9 +-- .../Model/Address/Validator/CustomerTest.php | 18 ++--- .../BillingAddressValidationRule.php | 13 ++-- .../BillingAddressValidationRuleTest.php | 66 +++++++++++++++++++ 4 files changed, 81 insertions(+), 25 deletions(-) create mode 100644 app/code/Magento/Quote/Test/Unit/Model/ValidationRules/BillingAddressValidationRuleTest.php diff --git a/app/code/Magento/Customer/Model/Address/Validator/Customer.php b/app/code/Magento/Customer/Model/Address/Validator/Customer.php index 5b1d6decd151b..d2a65ca2f72b7 100644 --- a/app/code/Magento/Customer/Model/Address/Validator/Customer.php +++ b/app/code/Magento/Customer/Model/Address/Validator/Customer.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ declare(strict_types=1); @@ -44,10 +44,7 @@ public function validate(AbstractAddress $address): array ->getCustomerId(); if ($originalAddressCustomerId !== 0 && $originalAddressCustomerId !== $addressCustomerId) { - $errors[] = __( - 'Provided customer ID "%customer_id" isn\'t related to current customer address.', - ['customer_id' => $addressCustomerId] - ); + $errors[] = __('A customer with the same email address already exists in an associated website.'); } } diff --git a/app/code/Magento/Customer/Test/Unit/Model/Address/Validator/CustomerTest.php b/app/code/Magento/Customer/Test/Unit/Model/Address/Validator/CustomerTest.php index ad50e09e11508..9bba97fd6f3d3 100644 --- a/app/code/Magento/Customer/Test/Unit/Model/Address/Validator/CustomerTest.php +++ b/app/code/Magento/Customer/Test/Unit/Model/Address/Validator/CustomerTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ declare(strict_types=1); @@ -82,12 +82,7 @@ public function testValidateNewCustomerWithExistingCustomerAddress(): void $originalAddressMock->expects($this->once())->method('getCustomerId')->willReturn(2); $this->assertEquals( - [ - __( - 'Provided customer ID "%customer_id" isn\'t related to current customer address.', - ['customer_id' => null] - ) - ], + [__('A customer with the same email address already exists in an associated website.')], $this->model->validate($addressMock) ); } @@ -160,12 +155,7 @@ public function testValidateExistingCustomerAddressWithNotRelevantCustomer(): vo $originalAddressMock->expects($this->once())->method('getCustomerId')->willReturn(1); $this->assertEquals( - [ - __( - 'Provided customer ID "%customer_id" isn\'t related to current customer address.', - ['customer_id' => 2] - ) - ], + [__('A customer with the same email address already exists in an associated website.')], $this->model->validate($addressMock) ); } diff --git a/app/code/Magento/Quote/Model/ValidationRules/BillingAddressValidationRule.php b/app/code/Magento/Quote/Model/ValidationRules/BillingAddressValidationRule.php index 465aebdc418ed..06138d1343630 100644 --- a/app/code/Magento/Quote/Model/ValidationRules/BillingAddressValidationRule.php +++ b/app/code/Magento/Quote/Model/ValidationRules/BillingAddressValidationRule.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ declare(strict_types=1); @@ -46,12 +46,15 @@ public function validate(Quote $quote): array $billingAddress = $quote->getBillingAddress(); $billingAddress->setStoreId($quote->getStoreId()); $validationResult = $billingAddress->validate(); - if ($validationResult !== true) { - $validationErrors = [__($this->generalMessage)]; - } if (is_array($validationResult)) { $validationErrors = array_merge($validationErrors, $validationResult); } + if ($quote->getCustomerId() === null && $quote->getCustomerId() !== $quote->getOrigData('customer_id')) { + return [$this->validationResultFactory->create(['errors' => $validationErrors])]; + } + if ($validationResult !== true) { + $validationErrors = array_merge([__($this->generalMessage)], $validationErrors); + } return [$this->validationResultFactory->create(['errors' => $validationErrors])]; } diff --git a/app/code/Magento/Quote/Test/Unit/Model/ValidationRules/BillingAddressValidationRuleTest.php b/app/code/Magento/Quote/Test/Unit/Model/ValidationRules/BillingAddressValidationRuleTest.php new file mode 100644 index 0000000000000..61dfd84e65a1b --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/ValidationRules/BillingAddressValidationRuleTest.php @@ -0,0 +1,66 @@ +<?php +/** + * Copyright 2024 Adobe + * All Rights Reserved. + */ +declare(strict_types=1); + +namespace Magento\Quote\Test\Unit\Model\ValidationRules; + +use Magento\Quote\Model\Quote\Address; +use PHPUnit\Framework\MockObject\MockObject; +use Magento\Framework\Validation\ValidationResultFactory; +use Magento\Quote\Model\Quote; +use Magento\Quote\Model\ValidationRules\BillingAddressValidationRule; +use PHPUnit\Framework\TestCase; + +class BillingAddressValidationRuleTest extends TestCase +{ + /** + * @var BillingAddressValidationRule + */ + private $model; + + /** + * @var ValidationResultFactory|MockObject + */ + private $validationResultFactoryMock; + + protected function setUp(): void + { + $this->validationResultFactoryMock = $this->getMockBuilder(ValidationResultFactory::class) + ->disableOriginalConstructor() + ->onlyMethods(['create']) + ->getMock(); + $this->model = new BillingAddressValidationRule($this->validationResultFactoryMock); + } + + public function testValidate() + { + $storeId = 1; + $error = new \Magento\Framework\Phrase( + 'A customer with the same email address already exists in an associated website.' + ); + $validationResult = [$error]; + $validationResultObj = new \Magento\Framework\Validation\ValidationResult($validationResult); + $this->validationResultFactoryMock->expects($this->once())->method('create')->with( + ['errors' => $validationResult] + )->willReturn($validationResultObj); + $addressMock = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $addressMock->expects($this->once())->method('validate')->willReturn($validationResult); + $quoteMock = $this->getMockBuilder(Quote::class) + ->disableOriginalConstructor() + ->getMock(); + $quoteMock->expects($this->once())->method('getBillingAddress')->willReturn($addressMock); + $quoteMock->expects($this->once())->method('getStoreId')->willReturn($storeId); + $quoteMock->expects($this->any())->method('__call')->with('getCustomerId') + ->willReturn(null); + $quoteMock->expects($this->once())->method('getOrigData')->willReturn(['customer_id' => 2]); + $result = $this->model->validate($quoteMock); + $this->assertIsArray($result); + $this->assertEquals( + 'A customer with the same email address already exists in an associated website.', + $result[0]->getErrors()[0]->getText() + ); + } +} From 1ae242398c5748ff38cfbe1bac6b8a55226de377 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:06:37 +0530 Subject: [PATCH 400/460] ACQE-6966 | [MFTF PR TESTS] StorefrontCashOnDeliveryPaymentForSpecificCountryTest --- .../StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml index 917e25ae717be..2cb19ae2c83db 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml @@ -65,7 +65,6 @@ <!-- Select Shipping Method--> <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatRateShippingMethod"/> <actionGroup ref="CheckoutSelectCheckMoneyOrderPaymentActionGroup" stepKey="selectPaymentMethod"/> - <!--Click next button to open payment section--> <actionGroup ref="StorefrontGuestCheckoutProceedToPaymentStepActionGroup" stepKey="clickNext"/> From dd0c0edb12dad0f4b488187792a60808fe138739 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Fri, 25 Oct 2024 11:42:32 +0530 Subject: [PATCH 401/460] ACQE-5754:Create Order Using PayPalExpress Checkout With Payment --- ...nRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 351e81792d1aa..63da698dba00d 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -17,6 +17,7 @@ <severity value="CRITICAL"/> <testCaseId value="AC-6147"/> <group value="3rd_party_integration"/> + <group value="pr_exclude"/> </annotations> <before> <!-- Create Product --> From f6c884e2fdd9f9bab5247b771a164f9abba0aaf9 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Fri, 25 Oct 2024 11:51:29 +0530 Subject: [PATCH 402/460] ACQE-7118 | Mainline Deployment | Added Copywrite --- .../Test/Mftf/ActionGroup/ClickPlaceOrderActionGroup.xml | 4 ++-- .../Test/Mftf/Section/CheckoutShippingMethodsSection.xml | 4 ++-- .../AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml | 4 ++-- .../Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml | 4 ++-- .../StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml | 4 ++-- .../AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml | 4 ++-- .../Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml | 4 ++-- ...gisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml | 4 ++-- ...teSavedWithPayflowProCreditCardFromCustomerAccountTest.xml | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/code/Magento/Checkout/Test/Mftf/ActionGroup/ClickPlaceOrderActionGroup.xml b/app/code/Magento/Checkout/Test/Mftf/ActionGroup/ClickPlaceOrderActionGroup.xml index e06f2aed87206..1f52186ce7221 100644 --- a/app/code/Magento/Checkout/Test/Mftf/ActionGroup/ClickPlaceOrderActionGroup.xml +++ b/app/code/Magento/Checkout/Test/Mftf/ActionGroup/ClickPlaceOrderActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Checkout/Test/Mftf/Section/CheckoutShippingMethodsSection.xml b/app/code/Magento/Checkout/Test/Mftf/Section/CheckoutShippingMethodsSection.xml index f0123ca8ea907..448f0bb821dcd 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Section/CheckoutShippingMethodsSection.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Section/CheckoutShippingMethodsSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml index df484a55593f4..c00c678bde20d 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPayPalExpressCheckoutPaymentActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml index 2f022d5a7a0af..8ae8d105a0bc3 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/DummyDataActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml index 8d8151923e1ee..cd923e03dda01 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontAssertOrderDetailsOnPayPalPageActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml index d1b0b51b422ed..65b7fadc3f590 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCreatePartialCaptureOrderWithPaypalStandardTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml index 4cfa59c5d81b8..49cc0d1897f80 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminPartialCaptureForPaypalCreditPaymentTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml index 63da698dba00d..0ce8836ac3b0f 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminRegisteredUserPayPalExpressCheckoutMethodAndFlatRateTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/DeleteSavedWithPayflowProCreditCardFromCustomerAccountTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/DeleteSavedWithPayflowProCreditCardFromCustomerAccountTest.xml index fb3ba2f4416dc..93a1208b96c50 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/DeleteSavedWithPayflowProCreditCardFromCustomerAccountTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/DeleteSavedWithPayflowProCreditCardFromCustomerAccountTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> From e25219e97d69ca7c9a474c25ff7325d8f2870856 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Fri, 25 Oct 2024 17:36:49 +0530 Subject: [PATCH 403/460] updatedACQE-7048:AdminEmailTemplateForStoredXSSTest --- .../Test/AdminEmailTemplateCreateTest.xml | 37 ------------------- .../AdminEmailTemplateForStoredXSSTest.xml | 0 2 files changed, 37 deletions(-) delete mode 100644 app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml create mode 100644 app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml deleted file mode 100644 index ec718d2e33b0b..0000000000000 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateCreateTest.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminEmailTemplateForStoredXSSTest"> - <annotations> - <features value="Email"/> - <stories value="Email template for stored XSS"/> - <title value="Email template with stored XSS should be escaped"/> - <description value="Admin creates a email template with stored XSS and it should not appear in template preview"/> - <severity value="MAJOR"/> - <testCaseId value="AC-4237"/> - </annotations> - <before> - <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> - </before> - <after> - <!--Delete created Template--> - <actionGroup ref="DeleteEmailTemplateActionGroup" stepKey="deleteTemplate"/> - <actionGroup ref="AdminClearGridFiltersActionGroup" stepKey="clearFilters"/> - <actionGroup ref="AdminLogoutActionGroup" stepKey="adminLogout"/> - </after> - <actionGroup ref="CreateCustomTemplateActionGroup" stepKey="createTemplate"> - <argument name="template" value="EmailTemplateWithStoreddXSS"/> - </actionGroup> - <actionGroup ref="PreviewEmailTemplateActionGroup" stepKey="previewTemplate"/> - <actionGroup ref="AssertEmailTemplateContentActionGroup" stepKey="assertContent"> - <argument name="expectedContent" value="{{EmailTemplateWithStoreddXSS.expectedTemplate}}"/> - </actionGroup> - </test> -</tests> diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml new file mode 100644 index 0000000000000..e69de29bb2d1d From 584ed112e52a09f18c87b3c6b167a62022f85544 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Fri, 25 Oct 2024 17:38:38 +0530 Subject: [PATCH 404/460] updatedACQE-7048:AdminEmailTemplateForStoredXSSTest --- .../AdminEmailTemplateForStoredXSSTest.xml | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml index e69de29bb2d1d..ec718d2e33b0b 100644 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml +++ b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminEmailTemplateForStoredXSSTest"> + <annotations> + <features value="Email"/> + <stories value="Email template for stored XSS"/> + <title value="Email template with stored XSS should be escaped"/> + <description value="Admin creates a email template with stored XSS and it should not appear in template preview"/> + <severity value="MAJOR"/> + <testCaseId value="AC-4237"/> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> + </before> + <after> + <!--Delete created Template--> + <actionGroup ref="DeleteEmailTemplateActionGroup" stepKey="deleteTemplate"/> + <actionGroup ref="AdminClearGridFiltersActionGroup" stepKey="clearFilters"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="adminLogout"/> + </after> + <actionGroup ref="CreateCustomTemplateActionGroup" stepKey="createTemplate"> + <argument name="template" value="EmailTemplateWithStoreddXSS"/> + </actionGroup> + <actionGroup ref="PreviewEmailTemplateActionGroup" stepKey="previewTemplate"/> + <actionGroup ref="AssertEmailTemplateContentActionGroup" stepKey="assertContent"> + <argument name="expectedContent" value="{{EmailTemplateWithStoreddXSS.expectedTemplate}}"/> + </actionGroup> + </test> +</tests> From f4938e68f1fff254a51cdb9c2a10d7642fdad428 Mon Sep 17 00:00:00 2001 From: Dmytro Horytskyi <dhorytskyi@magento.com> Date: Fri, 25 Oct 2024 13:23:14 -0500 Subject: [PATCH 405/460] ACP2E-3367: Site Header | Special Characters Breaking the Customer Welcome section --- app/code/Magento/Customer/Helper/View.php | 6 +++--- .../Magento/Customer/Test/Unit/Helper/ViewTest.php | 10 ++++------ .../testsuite/Magento/Customer/Helper/ViewTest.php | 6 +++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/app/code/Magento/Customer/Helper/View.php b/app/code/Magento/Customer/Helper/View.php index 560abd335d2fa..5f61914cdce31 100644 --- a/app/code/Magento/Customer/Helper/View.php +++ b/app/code/Magento/Customer/Helper/View.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2014 Adobe + * All Rights Reserved. */ namespace Magento\Customer\Helper; @@ -68,6 +68,6 @@ public function getCustomerName(CustomerInterface $customerData) $name .= ' ' . __($customerData->getSuffix()); } - return $this->escaper->escapeHtml($name); + return $name; } } diff --git a/app/code/Magento/Customer/Test/Unit/Helper/ViewTest.php b/app/code/Magento/Customer/Test/Unit/Helper/ViewTest.php index 9393f8681aba3..1a5c7c666188c 100644 --- a/app/code/Magento/Customer/Test/Unit/Helper/ViewTest.php +++ b/app/code/Magento/Customer/Test/Unit/Helper/ViewTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2014 Adobe + * All Rights Reserved. */ declare(strict_types=1); @@ -54,9 +54,7 @@ protected function setUp(): void */ public function testGetCustomerName($prefix, $firstName, $middleName, $lastName, $suffix, $result) { - $customerData = $this->getMockBuilder(CustomerInterface::class) - ->disableOriginalConstructor() - ->getMockForAbstractClass(); + $customerData = $this->createMock(CustomerInterface::class); $customerData->expects($this->any()) ->method('getPrefix')->willReturn($prefix); $customerData->expects($this->any()) @@ -67,7 +65,7 @@ public function testGetCustomerName($prefix, $firstName, $middleName, $lastName, ->method('getLastname')->willReturn($lastName); $customerData->expects($this->any()) ->method('getSuffix')->willReturn($suffix); - $this->escaperMock->expects($this->once())->method('escapeHtml')->with($result)->willReturn($result); + $this->escaperMock->expects(self::never())->method('escapeHtml'); $this->assertEquals($result, $this->object->getCustomerName($customerData)); } diff --git a/dev/tests/integration/testsuite/Magento/Customer/Helper/ViewTest.php b/dev/tests/integration/testsuite/Magento/Customer/Helper/ViewTest.php index 629f16d8f5291..7b86dcf9fd66b 100644 --- a/dev/tests/integration/testsuite/Magento/Customer/Helper/ViewTest.php +++ b/dev/tests/integration/testsuite/Magento/Customer/Helper/ViewTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2014 Adobe + * All Rights Reserved. */ namespace Magento\Customer\Helper; @@ -132,7 +132,7 @@ public static function getCustomerNameDataProvider() )->setLastname( '<strong>LastName</strong>' ), - '<h1>FirstName</h1> <strong>LastName</strong>', + '<h1>FirstName</h1> <strong>LastName</strong>', ], ]; } From ffdf6fd853320314f3c77cc148ca911f6de4c2e8 Mon Sep 17 00:00:00 2001 From: Indrani Sonawane <indrani.sonawane@BLR1-LMC-N71679.local> Date: Mon, 28 Oct 2024 11:31:23 +0530 Subject: [PATCH 406/460] Fixed static test failures --- .../Framework/Webapi/Rest/Request/Deserializer/Xml.php | 4 ++-- lib/internal/Magento/Framework/Xml/Security.php | 4 ++-- setup/src/Magento/Setup/Model/PhpReadinessCheck.php | 4 ++-- .../Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Xml.php b/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Xml.php index facc8a741168d..53f36cf08b3a3 100644 --- a/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Xml.php +++ b/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Xml.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ namespace Magento\Framework\Webapi\Rest\Request\Deserializer; diff --git a/lib/internal/Magento/Framework/Xml/Security.php b/lib/internal/Magento/Framework/Xml/Security.php index 67419a484f18f..8934a7c126c86 100644 --- a/lib/internal/Magento/Framework/Xml/Security.php +++ b/lib/internal/Magento/Framework/Xml/Security.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ namespace Magento\Framework\Xml; diff --git a/setup/src/Magento/Setup/Model/PhpReadinessCheck.php b/setup/src/Magento/Setup/Model/PhpReadinessCheck.php index b2630415b38cc..af572c261efcc 100644 --- a/setup/src/Magento/Setup/Model/PhpReadinessCheck.php +++ b/setup/src/Magento/Setup/Model/PhpReadinessCheck.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ namespace Magento\Setup\Model; diff --git a/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php b/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php index 2ac4ba5572b46..088a420256907 100644 --- a/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ declare(strict_types=1); From 11410fc48b5250b302854312a3f002da0dea342a Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Mon, 28 Oct 2024 13:39:54 +0530 Subject: [PATCH 407/460] AC-9755:Set default collation to utf8mb4 for MySQL --- setup/src/Magento/Setup/Model/Installer.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 79d077c4ec114..c3069b3dc5183 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -667,7 +667,7 @@ private function setupModuleRegistry(SchemaSetupInterface $setup) $columns = ['module' => ['varchar(50)',''], 'schema_version' => ['varchar(50)',''], 'data_version' => ['varchar(50)','']]; - $this->updateDBTable($tableName, $columns, $connection); + $this->setColumnCollationAndCharset($tableName, $columns, $connection); } } } @@ -734,7 +734,7 @@ private function setupSessionTable( if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('session'); $columns = ['session_id' => ['varchar(255)','']]; - $this->updateDBTable($tableName, $columns, $connection); + $this->setColumnCollationAndCharset($tableName, $columns, $connection); } } } @@ -797,7 +797,7 @@ private function setupCacheTable( if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('cache'); $columns = ['id' => ['varchar(200)','']]; - $this->updateDBTable($tableName, $columns, $connection); + $this->setColumnCollationAndCharset($tableName, $columns, $connection); } } } @@ -842,7 +842,7 @@ private function setupCacheTagTable( if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('cache_tag'); $columns = ['tag' => ['varchar(100)',''],'cache_id' => ['varchar(200)','']]; - $this->updateDBTable($tableName, $columns, $connection); + $this->setColumnCollationAndCharset($tableName, $columns, $connection); } } } @@ -906,7 +906,7 @@ private function setupFlagTable( $getTableSchema = $connection->getCreateTable($tableName) ?? ''; if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $columns = ['flag_code' => ['varchar(255)','NOT NULL'],'flag_data' => ['mediumtext','']]; - $this->updateDBTable($tableName, $columns, $connection); + $this->setColumnCollationAndCharset($tableName, $columns, $connection); } } } @@ -1891,7 +1891,7 @@ private function reindexAll(): void * @param AdapterInterface $connection * @return void */ - private function updateDBTable(string $tableName, array $columns, $connection) : void + private function setColumnCollationAndCharset(string $tableName, array $columns, $connection) : void { $charset = $this->columnConfig->getDefaultCharset(); $collate = $this->columnConfig->getDefaultCollation(); From 3a172d66f1db45c238990eeeebb7b41912d52480 Mon Sep 17 00:00:00 2001 From: engcom-Dash <grp-engcom-vendorworker-Dash@adobe.com> Date: Mon, 28 Oct 2024 14:36:51 +0530 Subject: [PATCH 408/460] 36394: Fix failure integration tests --- .../Observer/CategoryUrlPathAutogeneratorObserverTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryUrlPathAutogeneratorObserverTest.php b/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryUrlPathAutogeneratorObserverTest.php index 0f22a1d5798b7..37346ce14418f 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryUrlPathAutogeneratorObserverTest.php +++ b/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryUrlPathAutogeneratorObserverTest.php @@ -105,7 +105,7 @@ public function testChildrenUrlPathContainsParentCustomScopeUrlKey() [ 'parent_id' => $category1->getId(), 'name' => 'Category 2', - 'url_key' => null, + 'url_key' => 'category-2', 'is_active' => true ] ); @@ -114,7 +114,7 @@ public function testChildrenUrlPathContainsParentCustomScopeUrlKey() $this->storeManager->setCurrentStore($secondStore); $category2 = $this->categoryRepository->get($category2->getId()); - $category2->setUrlKey(null); + $category2->setUrlKey('category-2'); $this->categoryRepository->save($category2); $this->storeManager->setCurrentStore(StoreModel::DEFAULT_STORE_ID); From a3e7d5ab0d0e3a994a71b3ad03fa9b2b1015f688 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Mon, 28 Oct 2024 12:02:35 +0200 Subject: [PATCH 409/460] ACP2E-3380: [GraphQl] Wishlist items are visible via GraphQl but not visible on storefront --- .../Model/Resolver/WishlistItems.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php b/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php index f3a611b94a9ef..a7cc483567ce5 100644 --- a/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php +++ b/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php @@ -61,6 +61,10 @@ public function resolve( /** @var Wishlist $wishlist */ $wishlist = $value['model']; + if ($context->getExtensionAttributes()->getStore() instanceof StoreInterface) { + $args['store_id'] = $context->getExtensionAttributes()->getStore()->getStoreId(); + } + /** @var WishlistItemCollection $wishlistItemCollection */ $wishlistItemsCollection = $this->getWishListItems($wishlist, $args); $wishlistItems = $wishlistItemsCollection->getItems(); @@ -100,12 +104,15 @@ private function getWishListItems(Wishlist $wishlist, array $args): WishlistItem /** @var WishlistItemCollection $wishlistItemCollection */ $wishlistItemCollection = $this->wishlistItemCollectionFactory->create(); - $wishlistItemCollection - ->addWishlistFilter($wishlist) - ->addStoreFilter(array_map(function (StoreInterface $store) { + $wishlistItemCollection->addWishlistFilter($wishlist); + if (isset($args['store_id'])) { + $wishlistItemCollection->addStoreFilter($args['store_id']); + } else { + $wishlistItemCollection->addStoreFilter(array_map(function (StoreInterface $store) { return $store->getId(); - }, $this->storeManager->getStores())) - ->setVisibilityFilter(); + }, $this->storeManager->getStores())); + } + $wishlistItemCollection->setVisibilityFilter(); if ($currentPage > 0) { $wishlistItemCollection->setCurPage($currentPage); } @@ -115,4 +122,4 @@ private function getWishListItems(Wishlist $wishlist, array $args): WishlistItem } return $wishlistItemCollection; } -} \ No newline at end of file +} From c441b38559bbaf1e0add48ac3ee5dc2dce3747dc Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <glo17680@adobe.com> Date: Mon, 28 Oct 2024 16:37:36 +0530 Subject: [PATCH 410/460] AC-9755:Set default collation to utf8mb4 for MySQL --- .../Magento/Framework/DB/Adapter/Pdo/Mysql.php | 8 ++++---- .../Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 8 ++++---- setup/src/Magento/Setup/Model/Installer.php | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index 4f9e3ca609e67..a01d8296523a6 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -1270,7 +1270,7 @@ public function modifyColumn($tableName, $columnName, $definition, $flushData = // Add charset and collation for DBC failures if (!empty($definition)) { $type = explode(' ', trim($definition)); - $definition = $this->applyCharsetAndCollation($type[0], $definition, 1); + $definition = $this->setDefaultCharsetAndCollation($type[0], $definition, 1); } $sql = sprintf( 'ALTER TABLE %s MODIFY COLUMN %s %s', @@ -2450,7 +2450,7 @@ protected function _getColumnsDefinition(Table $table) if (count($definition)) { foreach ($definition as $index => $columnDefinition) { $type = explode(' ', trim($columnDefinition)); - $definition[$index] = $this->applyCharsetAndCollation($type[1], $columnDefinition, 2); + $definition[$index] = $this->setDefaultCharsetAndCollation($type[1], $columnDefinition, 2); } } // PRIMARY KEY @@ -4309,14 +4309,14 @@ public function __debugInfo() } /*** - * Adding charset and collation for DBC failures + * Set default collation & charset (e.g.,utf8mb4_general_ci & utf8mb4) for tables * * @param string $columnType * @param string $definition * @param int $position * @return string */ - private function applyCharsetAndCollation($columnType, $definition, $position) : string + private function setDefaultCharsetAndCollation($columnType, $definition, $position) : string { $pattern = '/\b(' . implode('|', array_map('preg_quote', self::COLUMN_TYPE)) . ')\b/i'; if (preg_match($pattern, $columnType) === 1) { diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index ed19e8d5d369d..97202845cf58a 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -112,7 +112,7 @@ public function createTable($tableName, $resource, array $definition, array $opt foreach ($definition as $index => $value) { if ($this->isColumnExists($value, self::COLUMN_TYPE)) { if (str_contains($index, 'column')) { - $definition[$index] = $this->applyCharsetAndCollation($value); + $definition[$index] = $this->setDefaultCharsetAndCollation($value); } } } @@ -238,7 +238,7 @@ public function modifyTableOption($tableName, $resource, $optionName, $optionVal public function modifyColumn($columnName, $resource, $tableName, $columnDefinition) { if ($this->isColumnExists($columnDefinition, self::COLUMN_TYPE)) { - $columnDefinition = $this->applyCharsetAndCollation($columnDefinition); + $columnDefinition = $this->setDefaultCharsetAndCollation($columnDefinition); } $sql = sprintf( @@ -483,12 +483,12 @@ private function getPreparedStatements(array $statementBank) : array } /*** - * Adding charset and collation for DBC failures + * Set default collation & charset (e.g.,utf8mb4_general_ci & utf8mb4) for tables * * @param string $columnDefinition * @return string */ - private function applyCharsetAndCollation(string $columnDefinition): string + private function setDefaultCharsetAndCollation(string $columnDefinition): string { $charset = $this->columnConfig->getDefaultCharset(); $collate = $this->columnConfig->getDefaultCollation(); diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index c3069b3dc5183..cb97bb1d353da 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -667,7 +667,7 @@ private function setupModuleRegistry(SchemaSetupInterface $setup) $columns = ['module' => ['varchar(50)',''], 'schema_version' => ['varchar(50)',''], 'data_version' => ['varchar(50)','']]; - $this->setColumnCollationAndCharset($tableName, $columns, $connection); + $this->setDefaultCharsetAndCollation($tableName, $columns, $connection); } } } @@ -734,7 +734,7 @@ private function setupSessionTable( if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('session'); $columns = ['session_id' => ['varchar(255)','']]; - $this->setColumnCollationAndCharset($tableName, $columns, $connection); + $this->setDefaultCharsetAndCollation($tableName, $columns, $connection); } } } @@ -797,7 +797,7 @@ private function setupCacheTable( if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('cache'); $columns = ['id' => ['varchar(200)','']]; - $this->setColumnCollationAndCharset($tableName, $columns, $connection); + $this->setDefaultCharsetAndCollation($tableName, $columns, $connection); } } } @@ -842,7 +842,7 @@ private function setupCacheTagTable( if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('cache_tag'); $columns = ['tag' => ['varchar(100)',''],'cache_id' => ['varchar(200)','']]; - $this->setColumnCollationAndCharset($tableName, $columns, $connection); + $this->setDefaultCharsetAndCollation($tableName, $columns, $connection); } } } @@ -906,7 +906,7 @@ private function setupFlagTable( $getTableSchema = $connection->getCreateTable($tableName) ?? ''; if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $columns = ['flag_code' => ['varchar(255)','NOT NULL'],'flag_data' => ['mediumtext','']]; - $this->setColumnCollationAndCharset($tableName, $columns, $connection); + $this->setDefaultCharsetAndCollation($tableName, $columns, $connection); } } } @@ -1884,14 +1884,14 @@ private function reindexAll(): void } /** - * Add column attribute and update table + * Set default collation & charset (e.g.,utf8mb4_general_ci & utf8mb4) for core setup tables * * @param string $tableName * @param array $columns * @param AdapterInterface $connection * @return void */ - private function setColumnCollationAndCharset(string $tableName, array $columns, $connection) : void + private function setDefaultCharsetAndCollation(string $tableName, array $columns, $connection) : void { $charset = $this->columnConfig->getDefaultCharset(); $collate = $this->columnConfig->getDefaultCollation(); From 0ed80d1e9e572bf40b3c5f5e2ef38817bdcdfc06 Mon Sep 17 00:00:00 2001 From: Rajesh Kumar <glo71317@adobe.com> Date: Mon, 28 Oct 2024 17:07:05 +0530 Subject: [PATCH 411/460] AC-9755:Set default collation to utf8mb4 for MySQL --- lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php | 6 +++--- .../Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php | 6 +++--- setup/src/Magento/Setup/Model/Installer.php | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index a01d8296523a6..6afff579aeead 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -1267,7 +1267,7 @@ public function modifyColumn($tableName, $columnName, $definition, $flushData = if (is_array($definition)) { $definition = $this->_getColumnDefinition($definition); } - // Add charset and collation for DBC failures + // Set default collation to utf8mb4 for MySQL if (!empty($definition)) { $type = explode(' ', trim($definition)); $definition = $this->setDefaultCharsetAndCollation($type[0], $definition, 1); @@ -2446,7 +2446,7 @@ protected function _getColumnsDefinition(Table $table) $columnDefinition ); } - // Adding charset and collation for DBC failures + // Set default collation to utf8mb4 for MySQL if (count($definition)) { foreach ($definition as $index => $columnDefinition) { $type = explode(' ', trim($columnDefinition)); @@ -4309,7 +4309,7 @@ public function __debugInfo() } /*** - * Set default collation & charset (e.g.,utf8mb4_general_ci & utf8mb4) for tables + * Set default collation & charset (e.g.utf8mb4_general_ci and utf8mb4) for tables * * @param string $columnType * @param string $definition diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php index 97202845cf58a..ead0de2d667f5 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php @@ -482,8 +482,8 @@ private function getPreparedStatements(array $statementBank) : array return $result; } - /*** - * Set default collation & charset (e.g.,utf8mb4_general_ci & utf8mb4) for tables + /** + * Set default collation & charset (e.g. utf8mb4_general_ci and utf8mb4) for tables * * @param string $columnDefinition * @return string @@ -498,7 +498,7 @@ private function setDefaultCharsetAndCollation(string $columnDefinition): string return implode(" ", $columnsAttribute); } - /*** + /** * Checks if any column of type varchar,char or text (mediumtext/longtext) * * @param string $definition diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index cb97bb1d353da..cc3865d6e50c4 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -660,7 +660,7 @@ private function setupModuleRegistry(SchemaSetupInterface $setup) )->setComment('Module versions registry'); $connection->createTable($table); } else { - // change the charset to utf8mb4 + // Set default collation to utf8mb4 for MySQL $getTableSchema = $connection->getCreateTable($setup->getTable('setup_module')) ?? ''; if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('setup_module'); @@ -729,7 +729,7 @@ private function setupSessionTable( ); $connection->createTable($table); } else { - // change the charset to utf8mb4 + // Set default collation to utf8mb4 for MySQL $getTableSchema = $connection->getCreateTable($setup->getTable('session')) ?? ''; if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('session'); @@ -837,7 +837,7 @@ private function setupCacheTagTable( ); $connection->createTable($table); } else { - // change the charset to utf8mb4 + // Set default collation to utf8mb4 for MySQL $getTableSchema = $connection->getCreateTable($setup->getTable('cache_tag')) ?? ''; if (preg_match('/\b('. self::OLDCHARSET .')\b/', $getTableSchema)) { $tableName = $setup->getTable('cache_tag'); @@ -1884,7 +1884,7 @@ private function reindexAll(): void } /** - * Set default collation & charset (e.g.,utf8mb4_general_ci & utf8mb4) for core setup tables + * Set default collation & charset (e.g. utf8mb4_general_ci and utf8mb4) for core setup tables * * @param string $tableName * @param array $columns From 59aa4762c35fd5cacf29c6fc3b55004b683f75ea Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Mon, 28 Oct 2024 14:45:19 +0200 Subject: [PATCH 412/460] ACP2E-3380: [GraphQl] Wishlist items are visible via GraphQl but not visible on storefront --- .../Model/Resolver/WishlistItems.php | 11 +- .../Unit/Model/Resolver/WishlistItemsTest.php | 103 ++++++++++++++++++ 2 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php diff --git a/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php b/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php index a7cc483567ce5..cc697e3fadb68 100644 --- a/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php +++ b/app/code/Magento/WishlistGraphQl/Model/Resolver/WishlistItems.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ declare (strict_types = 1); @@ -13,7 +13,6 @@ use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Store\Api\Data\StoreInterface; use Magento\Store\Model\StoreManagerInterface; -use Magento\Wishlist\Model\Item; use Magento\Wishlist\Model\ResourceModel\Item\Collection as WishlistItemCollection; use Magento\Wishlist\Model\ResourceModel\Item\CollectionFactory as WishlistItemCollectionFactory; use Magento\Wishlist\Model\Wishlist; @@ -26,12 +25,12 @@ class WishlistItems implements ResolverInterface /** * @var WishlistItemCollectionFactory */ - private $wishlistItemCollectionFactory; + private WishlistItemCollectionFactory $wishlistItemCollectionFactory; /** * @var StoreManagerInterface */ - private $storeManager; + private StoreManagerInterface $storeManager; /** * @param WishlistItemCollectionFactory $wishlistItemCollectionFactory @@ -62,7 +61,7 @@ public function resolve( $wishlist = $value['model']; if ($context->getExtensionAttributes()->getStore() instanceof StoreInterface) { - $args['store_id'] = $context->getExtensionAttributes()->getStore()->getStoreId(); + $args['store_id'] = $context->getExtensionAttributes()->getStore()->getId(); } /** @var WishlistItemCollection $wishlistItemCollection */ diff --git a/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php b/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php new file mode 100644 index 0000000000000..2ab00ebef02c8 --- /dev/null +++ b/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php @@ -0,0 +1,103 @@ +<?php +/** + * Copyright 2024 Adobe + * All Rights Reserved. + */ +declare (strict_types = 1); + +namespace Magento\WishlistGraphQl\Test\Unit\Model\Resolver; + +use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; +use Magento\GraphQl\Model\Query\ContextInterface; +use Magento\Framework\GraphQl\Config\Element\Field; +use Magento\GraphQl\Model\Query\ContextExtensionInterface; +use Magento\Store\Api\Data\StoreInterface; +use Magento\Store\Model\StoreManagerInterface; +use Magento\Wishlist\Model\ResourceModel\Item; +use Magento\Wishlist\Model\ResourceModel\Item\Collection as WishlistItemCollection; +use Magento\Wishlist\Model\ResourceModel\Item\CollectionFactory as WishlistItemCollectionFactory; +use Magento\Wishlist\Model\Wishlist; +use Magento\WishlistGraphQl\Model\Resolver\WishlistItems; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; + +class WishlistItemsTest extends TestCase +{ + /** + * @var WishlistItemCollectionFactory|MockObject + */ + private WishlistItemCollectionFactory $wishlistItemCollectionFactory; + + /** + * @var StoreManagerInterface|MockObject + */ + private StoreManagerInterface $storeManager; + + /** + * @return void + * @throws \PHPUnit\Framework\MockObject\Exception + */ + protected function setUp(): void + { + $this->wishlistItemCollectionFactory = $this->createMock(WishlistItemCollectionFactory::class); + $this->storeManager = $this->createMock(StoreManagerInterface::class); + } + + /** + * @return void + * @throws \PHPUnit\Framework\MockObject\Exception + */ + public function testResolve(): void + { + $storeId = $itemId = 1; + + $field = $this->createMock(Field::class); + $context = $this->getMockBuilder(ContextInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $store = $this->createMock(StoreInterface::class); + $store->expects($this->once())->method('getId')->willReturn($storeId); + + $extensionAttributes = $this->createMock(ContextExtensionInterface::class); + $extensionAttributes->expects($this->exactly(2)) + ->method('getStore') + ->willReturn($store); + $context->expects($this->exactly(2)) + ->method('getExtensionAttributes') + ->willReturn($extensionAttributes); + $info = $this->createMock(ResolveInfo::class); + $wishlist = $this->createMock(Wishlist::class); + + $item = $this->getMockBuilder(Item::class) + ->addMethods(['getId', 'getData', 'getDescription', 'getAddedAt', 'getProduct']) + ->disableOriginalConstructor() + ->getMock(); + $item->expects($this->once())->method('getId')->willReturn($itemId); + $item->expects($this->once())->method('getData')->with('qty'); + $item->expects($this->once())->method('getDescription'); + $item->expects($this->once())->method('getAddedAt'); + $item->expects($this->once())->method('getProduct'); + + $wishlistCollection = $this->createMock(WishlistItemCollection::class); + $wishlistCollection->expects($this->once()) + ->method('addWishlistFilter') + ->willReturnSelf(); + $wishlistCollection->expects($this->once()) + ->method('addStoreFilter') + ->with($storeId) + ->willReturnSelf(); + $wishlistCollection->expects($this->once())->method('setVisibilityFilter')->willReturnSelf(); + $wishlistCollection->expects($this->once())->method('setCurPage')->willReturnSelf(); + $wishlistCollection->expects($this->once())->method('setPageSize')->willReturnSelf(); + $wishlistCollection->expects($this->once())->method('getItems')->willReturn([$item]); + $wishlistCollection->expects($this->once())->method('getCurPage'); + $wishlistCollection->expects($this->once())->method('getPageSize'); + $wishlistCollection->expects($this->once())->method('getLastPageNumber'); + $this->wishlistItemCollectionFactory->expects($this->once()) + ->method('create') + ->willReturn($wishlistCollection); + + $resolver = new WishlistItems($this->wishlistItemCollectionFactory, $this->storeManager); + $resolver->resolve($field, $context, $info, ['model' => $wishlist]); + } +} From f4960e46a14328adccfebe3cbfd599479b1ef0f5 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Mon, 28 Oct 2024 15:39:29 +0200 Subject: [PATCH 413/460] ACP2E-3380: [GraphQl] Wishlist items are visible via GraphQl but not visible on storefront --- .../Test/Unit/Model/Resolver/WishlistItemsTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php b/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php index 2ab00ebef02c8..a4b7f4ad0f9ad 100644 --- a/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php +++ b/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php @@ -3,7 +3,7 @@ * Copyright 2024 Adobe * All Rights Reserved. */ -declare (strict_types = 1); +declare(strict_types = 1); namespace Magento\WishlistGraphQl\Test\Unit\Model\Resolver; From 90c85b405901efe5935464b9e55e833b72f4a32c Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Mon, 28 Oct 2024 17:01:48 +0200 Subject: [PATCH 414/460] ACP2E-3380: [GraphQl] Wishlist items are visible via GraphQl but not visible on storefront --- .../Test/Unit/Model/Resolver/WishlistItemsTest.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php b/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php index a4b7f4ad0f9ad..fdd30062d373e 100644 --- a/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php +++ b/app/code/Magento/WishlistGraphQl/Test/Unit/Model/Resolver/WishlistItemsTest.php @@ -3,7 +3,7 @@ * Copyright 2024 Adobe * All Rights Reserved. */ -declare(strict_types = 1); +declare(strict_types=1); namespace Magento\WishlistGraphQl\Test\Unit\Model\Resolver; @@ -58,7 +58,10 @@ public function testResolve(): void $store = $this->createMock(StoreInterface::class); $store->expects($this->once())->method('getId')->willReturn($storeId); - $extensionAttributes = $this->createMock(ContextExtensionInterface::class); + $extensionAttributes = $this->getMockBuilder(ContextExtensionInterface::class) + ->disableOriginalConstructor() + ->addMethods(['getStore']) + ->getMock(); $extensionAttributes->expects($this->exactly(2)) ->method('getStore') ->willReturn($store); From 556fac210d1f11c2d82d768ee2eee0315cb72177 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Mon, 28 Oct 2024 21:59:21 +0530 Subject: [PATCH 415/460] Updated:ACQE-7048 --- .../Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml index ec718d2e33b0b..f9e4d03127976 100644 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml +++ b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml @@ -3,9 +3,10 @@ /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="AdminEmailTemplateForStoredXSSTest"> From 499dc26b96d6be8f0d7d2baeca40f7de9ac65738 Mon Sep 17 00:00:00 2001 From: Oleksandr Iegorov <oiegorov@adobe.com> Date: Mon, 28 Oct 2024 14:03:36 -0500 Subject: [PATCH 416/460] ACP2E-3389: Adobe Commerce backend loads categories very slowly --- .../ResourceModel/Category/CollectionTest.php | 217 ++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php new file mode 100644 index 0000000000000..ab8b937e55858 --- /dev/null +++ b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php @@ -0,0 +1,217 @@ +<?php +/** + * Copyright 2024 Adobe + * All Rights Reserved. + */ +declare(strict_types=1); + +namespace Magento\Catalog\Test\Unit\Model\ResourceModel\Category; + +use Magento\Framework\Data\Collection\EntityFactory; +use Psr\Log\LoggerInterface; +use Magento\Framework\Data\Collection\Db\FetchStrategyInterface; +use Magento\Framework\Event\ManagerInterface; +use Magento\Eav\Model\Config; +use Magento\Framework\App\ResourceConnection; +use Magento\Eav\Model\EntityFactory as EavEntityFactory; +use Magento\Eav\Model\ResourceModel\Helper; +use Magento\Framework\Validator\UniversalFactory; +use Magento\Store\Model\StoreManagerInterface; +use Magento\Store\Api\Data\StoreInterface; +use Magento\Framework\DB\Adapter\AdapterInterface; +use Magento\Framework\DB\Select; +use Magento\Framework\App\Config\ScopeConfigInterface; +use Magento\Catalog\Model\Product\Visibility; +use Magento\Catalog\Model\ResourceModel\Category\Collection; +use Magento\Catalog\Model\ResourceModel\Category as CategoryEntity; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; + +class CollectionTest extends TestCase +{ + + /** + * @var Collection + */ + private $collection; + + /** + * @var EntityFactory|MockObject + */ + private $entityFactory; + + /** + * @var LoggerInterface|MockObject + */ + private $logger; + + /** + * @var FetchStrategyInterface|MockObject + */ + private $fetchStrategy; + + /** + * @var ManagerInterface|MockObject + */ + private $eventManager; + + /** + * @var Config|MockObject + */ + private $eavConfig; + + /** + * @var ResourceConnection|MockObject + */ + private $resource; + + /** + * @var EavEntityFactory|MockObject + */ + private $eavEntityFactory; + + /** + * @var Helper|MockObject + */ + private $resourceHelper; + + /** + * @var UniversalFactory|MockObject + */ + private $universalFactory; + + /** + * @var StoreManagerInterface|MockObject + */ + private $storeManager; + + /** + * @var AdapterInterface|MockObject + */ + private $connection; + + /** + * @var ScopeConfigInterface|MockObject + */ + private $scopeConfig; + + /** + * @var Visibility|MockObject + */ + private $catalogProductVisibility; + + /** + * @var CategoryEntity|MockObject + */ + private $categoryEntity; + + /** + * @var Select|MockObject + */ + private $select; + + /** + * @var StoreInterface|MockObject + */ + private $store; + + /** + * {@inheritdoc} + */ + public function setUp(): void + { + $this->entityFactory = $this->getMockBuilder(EntityFactory::class) + ->disableOriginalConstructor(true) + ->getMock(); + $this->logger = $this->getMockBuilder(LoggerInterface::class) + ->getMock(); + $this->fetchStrategy = $this->getMockBuilder(FetchStrategyInterface::class) + ->getMock(); + $this->eventManager = $this->getMockBuilder(ManagerInterface::class) + ->getMock(); + $this->eavConfig = $this->getMockBuilder(Config::class) + ->disableOriginalConstructor(true) + ->getMock(); + $this->resource = $this->getMockBuilder(ResourceConnection::class) + ->disableOriginalConstructor(true) + ->getMock(); + $this->eavEntityFactory = $this->getMockBuilder(EavEntityFactory::class) + ->disableOriginalConstructor(true) + ->getMock(); + $this->resourceHelper = $this->getMockBuilder(Helper::class) + ->disableOriginalConstructor(true) + ->getMock(); + $this->universalFactory = $this->getMockBuilder(UniversalFactory::class) + ->disableOriginalConstructor(true) + ->getMock(); + $this->storeManager = $this->getMockBuilder(StoreManagerInterface::class) + ->getMock(); + $this->connection = $this->getMockBuilder(AdapterInterface::class) + ->getMock(); + $this->scopeConfig = $this->getMockBuilder(ScopeConfigInterface::class) + ->getMock(); + $this->catalogProductVisibility = $this->getMockBuilder(Visibility::class) + ->disableOriginalConstructor(true) + ->getMock(); + + $this->categoryEntity = $this->getMockBuilder(CategoryEntity::class) + ->disableOriginalConstructor() + ->getMock(); + $this->universalFactory->expects($this->any()) + ->method('create') + ->willReturn($this->categoryEntity); + $this->categoryEntity->expects($this->any()) + ->method('getConnection') + ->willReturn($this->connection); + $this->categoryEntity->expects($this->any()) + ->method('getDefaultAttributes') + ->willReturn([]); + + $this->select = $this->getMockBuilder(Select::class) + ->disableOriginalConstructor() + ->getMock(); + $this->connection->expects($this->any()) + ->method('select') + ->willReturn($this->select); + + $this->store = $this->getMockBuilder(StoreInterface::class) + ->getMock(); + $this->storeManager->expects($this->any()) + ->method('getStore') + ->willReturn($this->store); + + $this->collection = new Collection( + $this->entityFactory, + $this->logger, + $this->fetchStrategy, + $this->eventManager, + $this->eavConfig, + $this->resource, + $this->eavEntityFactory, + $this->resourceHelper, + $this->universalFactory, + $this->storeManager, + $this->connection, + $this->scopeConfig, + $this->catalogProductVisibility + ); + } + + public function testLoadProductCount() : void + { + $this->select->expects($this->exactly(3)) + ->method('from') + ->willReturnSelf(); + $this->select->expects($this->exactly(3)) + ->method('where') + ->willReturnSelf(); + $this->select->expects($this->exactly(1)) + ->method('group') + ->willReturnSelf(); + $this->connection->expects($this->exactly(2)) + ->method('fetchPairs') + ->with($this->select) + ->willReturn([]); + $this->collection->loadProductCount([]); + } +} From 1a8201cf4ac6f50ebe962f3af69da5d997efeb87 Mon Sep 17 00:00:00 2001 From: Oleksandr Iegorov <oiegorov@adobe.com> Date: Mon, 28 Oct 2024 15:55:17 -0500 Subject: [PATCH 417/460] ACP2E-3389: Adobe Commerce backend loads categories very slowly --- .../Test/Unit/Model/ResourceModel/Category/CollectionTest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php index ab8b937e55858..cadb6c5a8d2e9 100644 --- a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php +++ b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Category/CollectionTest.php @@ -27,6 +27,10 @@ use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; +/** + * @SuppressWarnings(PHPMD.TooManyFields) + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class CollectionTest extends TestCase { From 2b4cc030652cdaa53ff1cee806ba96e839bba1e3 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Tue, 29 Oct 2024 06:32:17 +0530 Subject: [PATCH 418/460] ACQE-7048:AdminEmailTemplateForStoredXSSTest --- .../Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml index f9e4d03127976..3c27f92859c47 100644 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml +++ b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml @@ -7,6 +7,7 @@ * All Rights Reserved. */ --> + <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="AdminEmailTemplateForStoredXSSTest"> From 0794ddb698d741ede45b65c0a2e3bfd15de44eac Mon Sep 17 00:00:00 2001 From: pradeep1819 <pradeep05.pro@gmail.com> Date: Tue, 29 Oct 2024 10:55:47 +0530 Subject: [PATCH 419/460] ACP2E-3302: [Cloud] Incorrect Calculations in Coupon Usage Report --- .../SalesRule/Model/ResourceModel/Report/Rule/Createdat.php | 4 ++-- .../Model/ResourceModel/Report/Rule/CreatedatTest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/SalesRule/Model/ResourceModel/Report/Rule/Createdat.php b/app/code/Magento/SalesRule/Model/ResourceModel/Report/Rule/Createdat.php index 1dbbcb1fce88e..5a44150532685 100644 --- a/app/code/Magento/SalesRule/Model/ResourceModel/Report/Rule/Createdat.php +++ b/app/code/Magento/SalesRule/Model/ResourceModel/Report/Rule/Createdat.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2011 Adobe + * All Rights Reserved. */ namespace Magento\SalesRule\Model\ResourceModel\Report\Rule; diff --git a/dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel/Report/Rule/CreatedatTest.php b/dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel/Report/Rule/CreatedatTest.php index 7b07a0ae4a698..cc60512983693 100644 --- a/dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel/Report/Rule/CreatedatTest.php +++ b/dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel/Report/Rule/CreatedatTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2014 Adobe + * All Rights Reserved. */ namespace Magento\SalesRule\Model\ResourceModel\Report\Rule; From 15ac3f977280b90e12e200e8cdf0f3d384b04dce Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Tue, 29 Oct 2024 16:43:34 +0530 Subject: [PATCH 420/460] ACQE-6966 | [MFTF PR TESTS] StorefrontCashOnDeliveryPaymentForSpecificCountryTest --- .../StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml index 2cb19ae2c83db..87fb0b2011140 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml @@ -18,7 +18,6 @@ <testCaseId value="AC-3216"/> <useCaseId value="ACP2E-862"/> <group value="checkout"/> - <group value="pr_exclude"/> </annotations> <before> <!--Enable flat rate shipping--> From 286a27e5a4c98269bdf7c6c225e559e05d54275b Mon Sep 17 00:00:00 2001 From: Indrani Sonawane <indrani.sonawane@BLR1-LMC-N71679.local> Date: Tue, 29 Oct 2024 20:59:20 +0530 Subject: [PATCH 421/460] Fixed static test failures --- app/code/Magento/Config/Model/Config/Backend/Baseurl.php | 4 ++-- .../Config/Test/Unit/Model/Config/Backend/BaseurlTest.php | 4 ++-- app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php index fb20185e100bd..3646313eb0925 100644 --- a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php +++ b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe. + * All Rights Reserved. */ namespace Magento\Config\Model\Config\Backend; diff --git a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php index 0c6cdf77072a2..c009af2edaa0c 100644 --- a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php +++ b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe. + * All Rights Reserved. */ declare(strict_types=1); diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php index a51de736d319f..98c07204b1f29 100644 --- a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php +++ b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe. + * All Rights Reserved. */ declare(strict_types=1); From d012ad6449c75fb50e2187c591aa43822a6abfab Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Tue, 29 Oct 2024 07:46:02 +0530 Subject: [PATCH 422/460] ACQE-7048:AdminEmailTemplateForStoredXSSTest --- .../Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml | 3 ++- .../Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml index ceac9617ed80d..f252f6bc96746 100644 --- a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml +++ b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml @@ -3,9 +3,10 @@ /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml index 3c27f92859c47..f9e4d03127976 100644 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml +++ b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml @@ -7,7 +7,6 @@ * All Rights Reserved. */ --> - <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="AdminEmailTemplateForStoredXSSTest"> From 1008465b41235069af8d06214168e8915738aef6 Mon Sep 17 00:00:00 2001 From: Shanthi <103998768+glo25731@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:06:05 +0530 Subject: [PATCH 423/460] ACQE-7005: Several Terms and Conditions with different types are presented on Payflow Link review page Added pr_exclude label --- ...thDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml index c57ef7e1b98a1..c016ae1888386 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml @@ -17,8 +17,9 @@ <testCaseId value="AC-5204"/> <group value="paypalPayflowLink"/> <group value="3rd_party_integration"/> + <group value="pr_exclude"/> </annotations> <!-- Checkout select Credit Card (Payflow link)--> <conditionalClick selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Link)')}}" dependentSelector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Link)')}}" visible="true" after="clickNextOnShippingStep" stepKey="selectCreditCardPaymentMethod"/> </test> -</tests> \ No newline at end of file +</tests> From 0b7f23f9c559b977c94c1ea6bec895f87086f5b1 Mon Sep 17 00:00:00 2001 From: Shanthi <103998768+glo25731@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:06:59 +0530 Subject: [PATCH 424/460] ACQE-7005: Several Terms and Conditions with different types are presented on Payflow Link review page Added pr_exclude label --- ...thDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml index b587908aa80b6..d027eeb4cd510 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest.xml @@ -15,6 +15,7 @@ <description value="Admin creates several terms and conditions with different types and assert them on the payment type payflow link in the storefront's review and payments page"/> <severity value="MAJOR"/> <testCaseId value="AC-5204"/> + <group value="pr_exclude"/> </annotations> <before> <!-- Enable Terms And Condition--> @@ -78,4 +79,4 @@ <click selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreement(newHtmlAutomaticallyTerm.checkboxText)}}" stepKey="clickOnHTMLTerm"/> <waitForElement selector="{{StorefrontCheckoutAgreementsSection.contentArea(newHtmlAutomaticallyTerm.content)}}" stepKey="verifyAutomaticTermContentTextMessage"/> </test> -</tests> \ No newline at end of file +</tests> From f6ffa4435595dd7ab292ec71e6c9e9bfb44b2908 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Wed, 30 Oct 2024 12:07:32 +0530 Subject: [PATCH 425/460] ACQE-7048:AdminEmailTemplateForStoredXSSTest --- .../Mftf/Data/EmailTemplatestoredXSSData.xml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml index f252f6bc96746..e688e81b92c1f 100644 --- a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml +++ b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml @@ -1,12 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> + <!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. + */ + --> + <entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> From e761493f1cdd16f1d715334b8c65c1e0d3afd463 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Wed, 30 Oct 2024 13:12:42 +0530 Subject: [PATCH 426/460] ACQE-7118 | Added pr_exclude --- .../StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml index 87fb0b2011140..2cb19ae2c83db 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml @@ -18,6 +18,7 @@ <testCaseId value="AC-3216"/> <useCaseId value="ACP2E-862"/> <group value="checkout"/> + <group value="pr_exclude"/> </annotations> <before> <!--Enable flat rate shipping--> From cc30ebb82ff7872230fe479dae1db8a8242d6e46 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Wed, 30 Oct 2024 13:17:48 +0530 Subject: [PATCH 427/460] ACQE-7118 | Test Fix --- ...strictedRoleForGlobalSearchActionGroup.xml | 25 +++++++++++++++++++ .../AdminLoginWithRestrictPermissionTest.xml | 6 +++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 app/code/Magento/Backend/Test/Mftf/ActionGroup/AdminAddRestrictedRoleForGlobalSearchActionGroup.xml diff --git a/app/code/Magento/Backend/Test/Mftf/ActionGroup/AdminAddRestrictedRoleForGlobalSearchActionGroup.xml b/app/code/Magento/Backend/Test/Mftf/ActionGroup/AdminAddRestrictedRoleForGlobalSearchActionGroup.xml new file mode 100644 index 0000000000000..e4f285038b9da --- /dev/null +++ b/app/code/Magento/Backend/Test/Mftf/ActionGroup/AdminAddRestrictedRoleForGlobalSearchActionGroup.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. + */ +--> +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminAddRestrictedRoleForGlobalSearchActionGroup" extends="AdminCreateRoleActionGroup"> + <remove keyForRemoval="navigateToNewRole"/> + <remove keyForRemoval="waitForPageLoad1"/> + <remove keyForRemoval="fillRoleName"/> + <remove keyForRemoval="enterPassword"/> + <remove keyForRemoval="clickRoleResourcesTab"/> + <remove keyForRemoval="waitForScopeSelection"/> + <remove keyForRemoval="clickSaveRoleButton"/> + <remove keyForRemoval="waitForPageLoad2"/> + <remove keyForRemoval="clickCheckbox"/> + <scrollTo selector="{{AdminEditRoleInfoSection.blockName('restrictedRole')}}" x="0" y="-120" stepKey="scrollToResourceElement" after="selectResourceAccessCustom"/> + <click stepKey="clickTFACheckbox" selector="{{AdminEditRoleInfoSection.checkboxByRole('Magento_TwoFactorAuth::tfa')}}" after="waitForTfaRole"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Backend/Test/Mftf/Test/AdminLoginWithRestrictPermissionTest.xml b/app/code/Magento/Backend/Test/Mftf/Test/AdminLoginWithRestrictPermissionTest.xml index 06a433e17ae6f..7bece6cf6fdc4 100644 --- a/app/code/Magento/Backend/Test/Mftf/Test/AdminLoginWithRestrictPermissionTest.xml +++ b/app/code/Magento/Backend/Test/Mftf/Test/AdminLoginWithRestrictPermissionTest.xml @@ -3,6 +3,8 @@ /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> @@ -17,8 +19,8 @@ <severity value="MAJOR" /> <description value="Check login with restrict role."/> <group value="login"/> - <group value="pr_exclude"/> <group value="cloud"/> + <group value="pr_exclude"/> </annotations> <before> @@ -29,7 +31,7 @@ <argument name="restrictedRole" value="Global Search"/> </actionGroup> <actionGroup ref="AdminUserClickRoleResourceTabActionGroup" stepKey="switchToRoleResourceTab"/> - <actionGroup ref="AdminAddRestrictedRoleActionGroup" stepKey="addRestrictedRoleStores"> + <actionGroup ref="AdminAddRestrictedRoleForGlobalSearchActionGroup" stepKey="addRestrictedRoleStores"> <argument name="User" value="adminRole"/> <argument name="restrictedRole" value="Global Search"/> </actionGroup> From 22bdbe2b0ca475077f1f3c6983edd0a5400c2dff Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 30 Oct 2024 14:31:31 +0530 Subject: [PATCH 428/460] ACQE-7118 | Mainline Deployment --- .../StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml index 2cb19ae2c83db..93cf950dfdde3 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> From 5574644c261a6e65ec9162d29c6b4daeb379ddc8 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Wed, 30 Oct 2024 22:27:02 +0530 Subject: [PATCH 429/460] AC-4237 [Security] Stored XSS - Email Template removed extra space --- .../Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml | 2 -- .../Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml index e688e81b92c1f..730332a2e1efc 100644 --- a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml +++ b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml @@ -7,10 +7,8 @@ * All Rights Reserved. */ --> - <entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> - <entity name="EmailTemplateWithStoreddXSS" type="template"> <data key="templateName">xss</data> <data key="templateSubject">Subjectxss</data> diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml index f9e4d03127976..aacf44a3e461a 100644 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml +++ b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml @@ -3,7 +3,7 @@ /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. - * Copyright 2024 Adobe + * Copyright 2024 Adobeststua * All Rights Reserved. */ --> From 419fefed592625baa5b5360bcba138a4802bd9f1 Mon Sep 17 00:00:00 2001 From: NarendraKumarDK <del14767@adobe.com> Date: Wed, 30 Oct 2024 22:37:23 +0530 Subject: [PATCH 430/460] ACQE-7048:AdminEmailTemplateForStoredXSSTest --- .../Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml index 730332a2e1efc..932b63af8109f 100644 --- a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml +++ b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml @@ -16,5 +16,3 @@ <data key="expectedTemplate"> </data> </entity> </entities> - - From cf94da4599530ed98573a75c6423813acb8cddc8 Mon Sep 17 00:00:00 2001 From: Antonio Pedicini <apedicini@sqli.com> Date: Thu, 31 Oct 2024 18:27:02 +0000 Subject: [PATCH 431/460] issue 37750: only img-src and connection-src directives changed --- app/code/Magento/GoogleGtag/etc/csp_whitelist.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml b/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml index 9a8e90b852a87..660a697858879 100644 --- a/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml +++ b/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml @@ -12,8 +12,8 @@ <values> <value id="google_ad_services_conversion" type="host">googleads.g.doubleclick.net</value> <value id="google_ad_services" type="host">www.googleadservices.com</value> - <value id="google_analytics" type="host">*.google-analytics.com</value> - <value id="google_analytics_4" type="host">*.analytics.google.com</value> + <value id="google_analytics" type="host">www.google-analytics.com</value> + <value id="google_analytics_4" type="host">analytics.google.com</value> <value id="google_tag_manager" type="host">www.googletagmanager.com</value> </values> </policy> From 6e26a5ec96cf2aa6fe2fd327b2f52a52140fe11a Mon Sep 17 00:00:00 2001 From: Alexandra Zota <zota@adobe.com> Date: Fri, 1 Nov 2024 16:36:31 +0200 Subject: [PATCH 432/460] ACP2E-3324: fix static error due to copyrights --- app/code/Magento/Theme/Model/Data/Design/ConfigFactory.php | 4 ++-- app/code/Magento/Theme/Model/Design/Config/Validator.php | 4 ++-- .../Theme/Test/Unit/Model/Data/Design/ConfigFactoryTest.php | 4 ++-- app/code/Magento/Theme/etc/adminhtml/di.xml | 4 ++-- app/code/Magento/Theme/etc/di.xml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/code/Magento/Theme/Model/Data/Design/ConfigFactory.php b/app/code/Magento/Theme/Model/Data/Design/ConfigFactory.php index f77f998d77b70..4e3a84a113322 100644 --- a/app/code/Magento/Theme/Model/Data/Design/ConfigFactory.php +++ b/app/code/Magento/Theme/Model/Data/Design/ConfigFactory.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ namespace Magento\Theme\Model\Data\Design; diff --git a/app/code/Magento/Theme/Model/Design/Config/Validator.php b/app/code/Magento/Theme/Model/Design/Config/Validator.php index 8e9ba78bacde6..90cf311616f26 100644 --- a/app/code/Magento/Theme/Model/Design/Config/Validator.php +++ b/app/code/Magento/Theme/Model/Design/Config/Validator.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2016 Adobe + * All Rights Reserved. */ namespace Magento\Theme\Model\Design\Config; diff --git a/app/code/Magento/Theme/Test/Unit/Model/Data/Design/ConfigFactoryTest.php b/app/code/Magento/Theme/Test/Unit/Model/Data/Design/ConfigFactoryTest.php index 83cb08aea360e..385c9b109bec4 100644 --- a/app/code/Magento/Theme/Test/Unit/Model/Data/Design/ConfigFactoryTest.php +++ b/app/code/Magento/Theme/Test/Unit/Model/Data/Design/ConfigFactoryTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ declare(strict_types=1); diff --git a/app/code/Magento/Theme/etc/adminhtml/di.xml b/app/code/Magento/Theme/etc/adminhtml/di.xml index 6a3d3d9ac110f..434830a055de6 100644 --- a/app/code/Magento/Theme/etc/adminhtml/di.xml +++ b/app/code/Magento/Theme/etc/adminhtml/di.xml @@ -1,8 +1,8 @@ <?xml version="1.0"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2013 Adobe + * All Rights Reserved. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> diff --git a/app/code/Magento/Theme/etc/di.xml b/app/code/Magento/Theme/etc/di.xml index 6fcf9cd095505..d5ca088bd3c0c 100644 --- a/app/code/Magento/Theme/etc/di.xml +++ b/app/code/Magento/Theme/etc/di.xml @@ -1,8 +1,8 @@ <?xml version="1.0"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2012 Adobe + * All Rights Reserved. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> From 2194208202656abd4499ac5fe0aec7de73da6954 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Mon, 4 Nov 2024 10:44:13 +0200 Subject: [PATCH 433/460] ACP2E-3403: Cart Price Rules Miscalculating Discount --- app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php | 4 ++-- .../Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php | 4 ++-- .../SalesRule/Model/Rule/Action/Discount/CartFixed.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php b/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php index c4f461fd9d435..3d0e1acca00ed 100644 --- a/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php +++ b/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2011 Adobe + * All Rights Reserved. */ namespace Magento\Quote\Model\Quote\Item; diff --git a/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php b/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php index a6a809f623066..47f79b74810c9 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2014 Adobe + * All Rights Reserved. */ declare(strict_types=1); diff --git a/app/code/Magento/SalesRule/Model/Rule/Action/Discount/CartFixed.php b/app/code/Magento/SalesRule/Model/Rule/Action/Discount/CartFixed.php index 5018f0748d387..6cefea2557daa 100644 --- a/app/code/Magento/SalesRule/Model/Rule/Action/Discount/CartFixed.php +++ b/app/code/Magento/SalesRule/Model/Rule/Action/Discount/CartFixed.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2014 Adobe + * All Rights Reserved. */ namespace Magento\SalesRule\Model\Rule\Action\Discount; From 5e81096c5b0666534539478d7c6065f89fd99a76 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Mon, 4 Nov 2024 15:09:26 +0200 Subject: [PATCH 434/460] ACP2E-3403: Cart Price Rules Miscalculating Discount --- .../Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php b/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php index 75693c5ca9bce..fea82729d4950 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/AbstractItemTest.php @@ -50,7 +50,8 @@ public function testGetTotalDiscountAmount($expectedDiscountAmount, $children, $ $this->assertEquals($expectedDiscountAmount, $totalDiscountAmount); } - protected function getMockForAbstractItem($childDiscountAmount) { + protected function getMockForAbstractItem($childDiscountAmount) + { $childItemMock = $this->getMockForAbstractClass( AbstractItem::class, [], From de9430517285caa3ba043cf95f69d89a17de5a37 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Tue, 5 Nov 2024 11:11:07 +0530 Subject: [PATCH 435/460] ACQE-6430 | Resolved conflicts --- .../Paypal/Test/Mftf/Data/PaypalData.xml | 70 +++++++++++++++---- 1 file changed, 55 insertions(+), 15 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index af2fec4cb158c..2373e93ac31d6 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -127,7 +127,51 @@ <entity name="Payer"> <data key="firstName">Alex</data> </entity> - + <entity name="PaypalPayflowAdvancedConfig" type="paypal_payflow_Advanced_config_state"> + <requiredEntity type="business_account">PaypalPayflowAdvancedBusinessAccount</requiredEntity> + <requiredEntity type="partner">EnterPaypalPayAdvancedPartner</requiredEntity> + <requiredEntity type="user">EnterPaypalPayAdvancedUser</requiredEntity> + <requiredEntity type="vendor">EnterPaypalPayAdvancedVendor</requiredEntity> + <requiredEntity type="pwd">EnterPaymentAdvancedPassword</requiredEntity> + <requiredEntity type="sandbox_flag">EnablePaymentAdvancedSandbox</requiredEntity> + <requiredEntity type="use_proxy">UseProxyAdvanced</requiredEntity> + </entity> + <entity name="EnterPaypalPayAdvancedPartner" type="text"> + <data key="path">payment/payflow_advanced/partner</data> + <data key="value">{{_CREDS.magento/paypal_paymentsflowlink_partner}}</data> + </entity> + <entity name="EnterPaypalPayAdvancedVendor" type="text"> + <data key="path">payment/payflow_advanced/vendor</data> + <data key="value">{{_CREDS.magento/paypal_paymentsflowlink_vendor}}</data> + </entity> + <entity name="EnterPaypalPayAdvancedUser" type="password"> + <data key="path">payment/payflow_advanced/user</data> + <data key="value">{{_CREDS.magento/paypal_paymentsflowlink_user}}</data> + </entity> + <entity name="EnterPaymentAdvancedPassword" type="password"> + <data key="path">payment/payflow_advanced/pwd</data> + <data key="value">{{_CREDS.magento/paypal_paymentsflowlink_password}}</data> + </entity> + <entity name="EnablePaymentAdvancedSandbox"> + <data key="path">payment/payflow_advanced/sandbox_flag</data> + <data key="value">1</data> + </entity> + <entity name="EnablePaymentAdvancedSolution"> + <data key="path">payment/payflow_advanced/active</data> + <data key="value">1</data> + </entity> + <entity name="DisablePaymentAdvancedSolution"> + <data key="path">payment/payflow_advanced/active</data> + <data key="value">0</data> + </entity> + <entity name="EnablePaymentAdvancedPaypalCredit"> + <data key="path">payment/payflow_express_bml/active</data> + <data key="value">1</data> + </entity> + <entity name="DisablePaymentAdvancedPaypalCredit"> + <data key="path">payment/payflow_express_bml/active</data> + <data key="value">0</data> + </entity> <!-- configuration used for paypal payflow pro --> <entity name="EnablePaypalPayflowProWithVault" type="custom_paypal_payflow_pro_config_state"> <requiredEntity type="enable_paypal_payflow">EnablePaypalPayflowProMethod</requiredEntity> @@ -191,9 +235,11 @@ <data key="value">0</data> </entity> <entity name="EnablePaypalPayflowProVault" type="payflowpro_cc_vault_active"> + <data key="path">payment/payflowpro_cc_vault/active</data> <data key="value">1</data> </entity> <entity name="DisablePaypalPayflowProVault" type="payflowpro_cc_vault_active"> + <data key="path">payment/payflowpro_cc_vault/active</data> <data key="value">0</data> </entity> <entity name="EnablePaypalPayStandard"> @@ -231,20 +277,13 @@ <data key="paypal_express_api_signature">AFcWxV21C7fd0v3bYYYRCpSSRl31AqoP3QLd.JUUpDPuPpQIgT0-m401</data> <data key="paypal_express_merchantID">54Z2EE6T7PRB4</data> </entity> - <!-- configuration used for paypal PaymentsAdvanced--> - <entity name="SamplePaypalPaymentsAdvancedConfig" type="payflow_advanced_config"> - <data key="payflow_advanced_partner">PayPal</data> - <data key="payflow_advanced_user">mpilink</data> - <data key="payflow_advanced_vendor">mpilink</data> - <data key="payflow_advanced_password">1234_1234L!</data> - </entity> <entity name="SamplePaypalPaymentsProConfig" type="paypal_paymentspro_config"> <data key="paypal_paymentspro_parner">PayPal</data> <data key="paypal_paymentspro_user">MksGLTest</data> <data key="paypal_paymentspro_vendor">MksGLTest</data> <data key="paypal_paymentspro_password">Abcd@123</data> </entity> - <entity name="SamplePaypalPaymentsFlowLinkConfig" type="paypal_payment_flow_Link_config"> + <entity name="SamplePaypalPaymentsFlowLinkConfig" type="paypal_payment_flow_Link_config"> <data key="paypal_paymentsflowlink_businessacct">us_m2_biz@ebay.com</data> <data key="paypal_paymentsflowlink_partner">PayPal</data> <data key="paypal_paymentsflowlink_user">mpilink</data> @@ -257,6 +296,13 @@ <data key="year">25</data> <data key="cvv">123</data> </entity> + <!-- configuration used for paypal PaymentsAdvanced--> + <entity name="SamplePaypalPaymentsAdvancedConfig" type="payflow_advanced_config"> + <data key="payflow_advanced_partner">PayPal</data> + <data key="payflow_advanced_user">mpilink</data> + <data key="payflow_advanced_vendor">mpilink</data> + <data key="payflow_advanced_password">1234_1234L!</data> + </entity> <entity name="EnablePaypalPayStandardNew"> <data key="path">payment/wps_express/active</data> <data key="value">1</data> @@ -265,10 +311,4 @@ <data key="path">payment/wps_express/active</data> <data key="value">0</data> </entity> - <entity name="SamplePaypalPaymentsAdvancedConfig" type="payflow_advanced_config"> - <data key="payflow_advanced_partner">PayPal</data> - <data key="payflow_advanced_user">mpilink</data> - <data key="payflow_advanced_vendor">mpilink</data> - <data key="payflow_advanced_password">1234_1234L!</data> - </entity> </entities> From 880237b5be5638d35575208163b13aedea328ef4 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:24:01 +0530 Subject: [PATCH 436/460] ACQE-7157 | Mainline PR Deployment Conflicts Fix --- app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml index 1be62d20bb351..fa38754b133b0 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml @@ -697,7 +697,6 @@ <data key="uses_per_coupon">2</data> <data key="simple_free_shipping">0</data> </entity> -<<<<<<< HEAD <entity name="CustomSalesRuleWithNoCouponCode" type="SalesRule"> <data key="name" unique="suffix">SalesRule</data> <data key="websites">Main Website</data> From 92c791c0b07a0b4c34fa950d6e52a425c5f2bf33 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:50:19 +0530 Subject: [PATCH 437/460] ACQE-7157 | Mainline PR Deployment --- ...reateCustomConditionInActionTabInCartPriceRuleActionGroup.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml index d8a1794708a54..52bb85c42092b 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml @@ -16,7 +16,6 @@ <argument name="productAttribute" type="string" defaultValue="Category"/> <argument name="categoryId" type="string" defaultValue="$$createSecondCategory.id$$"/> </arguments> - <conditionalClick selector="{{AdminCartPriceRulesFormSection.actionsHeader}}" dependentSelector="{{AdminCartPriceRulesFormSection.actionsHeaderOpen}}" visible="false" stepKey="clickToExpandActions"/> <scrollTo selector="{{AdminCartPriceRulesFormSection.actionsHeader}}" stepKey="scrollToActionsFieldset"/> <waitForElementVisible selector="{{AdminCartPriceRulesFormSection.apply}}" stepKey="waitActionsFieldsetFullyOpened"/> From 586149800b161bb8dd9ca7acbd1a0e38ccbe97f5 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:50:42 +0530 Subject: [PATCH 438/460] ACQE-7157 | Mainline PR Deployment --- .../AdminCreateCustomConditionInCartPriceRuleActionGroup.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml index 93ecdc3279ec1..3610ff8b4df63 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml @@ -17,7 +17,6 @@ <argument name="productAttribute" type="string" defaultValue="Category"/> <argument name="categoryId" type="string" defaultValue="$$createFirstCategory.id$$"/> </arguments> - <scrollTo selector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" stepKey="scrollToConditionsHeader"/> <conditionalClick selector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" dependentSelector="{{AdminCartPriceRulesFormSection.conditionsHeader}}" visible="true" stepKey="clickToExpandConditions"/> <click selector="{{AdminCartPriceRulesFormSection.addNewCondition('1')}}" stepKey="clickOnAddNewCondition"/> From 3c4117ba31e9711fd4f16c94f0ddd54a6f03f3aa Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:19:29 +0530 Subject: [PATCH 439/460] ACQE-7157 | Mainline PR Deployment Reverting the file --- ...PaypalPaylaterConfigurationActionGroup.xml | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml deleted file mode 100644 index ae9ed3a1acd32..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml +++ /dev/null @@ -1,31 +0,0 @@ -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminEnablePaypalPaylaterConfigurationActionGroup" > - <annotations> - <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> - </annotations> - <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonToClickable"/> - <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablepaylaterExp"/> - <waitForPageLoad stepKey="waitForAdvisePageLoad"/> - <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="waitForPayLaterDropdownClickable"/> - <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateToClicked"/> - <waitForPageLoad stepKey="waitForAdvisePaylaterDropdown"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> - <waitForElementClickable selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> - <click selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> - <selectOption selector ="{{AdminConfigPaypalCartPagePaylaterSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> - </actionGroup> -</actionGroups> From 3302c788984cc061e638cdeaae2d0506ebccbc29 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:20:02 +0530 Subject: [PATCH 440/460] ACQE-7157 | Mainline PR Deployment Deleting file --- ...minConfigPaypalCartPagePaylaterSection.xml | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100755 app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml deleted file mode 100755 index 32bb2e211e0ab..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="AdminConfigPaypalCartPagePaylaterSection"> - <element name="expandCheckoutCartPage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> - <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> - <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> - <element name="styleLayout" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_stylelayout" parameterized="true" /> - <element name="logoType" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logotype" parameterized="true" /> - <element name="logoPosition" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logoposition" parameterized="true" /> - <element name="textColor" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_textcolor" parameterized="true" /> - </section> -</sections> From 2d42f3d8af95210b2be858325906bd1a58125ab8 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:20:29 +0530 Subject: [PATCH 441/460] ACQE-7157 | Mainline PR Deployment Deleting the file --- .../Suite/ConfigurePaypalPaylaterSuite.xml | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml deleted file mode 100644 index 1d6b2ddfe0e75..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> - <suite name="ConfigurePaypalPaylaterSuite"> - <before> - <!-- Login --> - <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> - <actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="ConfigPayPalExpress"> - <argument name="credentials" value="SamplePaypalExpressConfig2"/> - </actionGroup> - <!--Enable Paylater Solution On Admin Cart Page --> - <actionGroup ref="AdminEnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaylaterOnAdminCartConfiguration"> - </actionGroup> - <!--Click on Save configure Button --> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> - </actionGroup> - </before> - <after> - <!-- Cleanup Paypal configurations --> - <magentoCLI command="config:set payment/paypal_express/active 0" stepKey="disablePayPalExpress"/> - <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> - <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> - <argument name="tags" value="config full_page"/> - </actionGroup> - </after> - <include> - <group name="paypalPayLater"/> - </include> - </suite> -</suites> From 9c25c3c111e315f380c16914b11e852571ac86f8 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Tue, 5 Nov 2024 14:55:38 +0530 Subject: [PATCH 442/460] ACQE-7157 | Mainline deployment added copywrite --- ...DynamicBundleProductDifferentCartRulesTest.xml | 4 ++-- .../Catalog/Test/Mftf/Data/ProductData.xml | 4 ++-- ...rmsAndConditionsCustomStoreViewActionGroup.xml | 4 ++-- ...rontTermInCheckoutAndPlaceOrderActionGroup.xml | 4 ++-- .../Test/Mftf/Data/TermData.xml | 4 ++-- ...ndConditionsPresentedForNonMainWebsiteTest.xml | 5 ++--- .../Test/Mftf/Data/ConfigurableProductData.xml | 4 ++-- .../AdminImportCurrencyRatesActionGroup.xml | 13 ++++++------- ...dminNavigateToCurrencySetupPageActionGroup.xml | 5 ++--- .../Mftf/Section/AdminCurrencyRatesSection.xml | 4 ++-- .../Mftf/Section/AdminCurrencySetupSection.xml | 5 ++--- .../Test/Mftf/Data/EmailTemplatestoredXSSData.xml | 15 +++++++-------- .../Test/AdminEmailTemplateForStoredXSSTest.xml | 5 ++--- ...ssertOtherPaypalPaymentSolutionActionGroup.xml | 5 ++--- ...inAssertPaypalCreditPaymentsProActionGroup.xml | 5 ++--- .../AdminAssetForPayallInOneActionGroup.xml | 4 ++-- .../AdminClearPaymentAdvancedDataActionGroup.xml | 4 ++-- .../AdminClearPaymentsProActionGroup.xml | 4 ++-- ...ForPaymentsAdvancedPaypalCreditActionGroup.xml | 5 ++--- .../AdminConfigPaymentsAdvancedActionGroup.xml | 4 ++-- ...ApiConfigurableProductForPayPalActionGroup.xml | 4 ++-- ...blePaymentAdvancedConfigurationActionGroup.xml | 4 ++-- ...lStandardEnableForGuestCheckoutActionGroup.xml | 4 ++-- ...ymentInPaymentPageGuestCheckoutActionGroup.xml | 4 ++-- ...DefaultValuesInPaylaterCartPageActionGroup.xml | 5 +++-- ...inToPayPalPaymentAccountTwoStepActionGroup.xml | 4 ++-- .../SwitchToPayPalGroupBtnActionGroup.xml | 6 +++--- .../Paypal/Test/Mftf/Data/PaypalConfigData.xml | 4 ++-- .../Magento/Paypal/Test/Mftf/Data/PaypalData.xml | 4 ++-- .../AdminConfigPaymentsAdvancedSection.xml | 4 ++-- ...inPayPalStandardConfigGuestCheckoutSection.xml | 5 +++-- .../AdminPaypalCheckoutCartPageConfigSection.xml | 4 ++-- .../Section/PayPalPaymentsProConfigSection.xml | 4 ++-- .../Section/PaymentsAdvancedConfigSection.xml | 4 ++-- .../Mftf/Suite/ConfigPayPalStandardNewSuite.xml | 4 ++-- .../Test/AdminCancelPaypalExpressCheckoutTest.xml | 4 ++-- ...inCheckConfigPaymentsProInUnitedstatesTest.xml | 4 ++-- .../Test/AdminConfigForPaypalPaylaterTest.xml | 4 ++-- ...nConfigPaymentsAdvancedForPaypalCreditTest.xml | 4 ++-- .../Mftf/Test/AdminConfigPaymentsAdvancedTest.xml | 4 ++-- ...UsingPayPalPaymentsStandardAndFlatRateTest.xml | 4 ++-- ...ASalesOrderPlacedWithPayPalPaymentsProTest.xml | 4 ++-- ...nAssertTransactionIdOfVoidOrderActionGroup.xml | 4 ++-- ...uthorizationTransactionsInOrderActionGroup.xml | 5 +++-- ...CorrectnessInvoicedItemInBundleProductTest.xml | 5 ++--- ...itionInActionTabInCartPriceRuleActionGroup.xml | 4 ++-- ...eCustomConditionInCartPriceRuleActionGroup.xml | 5 ++--- .../SalesRule/Test/Mftf/Data/SalesRuleData.xml | 4 ++-- .../Section/AdminCartPriceRulesFormSection.xml | 4 ++-- 49 files changed, 111 insertions(+), 119 deletions(-) diff --git a/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml b/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml index 7faa08a0c2e30..4b7ae5666b5b2 100644 --- a/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml +++ b/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontVerifyDiscountOnDynamicBundleProductDifferentCartRulesTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml b/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml index d22d07652a87b..948c126821ad7 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml index 6b31e0ae1e72d..e356685878e0a 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/AdminFillTermsAndConditionsCustomStoreViewActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml index 7d28cc7c30c1d..029dd4f9ea307 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/ActionGroup/StorefrontTermInCheckoutAndPlaceOrderActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml index 7c4ad6068174c..9aaedfb42448b 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Data/TermData.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml index cb364fa0d28c4..45f415c87b738 100644 --- a/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml +++ b/app/code/Magento/CheckoutAgreements/Test/Mftf/Test/AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="AssertStorefrontTermsAndConditionsPresentedForNonMainWebsiteTest"> diff --git a/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml b/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml index 96493beb0114d..454b8fe0479f9 100644 --- a/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml +++ b/app/code/Magento/ConfigurableProduct/Test/Mftf/Data/ConfigurableProductData.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml index 96caa2218c318..eb909611d37b9 100644 --- a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml +++ b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminImportCurrencyRatesActionGroup.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - --> - +<!-- + /** + * Copyright 2024 Adobe + * All Rights Reserved. + */ +--> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminImportCurrencyRatesActionGroup"> diff --git a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml index 8d50bbe05a693..dde56d5510d4b 100644 --- a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml +++ b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminNavigateToCurrencySetupPageActionGroup.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminNavigateToCurrencySetupPageActionGroup"> diff --git a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml index 74894dec28afd..677b7a5df8860 100644 --- a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml +++ b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencyRatesSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml index e5810b4f10285..36787adb0543c 100644 --- a/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml +++ b/app/code/Magento/Directory/Test/Mftf/Section/AdminCurrencySetupSection.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="AdminCurrencySetupSection"> diff --git a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml index 932b63af8109f..d6f2fa605b2b1 100644 --- a/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml +++ b/app/code/Magento/Email/Test/Mftf/Data/EmailTemplatestoredXSSData.xml @@ -1,12 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - * Copyright 2024 Adobe - * All Rights Reserved. - */ - --> +<!-- + /** + * Copyright 2024 Adobe + * All Rights Reserved. + */ +--> + <entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> <entity name="EmailTemplateWithStoreddXSS" type="template"> diff --git a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml index aacf44a3e461a..a03111450adec 100644 --- a/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml +++ b/app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplateForStoredXSSTest.xml @@ -1,12 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - * Copyright 2024 Adobeststua + * Copyright 2024 Adobe * All Rights Reserved. */ --> + <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="AdminEmailTemplateForStoredXSSTest"> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml index 1ea67d2f37a59..e2c122cd56b54 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminAssertOtherPaypalPaymentSolutionActionGroup"> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml index 6b613ab58d569..14e1ca989f9ed 100755 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminAssertPaypalCreditPaymentsProActionGroup" extends="AdminConfigurePayPalPaymentsProActionGroup"> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml index ef1f8c1491be8..937b1e75648b4 100755 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml index dd0a548170550..c4a546931714d 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml index f357b67de7e3d..a312639a0300a 100755 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml index 336d9c1c4d87b..542d9f64da536 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminConfigForPaymentsAdvancedPaypalCreditActionGroup"> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml index 7bb41a488fe0b..4094dd88b57ed 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml index 66055a1c1eeee..6833c2423d311 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductForPayPalActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml index 159ea95bf00c7..9e0e3b6d5a38b 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml index c7df395a044c9..66faaa0b6e508 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalStandardEnableForGuestCheckoutActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml index 8add32a853a7c..28e4326f97978 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminSelectPaypalStandardPaymentInPaymentPageGuestCheckoutActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml index 868c70bca7732..418e8e7892279 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup.xml @@ -1,9 +1,10 @@ <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> + <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AssertAdminConfigForDefaultValuesInPaylaterCartPageActionGroup"> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml index 286f63756ce8a..27a0152e313c3 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalPaymentAccountTwoStepActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml index ec6d3bc084300..42eb176ec2ee2 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/SwitchToPayPalGroupBtnActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" @@ -23,4 +23,4 @@ <click selector="{{CheckoutPaymentSection.PayPalBtn}}" stepKey="clickPayPalBtn"/> <switchToIFrame stepKey="switchBackToMainFrame"/> </actionGroup> -</actionGroups> \ No newline at end of file +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml index 90fc2e90231bf..01502ce5ff687 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalConfigData.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml index 2373e93ac31d6..a84d92d76cc74 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Data/PaypalData.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml index adceca9a15549..51232f89d8931 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml index ad0103d4461c3..840cfb4b577ed 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPayPalStandardConfigGuestCheckoutSection.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> + <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="AdminPayPalStandardConfigGuestCheckoutSection"> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminPaypalCheckoutCartPageConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPaypalCheckoutCartPageConfigSection.xml index d276afc415bba..f2e8bdc461806 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminPaypalCheckoutCartPageConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminPaypalCheckoutCartPageConfigSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml index 6a0844ccd24a3..8351ffbe4aae3 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml index 9b5e0e0845842..5702fdbeda70f 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml index 734e5ff6389bb..8b9d294b6b8e5 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigPayPalStandardNewSuite.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml index aecec9135fac2..6865c9727c08b 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCancelPaypalExpressCheckoutTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml index 3ac027e3d3141..7be926d58eda9 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index f12346cf9022b..a29d4ace6bc7e 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml index ce130686b2882..dd731150b9bbb 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml index 5897feddfa534..df8576cb67a4b 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml index f31c22bc2629a..883c084f42287 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontGuestCheckoutUsingPayPalPaymentsStandardAndFlatRateTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml index 4444d74264b90..ecaa0469c5ce3 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/VoidASalesOrderPlacedWithPayPalPaymentsProTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminAssertTransactionIdOfVoidOrderActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminAssertTransactionIdOfVoidOrderActionGroup.xml index 62248e411c125..f4e96dc29266c 100644 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminAssertTransactionIdOfVoidOrderActionGroup.xml +++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminAssertTransactionIdOfVoidOrderActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml index 48fd57e96025f..c4def82068c14 100644 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml +++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminViewAuthorizationTransactionsInOrderActionGroup.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> + <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminViewAuthorizationTransactionsInOrderActionGroup" extends="AdminAssertTransactionIdOfVoidOrderActionGroup"> diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml index e1976ff6c44da..94ef04890f0c7 100644 --- a/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml +++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminCorrectnessInvoicedItemInBundleProductTest.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="AdminCorrectnessInvoicedItemInBundleProductTest"> diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml index 52bb85c42092b..ab46055db3c0b 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInActionTabInCartPriceRuleActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml index 3610ff8b4df63..b61b56f77aa10 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCreateCustomConditionInCartPriceRuleActionGroup.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminCreateCustomConditionInCartPriceRuleActionGroup"> diff --git a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml index fa38754b133b0..c29efe4c286cb 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml b/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml index 40656270f0454..07268eaca8775 100644 --- a/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml +++ b/app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" From dc4198dbcc623d1ae281f6822ad1f72b76b94a99 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Tue, 5 Nov 2024 14:58:58 +0530 Subject: [PATCH 443/460] ACQE-7157 | Mainline deployment added copywrite --- .../ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml index d54952e5af941..baf3158d398ab 100644 --- a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml +++ b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminExpandCurrencyOptionsActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> From a38a0719af08a4f5f64c7b6cc1f7ccf962312367 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Tue, 5 Nov 2024 16:02:42 +0530 Subject: [PATCH 444/460] ACQE-7157 | Mainline Deployment 6 | Added copywrite --- .../Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml | 4 ++-- ...ateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml | 4 ++-- ...ntLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml index 0cb94f5cce3b3..8fb6559f9b355 100644 --- a/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml +++ b/app/code/Magento/Directory/Test/Mftf/ActionGroup/AdminSetDefaultCurrencyActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Directory/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml b/app/code/Magento/Directory/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml index d35d9d3493625..50fe97d8f2d16 100644 --- a/app/code/Magento/Directory/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml +++ b/app/code/Magento/Directory/Test/Mftf/Test/UpdateCurrencyRateForQuotesInStatusesOrderedAndClosedTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml index 4ea51ff3a2a84..4eec1a2e10e39 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/StorefrontLoginToPayPalStandardPaymentGuestCheckoutActionGroup.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> From 8f170fb0e5e1401328083025aeacb6b54c7dd8cb Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Tue, 5 Nov 2024 16:15:16 +0530 Subject: [PATCH 445/460] ACQE-6491:Default configuration for paypalpaylater New Testcase Added --- ...PaypalPaylaterConfigurationActionGroup.xml | 31 ++++++++++++++++ ...minConfigPaypalCartPagePaylaterSection.xml | 20 +++++++++++ .../Suite/ConfigurePaypalPaylaterSuite.xml | 35 +++++++++++++++++++ .../Test/AdminConfigForPaypalPaylaterTest.xml | 29 +++++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml create mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml new file mode 100644 index 0000000000000..ae9ed3a1acd32 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml @@ -0,0 +1,31 @@ +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminEnablePaypalPaylaterConfigurationActionGroup" > + <annotations> + <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> + </annotations> + <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonToClickable"/> + <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablepaylaterExp"/> + <waitForPageLoad stepKey="waitForAdvisePageLoad"/> + <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="waitForPayLaterDropdownClickable"/> + <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateToClicked"/> + <waitForPageLoad stepKey="waitForAdvisePaylaterDropdown"/> + <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> + <waitForElementClickable selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> + <click selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> + <selectOption selector ="{{AdminConfigPaypalCartPagePaylaterSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> + <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml new file mode 100644 index 0000000000000..32bb2e211e0ab --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="AdminConfigPaypalCartPagePaylaterSection"> + <element name="expandCheckoutCartPage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> + <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> + <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> + <element name="styleLayout" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_stylelayout" parameterized="true" /> + <element name="logoType" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logotype" parameterized="true" /> + <element name="logoPosition" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logoposition" parameterized="true" /> + <element name="textColor" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_textcolor" parameterized="true" /> + </section> +</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml new file mode 100644 index 0000000000000..1d6b2ddfe0e75 --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> + <suite name="ConfigurePaypalPaylaterSuite"> + <before> + <!-- Login --> + <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> + <actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="ConfigPayPalExpress"> + <argument name="credentials" value="SamplePaypalExpressConfig2"/> + </actionGroup> + <!--Enable Paylater Solution On Admin Cart Page --> + <actionGroup ref="AdminEnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaylaterOnAdminCartConfiguration"> + </actionGroup> + <!--Click on Save configure Button --> + <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> + </actionGroup> + </before> + <after> + <!-- Cleanup Paypal configurations --> + <magentoCLI command="config:set payment/paypal_express/active 0" stepKey="disablePayPalExpress"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> + <argument name="tags" value="config full_page"/> + </actionGroup> + </after> + <include> + <group name="paypalPayLater"/> + </include> + </suite> +</suites> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml new file mode 100644 index 0000000000000..00bfd6b4c6fff --- /dev/null +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminConfigForPaypalPaylaterTest"> + <annotations> + <features value="PayPal"/> + <stories value="Payment methods"/> + <title value="Default configuration for paypalpaylater"/> + <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> + <severity value="CRITICAL"/> + <testCaseId value="AC-5644"/> + <group value="paypalPayLater"/> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> + </before> + <after> + <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> + </after> + <!-- Navigate to StoreFront --> + <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> + </test> +</tests> From f7d523afb5a31a76e6fec01505ebd2bcb9eead20 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Tue, 5 Nov 2024 17:01:18 +0530 Subject: [PATCH 446/460] ACQE-6491:Default configuration for paypalpaylater Updated Testcase with Adobe Copyright --- .../Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index 00bfd6b4c6fff..e3fe55534c588 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" From 72603cda5a04c3b3f404169ef68a78041575d302 Mon Sep 17 00:00:00 2001 From: "subrat.pandit" <glo53878@adobe.com> Date: Tue, 5 Nov 2024 17:55:48 +0530 Subject: [PATCH 447/460] ACQE-6491:Default configuration for paypalpaylater Updated with Adobe Copyright --- .../AdminEnablePaypalPaylaterConfigurationActionGroup.xml | 6 +++--- .../Section/AdminConfigPaypalCartPagePaylaterSection.xml | 5 ++--- .../Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml index ae9ed3a1acd32..ed5e1a70efd55 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml @@ -1,10 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> <actionGroup name="AdminEnablePaypalPaylaterConfigurationActionGroup" > diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml index 32bb2e211e0ab..cfcc1052dc6fc 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> - <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="AdminConfigPaypalCartPagePaylaterSection"> diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml index 1d6b2ddfe0e75..71df2a10d7c37 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> From a9ac117cf63157d59054eaf0b6328213e03f6f11 Mon Sep 17 00:00:00 2001 From: engcom-Dash <grp-engcom-vendorworker-Dash@adobe.com> Date: Tue, 5 Nov 2024 19:09:30 +0530 Subject: [PATCH 448/460] 38991: fix static test failure --- app/code/Magento/GoogleGtag/etc/csp_whitelist.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml b/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml index 660a697858879..2667959464aaa 100644 --- a/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml +++ b/app/code/Magento/GoogleGtag/etc/csp_whitelist.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2022 Adobe + * All Rights Reserved. */ --> <csp_whitelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" From c5960b14f6b89618a91c614878164aaf2d08d8dd Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 6 Nov 2024 09:47:03 +0530 Subject: [PATCH 449/460] ACQE-6491 | AC-5667:Default configuration for Paypal Pay Later Message on Checkout Page added pr_exclude as this is the 3rd party test --- .../Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml index e3fe55534c588..d77588c8513d4 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml @@ -16,6 +16,8 @@ <severity value="CRITICAL"/> <testCaseId value="AC-5644"/> <group value="paypalPayLater"/> + <group value="3rd_party_integration"/> + <group value="pr_exclude"/> </annotations> <before> <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> From 775407957809b96c47fedba8abc1257de0e2263c Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:01:42 +0530 Subject: [PATCH 450/460] ACQE-7157 | Mainline PR Deployment reverting back the code --- ...PaypalPaylaterConfigurationActionGroup.xml | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml deleted file mode 100644 index ed5e1a70efd55..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaypalPaylaterConfigurationActionGroup.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminEnablePaypalPaylaterConfigurationActionGroup" > - <annotations> - <description>Enable Paypal Paylater Solution For Paypal Express Checkout</description> - </annotations> - <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="waitForConfigureButtonToClickable"/> - <click selector="{{PayPalExpressCheckoutConfigSection.configureBtn('us')}}" stepKey="configureButtonClicked"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLater('us')}}" userInput="Yes" stepKey="enablepaylaterExp"/> - <waitForPageLoad stepKey="waitForAdvisePageLoad"/> - <waitForElementClickable selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="waitForPayLaterDropdownClickable"/> - <click selector="{{PayPalExpressCheckoutConfigSection.payLaterConfigDropDown('us')}}" stepKey="advertisePaylateToClicked"/> - <waitForPageLoad stepKey="waitForAdvisePaylaterDropdown"/> - <selectOption selector ="{{PayPalExpressCheckoutConfigSection.enablePayLaterIn('us')}}" userInput="Yes" stepKey="enablePaypalLater"/> - <waitForElementClickable selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="waitForCheckoutCartpageClickable"/> - <click selector="{{AdminConfigPaypalCartPagePaylaterSection.expandCheckoutCartPage('us')}}" stepKey="clickCheckoutCart"/> - <selectOption selector ="{{AdminConfigPaypalCartPagePaylaterSection.display('us')}}" userInput="Yes" stepKey="enableDisplayforPaylaterCartpage"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.position('us')}}" userInput="Header (center)" stepKey="seeSelectedPosition"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.styleLayout('us')}}" userInput="Text" stepKey="seeSelectedStyleLayout"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoType('us')}}" userInput="Primary" stepKey="seeSelectedLogoType"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.logoPosition('us')}}" userInput="Left" stepKey="seeSelectedLogoPosition"/> - <seeOptionIsSelected selector="{{AdminConfigPaypalCartPagePaylaterSection.textColor('us')}}" userInput="Black" stepKey="seeSelectedTextColor"/> - </actionGroup> -</actionGroups> From ab2b13bdf69665329f5d9c5ae99b759113d7c2cc Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:02:24 +0530 Subject: [PATCH 451/460] ACQE-7157 | Mainline PR Deployment Reverting the code --- ...minConfigPaypalCartPagePaylaterSection.xml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml deleted file mode 100644 index cfcc1052dc6fc..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaypalCartPagePaylaterSection.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="AdminConfigPaypalCartPagePaylaterSection"> - <element name="expandCheckoutCartPage" type="button" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage-head" parameterized="true"/> - <element name="display" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> - <element name="position" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> - <element name="styleLayout" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_stylelayout" parameterized="true" /> - <element name="logoType" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logotype" parameterized="true" /> - <element name="logoPosition" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_logoposition" parameterized="true" /> - <element name="textColor" type="input" selector="#payment_{{countryCode}}_paypal_alternative_payment_methods_express_checkout_{{countryCode}}_express_checkout_required_advertise_paylater_settings_paylater_cartpage_paylater_cartpage_textcolor" parameterized="true" /> - </section> -</sections> From 17e191479872129efd097f377f7081c55a891a9e Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:02:59 +0530 Subject: [PATCH 452/460] ACQE-7157 | Mainline PR Deployment Reverting the code --- .../Suite/ConfigurePaypalPaylaterSuite.xml | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml b/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml deleted file mode 100644 index 71df2a10d7c37..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Suite/ConfigurePaypalPaylaterSuite.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd"> - <suite name="ConfigurePaypalPaylaterSuite"> - <before> - <!-- Login --> - <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> - <actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="ConfigPayPalExpress"> - <argument name="credentials" value="SamplePaypalExpressConfig2"/> - </actionGroup> - <!--Enable Paylater Solution On Admin Cart Page --> - <actionGroup ref="AdminEnablePaypalPaylaterConfigurationActionGroup" stepKey="enablePaylaterOnAdminCartConfiguration"> - </actionGroup> - <!--Click on Save configure Button --> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveAdminConfiguration"> - </actionGroup> - </before> - <after> - <!-- Cleanup Paypal configurations --> - <magentoCLI command="config:set payment/paypal_express/active 0" stepKey="disablePayPalExpress"/> - <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> - <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> - <argument name="tags" value="config full_page"/> - </actionGroup> - </after> - <include> - <group name="paypalPayLater"/> - </include> - </suite> -</suites> From f66e19a395e7864f634602dd452922d3a0e1f8be Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:03:22 +0530 Subject: [PATCH 453/460] ACQE-7157 | Mainline PR Deployment --- .../Test/AdminConfigForPaypalPaylaterTest.xml | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml deleted file mode 100755 index d77588c8513d4..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigForPaypalPaylaterTest.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminConfigForPaypalPaylaterTest"> - <annotations> - <features value="PayPal"/> - <stories value="Payment methods"/> - <title value="Default configuration for paypalpaylater"/> - <description value="Paypal Pay Later Message should display on Admin Cart Page configuration"/> - <severity value="CRITICAL"/> - <testCaseId value="AC-5644"/> - <group value="paypalPayLater"/> - <group value="3rd_party_integration"/> - <group value="pr_exclude"/> - </annotations> - <before> - <actionGroup ref="AdminLoginActionGroup" stepKey="login"/> - </before> - <after> - <actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/> - </after> - <!-- Navigate to StoreFront --> - <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> - </test> -</tests> From 93739c10912748084f75cb6631ea9af0ba6dbb76 Mon Sep 17 00:00:00 2001 From: Manjusha S <glo24116@adobe.com> Date: Thu, 7 Nov 2024 12:25:04 +0530 Subject: [PATCH 454/460] ACQE-7157 | Mainline PR deployment Reverting back the code as these files have issues --- ...tOtherPaypalPaymentSolutionActionGroup.xml | 24 ---- ...sertPaypalCreditPaymentsProActionGroup.xml | 35 ----- .../AdminAssetForPayallInOneActionGroup.xml | 22 --- ...minClearPaymentAdvancedDataActionGroup.xml | 28 ---- .../AdminClearPaymentsProActionGroup.xml | 43 ------ ...aymentsAdvancedPaypalCreditActionGroup.xml | 30 ----- ...AdminConfigPaymentsAdvancedActionGroup.xml | 42 ------ ...aymentAdvancedConfigurationActionGroup.xml | 38 ------ .../AdminConfigPaymentsAdvancedSection.xml | 34 ----- .../PayPalPaymentsProConfigSection.xml | 8 -- .../Section/PaymentsAdvancedConfigSection.xml | 32 ----- ...eckConfigPaymentsProInUnitedstatesTest.xml | 127 ------------------ ...figPaymentsAdvancedForPaypalCreditTest.xml | 80 ----------- .../Test/AdminConfigPaymentsAdvancedTest.xml | 87 ------------ 14 files changed, 630 deletions(-) delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml delete mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml delete mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml delete mode 100755 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml delete mode 100755 app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml delete mode 100644 app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml deleted file mode 100644 index e2c122cd56b54..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertOtherPaypalPaymentSolutionActionGroup.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminAssertOtherPaypalPaymentSolutionActionGroup"> - <annotations> - <description>Admin navigate to payment configuration page and assert Other Paypal Payment Solution</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab1(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> - <conditionalClick selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" dependentSelector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" visible="false" stepKey="clickPayPalPaymentsSection"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions(countryCode)}}" stepKey="assertPayinAllLink"/> - <waitForElementVisible selector="{{AdminPayPalPayFlowLinkConfigSection.paymentGateway(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml deleted file mode 100755 index 14e1ca989f9ed..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssertPaypalCreditPaymentsProActionGroup.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminAssertPaypalCreditPaymentsProActionGroup" extends="AdminConfigurePayPalPaymentsProActionGroup"> - <annotations> - <description>Configuration for Payments pro with Sample PayPal credentials and Assert Other Paypal Solution</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <remove keyForRemoval="expandOtherPaypalConfigButton"/> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection" before="waitForPayPalPaymentsProConfigureBtn"/> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" userInput="No" stepKey="seeEnableThisSolutionIsSetAsNo" after="enableTestMode"/> - <assertElementContainsAttribute stepKey="seeEnablePaypalCreditIsDisabled" after="seeEnableThisSolutionIsSetAsNo"> - <expectedResult selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" attribute="disabled" type="string"></expectedResult> - </assertElementContainsAttribute> - <assertElementContainsAttribute stepKey="seeEnableVaultIsDisabled" after="scrollToBottom"> - <expectedResult selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" attribute="disabled" type="string"></expectedResult> - </assertElementContainsAttribute> - <!-- Check that Paypal Credit and Vault is set to No and it is disabled --> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" userInput="No" stepKey="seePaypalCreditIsSetAsNo" after="seeEnablePaypalCreditIsDisabled"/> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" userInput="No" stepKey="seeValultIsSetAsNo" after="seeEnableVaultIsDisabled"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution(countryCode)}}" stepKey="assertGreenTickMarkForEnableThisSolutionDropdown" after="enableSolution"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledPaypalCredit(countryCode)}}" stepKey="assertGreenTickMarkForEnablePaypalCredit" after="assertGreenTickMarkForEnableThisSolutionDropdown"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.sortOrder(countryCode)}}" stepKey="assertSortOrder" after="assertGreenTickMarkForEnablePaypalCredit"/> - <selectOption selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" userInput="Yes" stepKey="setValultIsSetAsYes" before="waitForSaveButtonBecomeClickable"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault(countryCode)}}" stepKey="assertGreenTickMarkForEnableVaultDropdown" after="setValultIsSetAsYes"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml deleted file mode 100755 index 937b1e75648b4..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminAssetForPayallInOneActionGroup.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminAssetForPayallInOneActionGroup" extends="AdminAssertOtherPaypalPaymentSolutionActionGroup"> - <annotations> - <description>Admin navigate to payment configuration page and assert Pay All In One Link and Other Payment Services</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.paymentsAdvanced(countryCode)}}" stepKey="assertPaymentAdvanced" after="assertPayinAllLink"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentsPro" after="assertPaymentAdvanced"/> - <waitForElementVisible selector="{{AdminPaypalStandardConfigSection.configureBtn(countryCode)}}" stepKey="assertPaymentStandard" after="assertPaymentsPro"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml deleted file mode 100644 index c4a546931714d..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentAdvancedDataActionGroup.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminClearPaymentAdvancedDataActionGroup"> - <annotations> - <description>Admin goes to payments advanced configuration and clears provided Sample PayPal credentials</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <waitForPageLoad stepKey="waitForPageLoad1"/> - <clearField selector ="{{AdminConfigPaymentsAdvancedSection.email(countryCode)}}" stepKey="clearInputEmailField"/> - <clearField selector ="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> - <clearField selector ="{{AdminConfigPaymentsAdvancedSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> - <clearField selector ="{{AdminConfigPaymentsAdvancedSection.user(countryCode)}}" stepKey="clearInputUsereField"/> - <clearField selector ="{{AdminConfigPaymentsAdvancedSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> - <selectOption selector ="{{AdminConfigPaymentsAdvancedSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> - <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.enabledSolution(countryCode)}}" stepKey="enabledSolutions"/> - <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.enabledPaypalCredit(countryCode)}}" stepKey="disabledPaypalCredit"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml deleted file mode 100755 index a312639a0300a..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminClearPaymentsProActionGroup.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminClearPaymentsProActionGroup"> - <annotations> - <description>Admin goes to payments pro configuration and clears provided Sample PayPal credentials</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> - <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="waitForPayPalPaymentsProConfigureBtn"/> - <click selector ="{{PayPalPaymentsProConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalPaymentsProConfigureBtn"/> - <waitForPageLoad stepKey="waitForPaymethodConfigPageLoad"/> - <clearField selector="{{PayPalPaymentsProConfigSection.partner(countryCode)}}" stepKey="clearInputPartnerField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.vendor(countryCode)}}" stepKey="clearInputVendorField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.user(countryCode)}}" stepKey="clearInputUsereField"/> - <clearField selector="{{PayPalPaymentsProConfigSection.password(countryCode)}}" stepKey="clearInputPasswordField"/> - <selectOption selector="{{PayPalPaymentsProConfigSection.testMode(countryCode)}}" userInput="No" stepKey="disableTestMode"/> - <assertElementContainsAttribute stepKey="seeEnablePaymentsProSolutionIsDisabled"> - <expectedResult selector="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" attribute="disabled" type="string"></expectedResult> - </assertElementContainsAttribute> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableSolution(countryCode)}}" userInput="No" stepKey="seeEnableThisSolutionIsSetAsNo"/> - <assertElementContainsAttribute stepKey="seeEnablePaypalCreditIsDisabled"> - <expectedResult selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" attribute="disabled" type="string"></expectedResult> - </assertElementContainsAttribute> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit(countryCode)}}" userInput="No" stepKey="seePaypalCreditIsSetAsNo" after="seeEnablePaypalCreditIsDisabled"/> - <assertElementContainsAttribute stepKey="seeEnableVaultIsDisabled"> - <expectedResult selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" attribute="disabled" type="string"></expectedResult> - </assertElementContainsAttribute> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault(countryCode)}}" userInput="No" stepKey="seeValultIsSetAsNo" after="seeEnableVaultIsDisabled"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml deleted file mode 100644 index 542d9f64da536..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigForPaymentsAdvancedPaypalCreditActionGroup.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminConfigForPaymentsAdvancedPaypalCreditActionGroup"> - <annotations> - <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> - </annotations> - <arguments> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="expandOtherPaypalConfigButton"/> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.otherPaypalLink(countryCode)}}" stepKey="assertPayinAllLink"/> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paypalPaymentGatewayLink(countryCode)}}" stepKey="assertPaypalPaymentGateway"/> - <scrollTo selector="{{AdminConfigPaymentsAdvancedSection.otherPaypalLink(countryCode)}}" stepKey="scrollPayinAll"/> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="assertPaymentAdvanced"/> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsPro(countryCode)}}" stepKey="assertPaymentsPro"/> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.paymentsStandard(countryCode)}}" stepKey="assertPaymentStandard"/> - <waitForElementClickable selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="waitToClickPaymentAdvanced"/> - <click selector="{{AdminConfigPaymentsAdvancedSection.paymentsAdvanced(countryCode)}}" stepKey="clickPaymentAdvanced"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml deleted file mode 100644 index 4094dd88b57ed..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminConfigPaymentsAdvancedActionGroup.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminConfigPaymentsAdvancedActionGroup"> - <annotations> - <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description> - </annotations> - <arguments> - <argument name="credentials" defaultValue="SamplePaypalPaymentsAdvancedConfig"/> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <waitForElementVisible selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="waitForOtherPayPalPaymentsSection"/> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab(countryCode)}}" visible="false" stepKey="expandOtherPaypalConfigButton"/> - <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.configBtn(countryCode)}}" stepKey="waitForPayPalPaymentsAdvancedConfigureBtn"/> - <click selector ="{{PaymentsAdvancedConfigSection.configBtn(countryCode)}}" stepKey="clickPayPalPaymentsAdvancedConfigureBtn"/> - <scrollTo selector="{{PaymentsAdvancedConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> - <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.partner(countryCode)}}" stepKey="waitForPartner"/> - <fillField selector ="{{PaymentsAdvancedConfigSection.partner(countryCode)}}" userInput="{{credentials.payflow_advanced_partner}}" stepKey="inputPartner"/> - <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.vendor(countryCode)}}" stepKey="waitForVendor"/> - <fillField selector ="{{PaymentsAdvancedConfigSection.vendor(countryCode)}}" userInput="{{credentials.payflow_advanced_vendor}}" stepKey="inputVendor"/> - <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.user(countryCode)}}" stepKey="waitForUser"/> - <fillField selector ="{{PaymentsAdvancedConfigSection.user(countryCode)}}" userInput="{{credentials.payflow_advanced_user}}" stepKey="inputUser"/> - <waitForElementVisible selector="{{PaymentsAdvancedConfigSection.password(countryCode)}}" stepKey="waitForPassword"/> - <fillField selector ="{{PaymentsAdvancedConfigSection.password(countryCode)}}" userInput="{{credentials.payflow_advanced_password}}" stepKey="inputPassword"/> - <selectOption selector="{{PaymentsAdvancedConfigSection.testMode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> - <waitForPageLoad stepKey="waitForPageLoadForEnableSolution"/> - <selectOption selector ="{{PaymentsAdvancedConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> - <selectOption selector ="{{PaymentsAdvancedConfigSection.enablePaypalexp(countryCode)}}" userInput="Yes" stepKey="enablePaypalExperiencelater"/> - <waitForPageLoad stepKey="waitForAdvisePageLoad"/> - <waitForPageLoad stepKey="waitForAdvisepaylaterExpand"/> - <click selector ="{{PaymentsAdvancedConfigSection.advisepaylaterBtn(countryCode)}}" stepKey="clickPayPalPaymentsAdvisepaylatereBtn"/> - <selectOption selector ="{{PaymentsAdvancedConfigSection.payLaterConfigDropDown(countryCode)}}" userInput="Yes" stepKey="enablePaypalPaylater"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml deleted file mode 100644 index 9e0e3b6d5a38b..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminEnablePaymentAdvancedConfigurationActionGroup.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminEnablePaymentAdvancedConfigurationActionGroup"> - <annotations> - <description>Configuration for Payments Advanced and Paypal credit Sample PayPal credentials</description> - </annotations> - <arguments> - <argument name="credentials" defaultValue="SamplePaypalPaymentsAdvancedConfig"/> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <scrollTo selector="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" stepKey="scrollToBottom"/> - <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" stepKey="waitForPartner"/> - <fillField selector ="{{AdminConfigPaymentsAdvancedSection.partner(countryCode)}}" userInput="{{credentials.payflow_advanced_partner}}" stepKey="inputPartner"/> - <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.vendor(countryCode)}}" stepKey="waitForVendor"/> - <fillField selector ="{{AdminConfigPaymentsAdvancedSection.vendor(countryCode)}}" userInput="{{credentials.payflow_advanced_vendor}}" stepKey="inputVendor"/> - <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.user(countryCode)}}" stepKey="waitForUser"/> - <fillField selector ="{{AdminConfigPaymentsAdvancedSection.user(countryCode)}}" userInput="{{credentials.payflow_advanced_user}}" stepKey="inputUser"/> - <waitForElementVisible selector="{{AdminConfigPaymentsAdvancedSection.password(countryCode)}}" stepKey="waitForPassword"/> - <fillField selector ="{{AdminConfigPaymentsAdvancedSection.password(countryCode)}}" userInput="{{credentials.payflow_advanced_password}}" stepKey="inputPassword"/> - <selectOption selector="{{AdminConfigPaymentsAdvancedSection.testMode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> - <wait time="10" stepKey="waitToEnableAdvanced"/> - <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.solution(countryCode)}}" stepKey="activeEnableSolutions"/> - <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.enabledPaypalCredit(countryCode)}}" stepKey="disablePaypalCredit"/> - <waitForPageLoad stepKey="waitForPageLoadForEnableSolution"/> - <selectOption selector ="{{AdminConfigPaymentsAdvancedSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> - <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.solution(countryCode)}}" stepKey="assertEnabledSolutions"/> - <dontSeeElement selector ="{{AdminConfigPaymentsAdvancedSection.paypalCredit(countryCode)}}" stepKey="enablePaypalCredit"/> - <seeElement selector ="{{AdminConfigPaymentsAdvancedSection.sortOrder(countryCode)}}" stepKey="assertSortOrderPaypalCredit"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml deleted file mode 100644 index 51232f89d8931..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Section/AdminConfigPaymentsAdvancedSection.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> - -<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="AdminConfigPaymentsAdvancedSection"> - <element name="paymentsAdvanced" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced-head" parameterized="true"/> - <element name="paymentsPro" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head" parameterized="true"/> - <element name="paymentsStandard" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wps_express-head" parameterized="true"/> - <element name="email" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_business_account" parameterized="true"/> - <element name="partner" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_partner" parameterized="true"/> - <element name="user" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_user" parameterized="true"/> - <element name="vendor" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_vendor" parameterized="true"/> - <element name="password" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_pwd" parameterized="true"/> - <element name="testMode" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_sandbox_flag" parameterized="true" /> - <element name="otherPaypalLink" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> - <element name="paypalPaymentGatewayLink" type="button" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_payment_gateways-head')]" parameterized="true" /> - <element name="enableSolution" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced" parameterized="true"/> - <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_express_checkout_bml" parameterized="true"/> - <element name="enabledSolution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced')]//label[@class='enabled']" parameterized="true"/> - <element name="enabledPaypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_express_checkout_bml')]//label[@class='enabled']" parameterized="true"/> - <element name="solution" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced')]//label[@class='disabled']" parameterized="true"/> - <element name="paypalCredit" type="select" selector="//select[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_express_checkout_bml')]//label[@class='disabled']" parameterized="true"/> - <element name="payFlowEdition" type="button" selector="//span[contains(text(), 'PayPal Express Checkout Payflow Edition')]"/> - <element name="payFlowExpress" type="button" selector="//span[contains(text(), 'PayPal Credit (Payflow Express Bml)')]"/> - <element name="creditCardPayflowAdvanced" type="button" selector="//span[contains(text(), 'Credit Card (Payflow Advanced)')]"/> - <element name="sortOrder" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_express_checkout_bml_sort_order" parameterized="true"/> - </section> -</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml index 8351ffbe4aae3..cf8e594598470 100755 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/PayPalPaymentsProConfigSection.xml @@ -16,13 +16,5 @@ <element name="testMode" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_paypal_payflow_api_settings_sandbox_flag" parameterized="true"/> <element name="enableSolution" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow" parameterized="true"/> <element name="paymentsAdvanced" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced-head" parameterized="true"/> - <element name="enablePaypalCredit" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow" parameterized="true"/> - <element name="enableVault" type="select" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_payflowpro_cc_vault_active" parameterized="true"/> - <element name="disabledEnableSolution" type="select" selector="//*[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_paypal_payflow')]//label[@class='enabled']" parameterized="true"/> - <element name="disabledPaypalCredit" type="select" selector="//*[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_enable_express_checkout_bml_payflow')]//label[@class='enabled']" parameterized="true"/> - <element name="disabledVault" type="select" selector="//*[contains(@id,'payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_payflowpro_cc_vault_active')]//label[@class='enabled']" parameterized="true"/> - <element name="closeButton" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk-head span[class='state-opened']" parameterized="true"/> - <element name="sortOrder" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_wpp_usuk_paypal_payflow_required_express_checkout_bml_sort_order" parameterized="true"/> - <element name="paypalAllInOnePaymentSolutions" type="input" selector="//*[contains(@id, 'payment_{{countryCode}}_paypal_group_all_in_one-head')]" parameterized="true" /> </section> </sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml deleted file mode 100644 index 5702fdbeda70f..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Section/PaymentsAdvancedConfigSection.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="PaymentsAdvancedConfigSection"> - <element name="configBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced-head" parameterized="true"/> - <element name="email" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_business_account" parameterized="true"/> - <element name="partner" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_partner" parameterized="true"/> - <element name="user" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_user" parameterized="true"/> - <element name="vendor" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_vendor" parameterized="true"/> - <element name="password" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_pwd" parameterized="true"/> - <element name="testMode" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_payments_advanced_sandbox_flag" parameterized="true" /> - <element name="enableSolution" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_payflow_advanced" parameterized="true" /> - <element name="enablePaypalexp" type="input" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_enable_paypal_paylater_experience" parameterized="true" /> - <element name="advisepaylaterBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater-head" parameterized="true" /> - <element name="payLaterConfigDropDown" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_paylater_enabled" parameterized="true"/> - <element name="cartBtn" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage-head" parameterized="true"/> - <element name="payLaterDisplay" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> - <element name="displayOption" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage_paylater_cartpage_display" parameterized="true"/> - <element name="payLaterMessage" type="input" selector="//span[text()='Buy now, pay later.']"/> - <element name="positionOption" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_cartpage_paylater_cartpage_position" parameterized="true"/> - <element name="payPalFrame" type="iframe" selector="//iframe[contains(@id, 'jsx-iframe')]"/> - <element name="categoryClick" type="button" selector="//span[contains(text(), 'SimpleSubCategory')]"/> - <element name="categoryExpand" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_categorypage-head" parameterized="true"/> - <element name="categoryDisplay" type="button" selector="#payment_{{countryCode}}_paypal_group_all_in_one_payflow_advanced_required_settings_advanced_advertise_paylater_advanced_settings_paylater_categorypage_paylater_categorypage_display" parameterized="true"/> - </section> -</sections> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml deleted file mode 100755 index 7be926d58eda9..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminCheckConfigPaymentsProInUnitedstatesTest.xml +++ /dev/null @@ -1,127 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminCheckConfigPaymentsProInUnitedstatesTest"> - <annotations> - <features value="PayPal"/> - <stories value="Payment methods"/> - <title value="Check config for payments pro in Unites States"/> - <description value="Check paypal payments pro payment option's enablement and disablement based on the configuration setting For Payments Pro in backend"/> - <severity value="MAJOR"/> - <testCaseId value="AC-4790"/> - </annotations> - <before> - <createData entity="Simple_US_Customer" stepKey="createCustomer"/> - <createData entity="SimpleProduct" stepKey="simpleProduct"/> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="runIndexCronJobs1"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache1"> - <argument name="tags" value="config full_page"/> - </actionGroup> - <!-- Verify Product On Storefront Page --> - <actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="goToProductOnStorefront"> - <argument name="product" value="$$simpleProduct$$"/> - </actionGroup> - <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> - <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> - </before> - <after> - <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> - <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountryAsUS"/> - <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePayPalPaymentsPro"/> - <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> - <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> - </after> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <!--Assert Section Available in Other Paypal Payment Solution Link--> - <conditionalClick selector="{{OtherPayPalPaymentsConfigSection.expandTab1('us')}}" dependentSelector="{{OtherPayPalPaymentsConfigSection.expandedTab('us')}}" visible="false" stepKey="clickOtherPayPalPaymentsSection"/> - <conditionalClick selector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions('us')}}" dependentSelector="{{PayPalPaymentsProConfigSection.paypalAllInOnePaymentSolutions('us')}}" visible="true" stepKey="clickPayPalPaymentsSection"/> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertPaymentsProConfigBtn"/> - <actionGroup ref="AdminAssertOtherPaypalPaymentSolutionActionGroup" stepKey="AssertOtherPaypalPaymentSolutionLink"/> - <actionGroup ref="AdminAssetForPayallInOneActionGroup" stepKey="AssertPayAllInOneLink"/> - <!--Clear paypal details config related data--> - <actionGroup ref="AdminClearPaymentsProActionGroup" stepKey="clearExistingDataForPaymentsPro"/> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfig"/> - <actionGroup ref="AdminAssertPaypalCreditPaymentsProActionGroup" stepKey="enablePaypalPaymentsPro"/> - <!--Save Configuration--> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfigs"/> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="runIndexCronJobs"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> - <argument name="tags" value="config full_page"/> - </actionGroup> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigureBtnIsDisabled"/> - <!--Login to storefront as guest customer--> - <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> - <waitForPageLoad stepKey="waitForProductPage"/> - <!--Add simple product--> - <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart"> - <argument name="product" value="$simpleProduct$"/> - </actionGroup> - <!--Open cart page and proceed to checkout--> - <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> - <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> - <!--Fill Shipping Address--> - <actionGroup ref="GuestCheckoutFillNewShippingAddressActionGroup" stepKey="fillShippingAddress"> - <argument name="customer" value="$$createCustomer$$" /> - <argument name="address" value="US_Address_TX"/> - </actionGroup> - <!-- Select shipping --> - <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectShippingMethodAsFlatRate"> - <argument name="shippingMethodName" value="Flat Rate"/> - </actionGroup> - <!-- Go to Order review --> - <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> - <waitForPageLoad stepKey="waitForLoadingPaypalPaymentPage"/> - <!-- Assert Payflow Edition, Paypal Pro and Paypal Credit Payment method --> - <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalExpressCheckoutPayflowEdition"/> - <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Credit')}}" stepKey="assertPaypalCreditPaymentMethod"/> - <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Pro)')}}" stepKey="assertPaypalPaymentsProPaymentMethod"/> - <magentoCLI command="config:set payment/paypal_payment_pro/active 0" stepKey="disablePaymentsPro"/> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPageAfterDisablingPayPalExpressCheckout"/> - <waitForPageLoad stepKey="waitForPaymentMethodPageToLoad"/> - <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="waitForClickPayPalConfigureBtnToAssertStatus"/> - <click selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="clickPayPalConfigureBtnToAssertStatus"/> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution('us')}}" stepKey="assertNoGreenTickMarkForEnableThisSolutionDropdown"/> - <assertElementContainsAttribute stepKey="seePaypalCreditIsDisabled"> - <expectedResult selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" attribute="disabled" type="string"></expectedResult> - </assertElementContainsAttribute> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" userInput="No" stepKey="seePaypalCreditIsSetAsNo"/> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.disabledPaypalCredit('us')}}" stepKey="assertGreenTickMarkPresentForPaypalCreditDropdown"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.sortOrder('us')}}" stepKey="assertSortOrderFieldIsDisappeared"/> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enableVault('us')}}" userInput="Yes" stepKey="seeValultIsSetAsNo"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault('us')}}" stepKey="assertGreenTickMarkPresentForEnableVaultDropdown"/> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfiguration"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="assertConfigureVisible"/> - <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey="goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsDisappeared"/> - <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalPaymentIsAbsent"/> - <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Credit')}}" stepKey="assertPaypalCreditPaymentMethodIsAbsent"/> - <dontSee selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Pro)')}}" stepKey="assertPaypalPaymentsProPaymentMethodIsAbsent"/> - <!--Set Paypal Credit to No and assert the status--> - <magentoCLI command="config:set payment/paypal_payment_pro/active 1" stepKey="enablePaymentsPro"/> - <magentoCLI command="config:set payment/payflow_express_bml/active 0" stepKey="disablePayPalCreditPaymentMethod"/> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPageAfterEnablingPaypal"/> - <waitForPageLoad stepKey="waitForPaymentMethodPageToLoadAfterEnabling"/> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigeBtnNotVisible"/> - <waitForElementClickable selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="waitForClickPayPalConfigureBtnToAssertStatusAfterEnabling"/> - <click selector="{{PayPalPaymentsProConfigSection.configureBtn('us')}}" stepKey="clickPayPalConfigureBtnToAssertStatusAfterEnabling"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledEnableSolution('us')}}" stepKey="assertGreenTickMarkForEnableThisSolutionDropdown"/> - <seeOptionIsSelected selector="{{PayPalPaymentsProConfigSection.enablePaypalCredit('us')}}" userInput="No" stepKey="seeEnablePaypalCreditIsSetAsNo"/> - <waitForElementNotVisible selector="{{PayPalPaymentsProConfigSection.disabledPaypalCredit('us')}}" stepKey="assertGreenTickMarkAbsentForPaypalCreditDropdown"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.disabledVault('us')}}" stepKey="assertGreenTickMarkForEnableVaultDropdown"/> - <waitForElementVisible selector="{{PayPalPaymentsProConfigSection.closeButton('us')}}" stepKey="assertConfigBtnIsDisabled"/> - <!--Go to checkout page and assert paypal express checkout Payflow Edition and Credit Card option is present--> - <actionGroup ref="StorefrontNavigateToGuestCheckoutReviewAndPaymentsPageActionGroup" stepKey= "goToStoreFrontCheckoutPageToAssertPaypalPaymentMethodIsPresent"/> - <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('PayPal Express Checkout Payflow Edition')}}" stepKey="assertPayPalExpressPayflowEdition"/> - <waitForElementVisible selector="{{StorefrontCheckoutPaymentMethodSection.checkPaymentMethodByName('Credit Card (Payflow Pro)')}}" stepKey="creditcardPaymentsPro"/> - </test> -</tests> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml deleted file mode 100644 index dd731150b9bbb..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedForPaypalCreditTest.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminConfigPaymentsAdvancedForPaypalCreditTest"> - <annotations> - <features value="PayPal"/> - <stories value="Payment methods"/> - <title value="Check config for PayPal Credit in Unites States"/> - <description value="Check paypal Credit payment option's enablement and disablement based on the configuration setting in backend"/> - <severity value="MAJOR"/> - <testCaseId value="AC-5151"/> - </annotations> - <before> - <createData entity="Simple_US_Customer" stepKey="createCustomer"/> - <createData entity="SimpleSubCategory" stepKey="simpleCategory"/> - <createData entity="SimpleProduct" stepKey="simpleProduct"> - <requiredEntity createDataKey="simpleCategory"/> - </createData> - <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> - <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> - </before> - <after> - <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> - <magentoCLI command="config:set paypal/general/merchant_country 0" stepKey="setMerchantCountryAsUS"/> - <magentoCLI command="config:set payment/payflow_advanced/active 0" stepKey="disablePaymentsAdvanced"/> - <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> - <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> - <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> - </after> - <!--Admin navigate to payment configuration page and assert no other paypal payment is enabled--> - <actionGroup ref="AdminConfigForPaymentsAdvancedPaypalCreditActionGroup" stepKey="configPaymentsAdvanced"/> - <!--Clear paypal credit config related data--> - <actionGroup ref="AdminClearPaymentAdvancedDataActionGroup" stepKey="clearPaymentsAdvanced"/> - <!--Enable Payment Advanced and Paypal Credit--> - <actionGroup ref="AdminEnablePaymentAdvancedConfigurationActionGroup" stepKey="enablePaymentsAdvanced"/> - <!--Save Configuration--> - <actionGroup ref="AdminSaveConfigActionGroup" stepKey="saveConfigs"/> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache"> - <argument name="tags" value="config full_page"/> - </actionGroup> - - <!--Login to storefront as guest customer--> - <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> - <waitForPageLoad stepKey="waitForProductPage"/> - <!--Add simple product--> - <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart"> - <argument name="product" value="$simpleProduct$"/> - </actionGroup> - <!--Go to cart page--> - <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> - <!--Open cart page and proceed to checkout--> - <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/> - <actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/> - <!--Fill Shipping Address--> - <actionGroup ref="GuestCheckoutFillNewShippingAddressActionGroup" stepKey="fillShippingAddress"> - <argument name="customer" value="$$createCustomer$$" /> - <argument name="address" value="US_Address_TX"/> - </actionGroup> - <!-- Select shipping --> - <actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectShippingMethodAsFlatRate"> - <argument name="shippingMethodName" value="Flat Rate"/> - </actionGroup> - <!-- Go to Order review --> - <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentPage"/> - <waitForPageLoad stepKey="waitForLoadingMask"/> - <!-- Assert Paypal Advanced and Paypal Credit Payment method --> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.payFlowEdition}}" stepKey="assertPayflowEdition"/> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.payFlowExpress}}" stepKey="assertPayflowExpress"/> - <seeElement selector="{{AdminConfigPaymentsAdvancedSection.creditCardPayflowAdvanced}}" stepKey="assertCreditCardPayflowAdvanced"/> - </test> -</tests> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml deleted file mode 100644 index df8576cb67a4b..0000000000000 --- a/app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsAdvancedTest.xml +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright 2024 Adobe - * All Rights Reserved. - */ ---> -<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> - <test name="AdminConfigPaymentsAdvancedTest"> - <annotations> - <features value="PayPal"/> - <stories value="Payment methods"/> - <title value="Configuration apply to Paypal Pay later message on Cart Page for Payment Advanced"/> - <description value="Paypal Pay Later Message for Paypal Advanced should display on Admin Cart Page configuration"/> - <severity value="MAJOR"/> - <testCaseId value="AC-5700"/> - <group value="3rd_party_integration"/> - <group value="pr_exclude"/> - </annotations> - <before> - <createData entity="SimpleSubCategory" stepKey="simpleCategory"/> - <createData entity="SimpleProduct3" stepKey="simpleProduct"> - <requiredEntity createDataKey="simpleCategory"/> - </createData> - <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> - <actionGroup ref="AdminConfigPaymentsAdvancedActionGroup" stepKey="ConfigPaymentsAdvanced"/> - </before> - <after> - <deleteData createDataKey="simpleProduct" stepKey="deleteProduct"/> - <deleteData createDataKey="simpleCategory" stepKey="deleteCategory"/> - <magentoCLI command="config:set payment/payflow_advanced/active 0" stepKey="disablePaymentsAdvanced"/> - <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> - </after> - <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="waitForCheckoutCartPageToBeClickable"/> - <click selector ="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="clickCarteBtn"/> - <selectOption selector ="{{PaymentsAdvancedConfigSection.payLaterDisplay('us')}}" userInput="Yes" stepKey="enableDisplay"/> - <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/> - <!-- Reindex and cache flush --> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCache"> - <argument name="tags" value=""/> - </actionGroup> - <!--Navigate to Storefront--> - <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToStoreFront"/> - <waitForPageLoad stepKey="waitForProductPage"/> - <!--Add simple product--> - <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addSimpleProductToCart" > - <argument name="product" value="$simpleProduct$"/> - </actionGroup> - <!--Go to cart page--> - <actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="gotoCart"/> - <waitForPageLoad stepKey="waitForShoppingCartPage"/> - <!--Switching to iFrame--> - <switchToIFrame selector="{{PaymentsAdvancedConfigSection.payPalFrame}}" stepKey="switchToPaypalIFrame"/> - <seeElement selector="{{PaymentsAdvancedConfigSection.payLaterMessage}}" stepKey="verifyPayLaterMessage"/> - <switchToIFrame stepKey="switchBackMainIframe"/> - <!--Change The Option in Position In Checkout cart Page--> - <actionGroup ref="AdminConfigPaymentsAdvancedActionGroup" stepKey="ConfigPaymentsAdvanced"> - </actionGroup> - <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="waitForAdminCarttPageTobeClickable"/> - <click selector ="{{PaymentsAdvancedConfigSection.cartBtn('us')}}" stepKey="expandAdminCartePage"/> - <selectOption selector ="{{PaymentsAdvancedConfigSection.displayOption('us')}}" userInput="Yes" stepKey="enableCartPageDisplay"/> - <selectOption selector ="{{PaymentsAdvancedConfigSection.positionOption('us')}}" userInput="Under PayPal Checkout buttons" stepKey="updatedPositionValue"/> - <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.categoryExpand('us')}}" stepKey="waitForcategoryPageTobeClickable"/> - <click selector ="{{PaymentsAdvancedConfigSection.categoryExpand('us')}}" stepKey="expandCategoryePage"/> - <selectOption selector ="{{PaymentsAdvancedConfigSection.categoryDisplay('us')}}" userInput="Yes" stepKey="enableCategorypageDisplay"/> - <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfiguration"/> - <!-- Reindex and cache flush --> - <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexPage"> - <argument name="indices" value=""/> - </actionGroup> - <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCachePage"> - <argument name="tags" value=""/> - </actionGroup> - <!-- Navigate Again to Storefront --> - <actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="goToCustomerStoreFront"/> - <waitForElementClickable selector="{{PaymentsAdvancedConfigSection.categoryClick}}" stepKey="waitForCategryToClickable"/> - <click selector ="{{PaymentsAdvancedConfigSection.categoryClick}}" stepKey="clickCatagoryeButton"/> - <waitForPageLoad stepKey="waitForCartpageTobeLoaded"/> - <switchToIFrame selector="{{PaymentsAdvancedConfigSection.payPalFrame}}" stepKey="switchToBuyNowPayLaterIFrame"/> - <seeElement selector="{{PaymentsAdvancedConfigSection.payLaterMessage}}" stepKey="verifyBuyNowPayLaterMessage"/> - <switchToIFrame stepKey="switchBackToMainPaypalFrame"/> - </test> -</tests> From 128a79a7a3314098362394c1fe751708be83f411 Mon Sep 17 00:00:00 2001 From: Alexandru Plapana <aplapana@adobe.com> Date: Thu, 7 Nov 2024 11:19:12 +0200 Subject: [PATCH 455/460] ACP2E-3403: Cart Price Rules Miscalculating Discount --- app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php b/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php index c4f461fd9d435..a9d9b6f7f8963 100644 --- a/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php +++ b/app/code/Magento/Quote/Model/Quote/Item/AbstractItem.php @@ -18,6 +18,7 @@ * - custom_price - new price that can be declared by user and recalculated during calculation process * - original_custom_price - original defined value of custom price without any conversion * + * phpcs:disable Magento2.Classes.AbstractApi * @api * @method float getDiscountAmount() * @method \Magento\Quote\Model\Quote\Item\AbstractItem setDiscountAmount(float $amount) From 52cee221ffd15cf4bc57ab43547f3e000a8a071b Mon Sep 17 00:00:00 2001 From: IOWEB TECHNOLOGIES <info@ioweb.gr> Date: Fri, 8 Nov 2024 08:20:49 +0200 Subject: [PATCH 456/460] fix copyright --- .../Framework/Css/PreProcessor/Adapter/Less/Processor.php | 4 ++-- .../Css/Test/Unit/PreProcessor/Adapter/Less/ProcessorTest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php index 8b01c6055c8f1..52fac681eca04 100644 --- a/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php +++ b/lib/internal/Magento/Framework/Css/PreProcessor/Adapter/Less/Processor.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ namespace Magento\Framework\Css\PreProcessor\Adapter\Less; diff --git a/lib/internal/Magento/Framework/Css/Test/Unit/PreProcessor/Adapter/Less/ProcessorTest.php b/lib/internal/Magento/Framework/Css/Test/Unit/PreProcessor/Adapter/Less/ProcessorTest.php index 0afa14ea86a0d..06328c1f73a2f 100644 --- a/lib/internal/Magento/Framework/Css/Test/Unit/PreProcessor/Adapter/Less/ProcessorTest.php +++ b/lib/internal/Magento/Framework/Css/Test/Unit/PreProcessor/Adapter/Less/ProcessorTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ declare(strict_types=1); From cb33164fddf070eff33717f4cf0a9720ce0c6ea4 Mon Sep 17 00:00:00 2001 From: engcom-Dash <grp-engcom-vendorworker-Dash@adobe.com> Date: Fri, 8 Nov 2024 14:22:23 +0530 Subject: [PATCH 457/460] 33161: Fix static failure related to copyright tag --- app/code/Magento/RemoteStorage/etc/di.xml | 4 ++-- app/etc/di.xml | 4 ++-- .../Magento/Test/Legacy/_files/obsolete_classes.php | 6 +++--- .../src/Magento/Setup/Console/Command/DiCompileCommand.php | 5 ++--- .../Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php | 5 ++--- .../Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php | 5 ++--- .../src/Magento/Setup/Module/Di/Compiler/Config/Reader.php | 4 ++-- setup/src/Magento/Setup/Module/Di/Definition/Collection.php | 4 ++-- .../Test/Unit/Module/Di/Compiler/Config/ReaderTest.php | 4 ++-- 9 files changed, 19 insertions(+), 22 deletions(-) diff --git a/app/code/Magento/RemoteStorage/etc/di.xml b/app/code/Magento/RemoteStorage/etc/di.xml index 69c166a3c320f..802bac5df2dc0 100644 --- a/app/code/Magento/RemoteStorage/etc/di.xml +++ b/app/code/Magento/RemoteStorage/etc/di.xml @@ -1,8 +1,8 @@ <?xml version="1.0"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2020 Adobe + * All Rights Reserved. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> diff --git a/app/etc/di.xml b/app/etc/di.xml index a2e1deca2b621..385518fd79a20 100644 --- a/app/etc/di.xml +++ b/app/etc/di.xml @@ -1,8 +1,8 @@ <?xml version="1.0"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2013 Adobe + * All Rights Reserved. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php index b9b59400955bc..4ad7b3797ac51 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php @@ -1,13 +1,13 @@ <?php /** + * Copyright 2011 Adobe + * All Rights Reserved. + * * Obsolete classes * * Format: array(<class_name>[, <replacement>]) * * @codingStandardsIgnoreFile - * - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. */ return [ ['Mage_Admin_Helper_Data', 'Magento\Backend\Helper\Data'], diff --git a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php index 69e202a9c2497..eff78236285a6 100644 --- a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php +++ b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php @@ -1,8 +1,7 @@ <?php - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ namespace Magento\Setup\Console\Command; diff --git a/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php b/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php index 03b39e02e7b57..ecab20b268578 100644 --- a/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php +++ b/setup/src/Magento/Setup/Module/Di/Code/Reader/Decorator/Area.php @@ -1,8 +1,7 @@ <?php - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ namespace Magento\Setup\Module\Di\Code\Reader\Decorator; diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php b/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php index dbfd7ecd75d98..d970094510e6f 100644 --- a/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php +++ b/setup/src/Magento/Setup/Module/Di/Compiler/ArgumentsResolver.php @@ -1,8 +1,7 @@ <?php /** - * - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ namespace Magento\Setup\Module\Di\Compiler; diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php index 1efbdccef84bf..ea22b72592292 100644 --- a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php +++ b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ namespace Magento\Setup\Module\Di\Compiler\Config; diff --git a/setup/src/Magento/Setup/Module/Di/Definition/Collection.php b/setup/src/Magento/Setup/Module/Di/Definition/Collection.php index c00b540c4196b..3cce8b1672815 100644 --- a/setup/src/Magento/Setup/Module/Di/Definition/Collection.php +++ b/setup/src/Magento/Setup/Module/Di/Definition/Collection.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ namespace Magento\Setup\Module\Di\Definition; diff --git a/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php b/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php index fae3182203b4a..9647642593166 100644 --- a/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Module/Di/Compiler/Config/ReaderTest.php @@ -1,7 +1,7 @@ <?php /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2015 Adobe + * All Rights Reserved. */ declare(strict_types=1); From 7d2fc7d1bf46992fd8bf6e4e0b50561355434944 Mon Sep 17 00:00:00 2001 From: engcom-Dash <grp-engcom-vendorworker-Dash@adobe.com> Date: Fri, 8 Nov 2024 14:25:04 +0530 Subject: [PATCH 458/460] 33161: Fix static failure related to copyright tag --- app/code/Magento/Catalog/etc/di.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Catalog/etc/di.xml b/app/code/Magento/Catalog/etc/di.xml index 13cc69c370a4f..2ba1898629e7e 100644 --- a/app/code/Magento/Catalog/etc/di.xml +++ b/app/code/Magento/Catalog/etc/di.xml @@ -1,8 +1,8 @@ <?xml version="1.0"?> <!-- /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2013 Adobe + * All Rights Reserved. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> From 237f8939ae56cefae2f3956efee7b6ae0c9aa285 Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Sat, 9 Nov 2024 21:57:47 +0530 Subject: [PATCH 459/460] ACQE-7157 | Mainline PR Deployment Test Fix --- ...torefrontCheckCustomOptionPriceDifferentCurrencyTest.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml index e7808728acbae..dce1c46d5b490 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml @@ -50,6 +50,12 @@ </actionGroup> <actionGroup ref="AssertStorefrontCustomOptionCheckboxByPriceActionGroup" stepKey="checkPriceProductOptionUSD"> <argument name="price" value="12.3"/> + </actionGroup> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindexConfig"> + <argument name="indices" value=""/> + </actionGroup> + <actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanFullPageCache"> + <argument name="tags" value="config full_page"/> </actionGroup> <actionGroup ref="StorefrontSwitchCurrencyActionGroup" stepKey="switchEURCurrency"> <argument name="currency" value="EUR"/> From 95a469aa26801cb5cffec5083ae0330046ee8cae Mon Sep 17 00:00:00 2001 From: manjusha729 <93243302+manjusha729@users.noreply.github.com> Date: Sun, 10 Nov 2024 10:06:02 +0530 Subject: [PATCH 460/460] ACQE-7157 | Mainline PR Deployment Added Copyright --- .../StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml index dce1c46d5b490..05988a60287a7 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCheckCustomOptionPriceDifferentCurrencyTest.xml @@ -3,6 +3,8 @@ /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. + * Copyright 2024 Adobe + * All Rights Reserved. */ --> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"