diff options
author | georgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-04 00:27:30 +0000 |
---|---|---|
committer | georgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-04 00:27:30 +0000 |
commit | ed418b26ee16196efee1e5680608cc8de427187d (patch) | |
tree | 05c3ac0768f09acc053aa9978fb5da4ca0f91736 | |
parent | 5020e06b2ea69a74f913a2b393cb746f580ab447 (diff) | |
download | chromium_src-ed418b26ee16196efee1e5680608cc8de427187d.zip chromium_src-ed418b26ee16196efee1e5680608cc8de427187d.tar.gz chromium_src-ed418b26ee16196efee1e5680608cc8de427187d.tar.bz2 |
Revert 84000 - Autofill phone number enhancements and integration of Phone Number Util Library: part 1
Temporarily the whole library is included, until the patch is upstreamed.
BUG=71443
TEST=Unit-tested
Review URL: http://codereview.chromium.org/6803005
TBR=georgey@chromium.org
Review URL: http://codereview.chromium.org/6920006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84009 0039d316-1c4b-4281-b951-d872f2087c98
47 files changed, 0 insertions, 31860 deletions
diff --git a/build/all.gyp b/build/all.gyp index 4258761..6985334 100644 --- a/build/all.gyp +++ b/build/all.gyp @@ -163,7 +163,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', 'temp_gyp/googleurl.gyp:googleurl_unittests', ], 'conditions': [ @@ -222,7 +221,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', 'temp_gyp/googleurl.gyp:googleurl_unittests', ], 'conditions': [ @@ -329,7 +327,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', 'temp_gyp/googleurl.gyp:googleurl_unittests', ], }, @@ -360,7 +357,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', 'temp_gyp/googleurl.gyp:googleurl_unittests', ], }, @@ -378,7 +374,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', ], }, { @@ -401,7 +396,6 @@ '../ui/ui.gyp:gfx_unittests', '../jingle/jingle.gyp:jingle_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', ], }, ], # targets @@ -451,7 +445,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:copy_TestNetscapePlugIn', '../views/views.gyp:views_unittests', # TODO(nsylvain) ui_tests.exe depends on test_shell_common. @@ -481,7 +474,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', 'temp_gyp/googleurl.gyp:googleurl_unittests', ], }, @@ -559,7 +551,6 @@ '../printing/printing.gyp:printing_unittests', '../remoting/remoting.gyp:remoting_unittests', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests', '../views/views.gyp:views_unittests', 'temp_gyp/googleurl.gyp:googleurl_unittests', ], diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index e253c53..aecd0ee 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -42,7 +42,6 @@ '../third_party/icu/icu.gyp:icui18n', '../third_party/icu/icu.gyp:icuuc', '../third_party/libjingle/libjingle.gyp:libjingle', - '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber', '../third_party/libxml/libxml.gyp:libxml', '../third_party/npapi/npapi.gyp:npapi', '../ui/base/strings/ui_strings.gyp:ui_strings', diff --git a/third_party/libphonenumber/README.chromium b/third_party/libphonenumber/README.chromium deleted file mode 100644 index 9cf38ee..0000000 --- a/third_party/libphonenumber/README.chromium +++ /dev/null @@ -1,29 +0,0 @@ -Name: International Phone Number Library -Short Name: libphonenumber -URL: http://libphonenumber.googlecode.com/svn/trunk/ -Version: unknown -Revision: 186 -Security Critical: yes - -This directory contains the source code of International Phone Number Library -for C/C++. - -This library depends on -1. base/ for types, scoped_ptr's, etc. -2. third_party/icu for internationalisation, UTF8-16-32 conversion and regular - expressions. -3. third_party/protobuf Lite version. - -Additional files, not in the original library: - libphonenumber.gyp - README.chromium - chrome/regexp_adapter_icuregexp.cc - -Until the changes are upstreamed library is included directly, with a patch -in patches/version186.patch applied. The patch adds plugability to the regular -expression engine, its RE2 (default) implementation, and the unit-test for the -changes. - -The folders included in our repository for now are - cpp/ - resource/
\ No newline at end of file diff --git a/third_party/libphonenumber/chrome/regexp_adapter_icuregexp.cc b/third_party/libphonenumber/chrome/regexp_adapter_icuregexp.cc deleted file mode 100644 index 6b6ad82..0000000 --- a/third_party/libphonenumber/chrome/regexp_adapter_icuregexp.cc +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/libphonenumber/cpp/src/regexp_adapter.h" - -// Setup all of the Chromium and WebKit defines -#include "base/logging.h" -#include "base/scoped_ptr.h" -#include "build/build_config.h" -#include "unicode/regex.h" -#include "unicode/stringpiece.h" -#include "unicode/unistr.h" - -namespace { - -// Converts |source| to UTF-8 string, returns it starting at position |pos|. -std::string UnicodeStringToUtf8String(icu::UnicodeString const& source, - int pos) { - std::string data; - source.toUTF8String<std::string>(data); - return data.substr(pos); -} - -} // namespace - -// Implementation of the abstract classes RegularExpressionInput and -// RegularExpression using ICU regular expression capabilities. - -// The Regular Expression input class. -class IcuRegularExpressionInput : public reg_exp::RegularExpressionInput { - public: - explicit IcuRegularExpressionInput(const char* utf8_input); - - // RegularExpressionInput implementation: - // Matches string to regular expression, returns true if expression was - // matched, false otherwise, advances position in the match. - // |reg_exp| - expression to be matched. - // |beginning_only| - if true match would be successfull only if appears at - // the beginning of the tested region of the string. - // |matched_string1| - successfully matched first string. Can be NULL. - // |matched_string2| - successfully matched second string. Can be NULL. - virtual bool ConsumeRegExp(std::string const& reg_exp, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2); - - // Convert unmatched input to a string. - virtual std::string ToString() const; - - icu::UnicodeString* Data() { return &utf8_input_; } - - // Position in the input. For the newly created input position is 0, - // each call to ConsumeRegExp() or RegularExpression::Consume() advances - // position in the case of the successful match to be after the match. - int pos() const { return pos_; } - void set_pos(int pos) { pos_ = pos; } - - private: - icu::UnicodeString utf8_input_; - int pos_; - - DISALLOW_COPY_AND_ASSIGN(IcuRegularExpressionInput); -}; - -// The regular expression class. -class IcuRegularExpression : public reg_exp::RegularExpression { - public: - explicit IcuRegularExpression(const char* utf8_regexp); - - // RegularExpression implementation: - // Matches string to regular expression, returns true if expression was - // matched, false otherwise, advances position in the match. - // |input_string| - string to be searched. - // |beginning_only| - if true match would be successfull only if appears at - // the beginning of the tested region of the string. - // |matched_string1| - successfully matched first string. Can be NULL. - // |matched_string2| - successfully matched second string. Can be NULL. - // |matched_string3| - successfully matched third string. Can be NULL. - virtual bool Consume(reg_exp::RegularExpressionInput* input_string, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2, - std::string* matched_string3) const; - - // Matches string to regular expression, returns true if expression was - // matched, false otherwise. - // |input_string| - string to be searched. - // |full_match| - if true match would be successfull only if it matches the - // complete string. - // |matched_string| - successfully matched string. Can be NULL. - virtual bool Match(const char* input_string, - bool full_match, - std::string* matched_string) const; - - // Replaces match(es) in the |string_to_process|. if |global| is true, - // replaces all the matches, only the first match otherwise. - // |replacement_string| - text the matches are replaced with. - // Returns true if expression successfully processed through the string, - // even if no actual replacements were made. Returns false in case of an - // error. - virtual bool Replace(std::string* string_to_process, - bool global, - const char* replacement_string) const; - private: - scoped_ptr<icu::RegexPattern> utf8_regexp_; - - DISALLOW_COPY_AND_ASSIGN(IcuRegularExpression); -}; - -IcuRegularExpressionInput::IcuRegularExpressionInput(const char* utf8_input) - : pos_(0) { - DCHECK(utf8_input); - utf8_input_ = icu::UnicodeString::fromUTF8(utf8_input); -} - -bool IcuRegularExpressionInput::ConsumeRegExp(std::string const& reg_exp, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2) { - IcuRegularExpression re(reg_exp.c_str()); - - return re.Consume(this, beginning_only, matched_string1, matched_string2, - NULL); -} - -std::string IcuRegularExpressionInput::ToString() const { - if (pos_ < 0 || pos_ > utf8_input_.length()) - return std::string(); - return UnicodeStringToUtf8String(utf8_input_, pos_); -} - -IcuRegularExpression::IcuRegularExpression(const char* utf8_regexp) { - DCHECK(utf8_regexp); - UParseError pe; - UErrorCode status = U_ZERO_ERROR; - utf8_regexp_.reset(icu::RegexPattern::compile( - icu::UnicodeString::fromUTF8(utf8_regexp), 0, pe, status)); - if (U_FAILURE(status)) { - // All of the passed regular expressions should compile correctly. - utf8_regexp_.reset(NULL); - NOTREACHED(); - } -} - -bool IcuRegularExpression::Consume( - reg_exp::RegularExpressionInput* input_string, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2, - std::string* matched_string3) const { - DCHECK(input_string); - // matched_string1 may be NULL - // matched_string2 may be NULL - // matched_string3 may be NULL - if (!utf8_regexp_.get()) - return false; - - IcuRegularExpressionInput* input = - reinterpret_cast<IcuRegularExpressionInput *>(input_string); - UErrorCode status = U_ZERO_ERROR; - scoped_ptr<icu::RegexMatcher> matcher(utf8_regexp_->matcher(*(input->Data()), - status)); - - if (U_FAILURE(status)) - return false; - - if (beginning_only) { - if (!matcher->lookingAt(input->pos(), status)) - return false; - } else { - if (!matcher->find(input->pos(), status)) - return false; - } - if (U_FAILURE(status)) - return false; - // If less matches than expected - fail. - if ((matched_string3 && matcher->groupCount() < 3) || - (matched_string2 && matcher->groupCount() < 2) || - (matched_string1 && matcher->groupCount() < 1)) { - return false; - } - if (matcher->groupCount() > 0 && matched_string1) { - *matched_string1 = UnicodeStringToUtf8String(matcher->group(1, status), 0); - } - if (matcher->groupCount() > 1 && matched_string2) { - *matched_string2 = UnicodeStringToUtf8String(matcher->group(2, status), 0); - } - if (matcher->groupCount() > 2 && matched_string3) { - *matched_string3 = UnicodeStringToUtf8String(matcher->group(3, status), 0); - } - input->set_pos(matcher->end(status)); - return true; -} - -bool IcuRegularExpression::Match(const char* input_string, - bool full_match, - std::string* matched_string) const { - DCHECK(input_string); - // matched_string may be NULL - if (!utf8_regexp_.get()) - return false; - - IcuRegularExpressionInput input(input_string); - UErrorCode status = U_ZERO_ERROR; - scoped_ptr<icu::RegexMatcher> matcher(utf8_regexp_->matcher(*(input.Data()), - status)); - - if (U_FAILURE(status)) - return false; - - if (full_match) { - if (!matcher->matches(input.pos(), status)) - return false; - } else { - if (!matcher->find(input.pos(), status)) - return false; - } - if (U_FAILURE(status)) - return false; - if (matcher->groupCount() > 0 && matched_string) { - *matched_string = UnicodeStringToUtf8String(matcher->group(1, status), 0); - } - return true; -} - -bool IcuRegularExpression::Replace(std::string* string_to_process, - bool global, - const char* replacement_string) const { - DCHECK(string_to_process); - DCHECK(replacement_string); - - std::string adapted_replacement(replacement_string); - // Adapt replacement string from RE2 (\0-9 for matches) format to ICU format - // ($0-9 for matches). All '$' should be prepended with '\' as well. - size_t backslash_pos = adapted_replacement.find('\\'); - size_t dollar_pos = adapted_replacement.find('$'); - while (backslash_pos != std::string::npos || - dollar_pos != std::string::npos) { - bool process_dollar = false; - if (backslash_pos == std::string::npos || - (dollar_pos != std::string::npos && dollar_pos < backslash_pos)) { - process_dollar = true; - } - if (process_dollar) { - adapted_replacement.insert(dollar_pos, "\\"); - dollar_pos = adapted_replacement.find('$', dollar_pos + 2); - if (backslash_pos != std::string::npos) - ++backslash_pos; - } else { - if (adapted_replacement.length() > backslash_pos + 1) { - if (adapted_replacement[backslash_pos + 1] >= '0' && - adapted_replacement[backslash_pos + 1] <= '9') { - adapted_replacement[backslash_pos] = '$'; - } - if (adapted_replacement[backslash_pos + 1] == '\\') { - // Skip two characters instead of one. - ++backslash_pos; - } - } - backslash_pos = adapted_replacement.find('\\', backslash_pos + 1); - } - } - - IcuRegularExpressionInput input(string_to_process->c_str()); - UErrorCode status = U_ZERO_ERROR; - scoped_ptr<icu::RegexMatcher> matcher(utf8_regexp_->matcher(*(input.Data()), - status)); - if (U_FAILURE(status)) - return false; - - icu::UnicodeString result; - - if (global) { - result = matcher->replaceAll( - icu::UnicodeString::fromUTF8(adapted_replacement), - status); - } else { - result = matcher->replaceFirst( - icu::UnicodeString::fromUTF8(adapted_replacement), - status); - } - if (U_FAILURE(status)) - return false; - *string_to_process = UnicodeStringToUtf8String(result, 0); - return true; -} - -namespace reg_exp { - -RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input) { - return new IcuRegularExpressionInput(utf8_input); -} - -RegularExpression* CreateRegularExpression(const char* utf8_regexp) { - return new IcuRegularExpression(utf8_regexp); -} - -} // namespace reg_exp diff --git a/third_party/libphonenumber/cpp/CMakeLists.txt b/third_party/libphonenumber/cpp/CMakeLists.txt deleted file mode 100644 index 720168e..0000000 --- a/third_party/libphonenumber/cpp/CMakeLists.txt +++ /dev/null @@ -1,242 +0,0 @@ -# Copyright (C) 2011 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Author: Philippe Liard - -cmake_minimum_required (VERSION 2.8) - -project (libphonenumber) - -# Helper functions dealing with finding libraries and programs this library -# depends on. - -function (print_error DESCRIPTION FILE) - message (FATAL_ERROR - "Can't find ${DESCRIPTION}: can't locate ${FILE}. Please read the README.") -endfunction () - -# Find a library. If it has not been found, stop CMake with a fatal error -# message. -function (find_required_library NAME HEADER LIBRARY DESCRIPTION) - # Check the header. - find_path (${NAME}_INCLUDE_DIR ${HEADER}) - set (INCLUDE_DIR ${${NAME}_INCLUDE_DIR}) - - if (${INCLUDE_DIR} STREQUAL "${INCLUDE_DIR}-NOTFOUND") - print_error (${DESCRIPTION} ${HEADER}) - endif () - include_directories (${INCLUDE_DIR}) - # Check the binary. - find_library (${NAME}_LIB ${LIBRARY}) - set (LIB ${NAME}_LIB) - - if (${LIB} STREQUAL "${LIB}-NOTFOUND") - print_error (${DESCRIPTION} ${LIBRARY}) - endif () -endfunction (find_required_library) - -# Check the library version (if pkg-config available). -find_package (PkgConfig) -function (check_library_version NAME LIBRARY VERSION) - if (PKG_CONFIG_EXECUTABLE) - pkg_check_modules (NAME REQUIRED ${LIBRARY}>=${VERSION}) - endif (PKG_CONFIG_EXECUTABLE) -endfunction () - -# Find a program. If it has not been found, stop CMake with a fatal error -# message. -function (find_required_program NAME FILENAME DESCRIPTION) - find_program (${NAME}_BIN NAMES ${FILENAME}) - - if (${NAME}_BIN STREQUAL "${${NAME}_BIN}-NOTFOUND") - print_error (${DESCRIPTION} ${FILENAME}) - endif () -endfunction (find_required_program) - -# Find all the required libraries and programs. -find_required_library (GTEST gtest/gtest.h gtest "Google Test framework") - -find_required_library (RE2 re2/re2.h re2 "Google RE2") - -find_required_library (PROTOBUF google/protobuf/message_lite.h protobuf - "Google Protocol Buffers") -check_library_version (PC_PROTOBUF protobuf 2.4) - -find_required_library (ICU unicode/unistr.h icui18n "ICU") -check_library_version (PC_ICU icui18n 4.4) - -find_required_program (PROTOC protoc - "Google Protocol Buffers compiler (protoc)") - -find_required_program (JAVA java - "Java Runtime Environment") - -# Add protoc (Protocol Buffers compiler) target. -set (RESOURCES_DIR "${CMAKE_SOURCE_DIR}/../resources") - -set ( - PROTOBUF_SOURCES "${RESOURCES_DIR}/phonemetadata.proto" - "${RESOURCES_DIR}/phonenumber.proto" -) - -set ( - PROTOBUF_OUTPUT "${CMAKE_SOURCE_DIR}/src/phonemetadata.pb.cc" - "${CMAKE_SOURCE_DIR}/src/phonemetadata.pb.h" - "${CMAKE_SOURCE_DIR}/src/phonenumber.pb.cc" - "${CMAKE_SOURCE_DIR}/src/phonenumber.pb.h" -) - -add_custom_command ( - COMMAND ${PROTOC_BIN} --cpp_out="${CMAKE_SOURCE_DIR}/src" - --proto_path=${RESOURCES_DIR} ${PROTOBUF_SOURCES} - - OUTPUT ${PROTOBUF_OUTPUT} - DEPENDS ${PROTOBUF_SOURCES} -) - -add_custom_target ( - generate-sources - - DEPENDS ${PROTOBUF_OUTPUT} - COMMENT "Generating Protocol Buffers code" -) - -# Add metadata code generation targets. - -# This function is invoked twice to create metadata & test metadata code -# generation targets. -function (add_metadata_gen_target TARGET_NAME - XML_FILE - FOR_TESTING) - if (${FOR_TESTING} STREQUAL "true") - set (GEN_OUTPUT_PREFIX "${CMAKE_SOURCE_DIR}/src/metadata") - elseif (${FOR_TESTING} STREQUAL "false") - set (GEN_OUTPUT_PREFIX "${CMAKE_SOURCE_DIR}/src/test_metadata") - else () - message (FATAL_ERROR - "Unexpected value '${FOR_TESTING}' for testing parameter") - endif () - - set (GEN_OUTPUT "${GEN_OUTPUT_PREFIX}.cc ${GEN_OUTPUT_PREFIX}.h") - set (JAR_PATH "${CMAKE_SOURCE_DIR}/../tools/java/cpp-build/target") - set (JAR_PATH "${JAR_PATH}/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar") - - add_custom_command ( - COMMAND ${JAVA_BIN} -jar - ${JAR_PATH} BuildMetadataCppFromXml ${XML_FILE} ${CMAKE_SOURCE_DIR}/src - ${FOR_TESTING} - - OUTPUT ${GEN_OUTPUT} - DEPENDS ${XML_FILE} - ) - add_custom_target ( - ${TARGET_NAME} - DEPENDS ${GEN_OUTPUT} - COMMENT "Generating Metadata code" - ) -endfunction (add_metadata_gen_target) - -# Add metadata generation target. -add_metadata_gen_target ( - "generate-metadata" - "${RESOURCES_DIR}/PhoneNumberMetaData.xml" - "false" -) - -# Add test metadata generation target. -add_metadata_gen_target ( - "generate-test-metadata" - "${RESOURCES_DIR}/PhoneNumberMetaDataForTesting.xml" - "true" -) - -# Platform independent sources. -set ( - SOURCES - "src/base/at_exit.cc" - "src/base/lazy_instance.cc" - "src/base/string_piece.cc" - "src/base/synchronization/lock.cc" - "src/base/threading/thread_restrictions.cc" - "src/default_logger.cc" - "src/logger_adapter.cc" - "src/metadata.cc" # Generated by build tools. - "src/phonemetadata.pb.cc" # Generated by Protocol Buffers. - "src/phonenumber.cc" - "src/phonenumber.pb.cc" # Generated by Protocol Buffers. - "src/phonenumberutil.cc" - "src/re2_cache.cc" - "src/regexp_adapter_re2.cc", - "src/stringutil.cc" - "src/utf/rune.c" - "src/utf/unicodetext.cc" - "src/utf/unilib.cc" -) - -if (UNIX) - if (CMAKE_COMPILER_IS_GNUCXX) - add_definitions ("-Wall -Wextra -Werror") - - # The next flags are needed by base/ source files to compile low level code - # needed by Singleton. - add_definitions ("-DCOMPILER_GCC -DOS_POSIX -DOS_LINUX") - - if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86.*") - add_definitions ("-DARCH_CPU_X86_FAMILY") - # Add GCC specific sources. - list (APPEND SOURCES "src/base/atomicops_internals_x86_gcc.cc") - - elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES ".*arm.*") - add_definitions ("-DARCH_CPU_ARM_FAMILY") - endif () - endif () - - # Add POSIX specific sources. - list ( - APPEND SOURCES - "src/base/synchronization/lock_impl_posix.cc" - "src/base/threading/platform_thread_posix.cc" - "src/base/threading/thread_local_posix.cc" - ) -else (WIN32) - # TODO: add Windows support (define COMPILER_MSVC, OS_WIN). - list ( - APPEND SOURCES - "src/base/synchronization/lock_impl_win.cc" - "src/base/threading/platform_thread_win.cc" - "src/base/threading/thread_local_win.cc" - ) - # TODO: Windows specific flags. -endif () - -include_directories ("src") -include_directories (".") - -add_library (phonenumber STATIC ${SOURCES}) -add_dependencies (phonenumber generate-sources) - -target_link_libraries (phonenumber ${RE2_LIB} ${PROTOBUF_LIB} ${ICU_LIB}) - -# Tests. -set (TEST_SOURCES - "src/phonenumberutil_test.cc" - "src/re2_cache_test.cc" - "src/regexp_adapter_unittest.cc", - "src/run_tests.cc" - "src/stringutil_test.cc" - "src/test_metadata.cc" # Generated by build tools. -) - -add_executable (libphonenumber_test ${TEST_SOURCES}) -target_link_libraries (libphonenumber_test phonenumber ${GTEST_LIB} pthread) diff --git a/third_party/libphonenumber/cpp/LICENSE b/third_party/libphonenumber/cpp/LICENSE deleted file mode 100644 index 145f008..0000000 --- a/third_party/libphonenumber/cpp/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (C) 2011 Google Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/third_party/libphonenumber/cpp/README b/third_party/libphonenumber/cpp/README deleted file mode 100644 index 775348a..0000000 --- a/third_party/libphonenumber/cpp/README +++ /dev/null @@ -1,69 +0,0 @@ -C++ version of the libphonenumber project. -Work in progress. - -This is a port of the Java version. - -This project uses some third-party code: - - src/base/ sources come from Chromium browser. - - src/utf/ sources come from lib9 which is also used in Go. - -Requirements: - - CMake build system - http://www.cmake.org - - You can install it very easily on a Debian-based GNU/Linux distribution: - $ sudo apt-get install cmake - - - Protocol Buffers - http://code.google.com/p/protobuf/ - Version 2.4 or more recent is required. - - You can install it very easily on a Debian-based GNU/Linux distribution: - $ sudo apt-get install libprotobuf-dev - - Note: if your GNU/Linux distribution doesn't provide the needed package, - please download and install it manually: - $ tar xjf protobuf-2.4.tar.bz2 - $ cd protobuf-2.4 - $ ./configure && make && sudo make install - - - Google Test - http://code.google.com/p/googletest/ - - You can install it very easily on a Debian-based GNU/Linux distribution: - $ sudo apt-get install libgtest-dev - - - RE2 - http://code.google.com/p/re2/ - - You can install it very easily on Ubuntu Maverick and later: - $ sudo apt-get install libre2-dev - - Otherwise if you use a Debian-based distribution you can fetch the Ubuntu - package which should work: - http://packages.ubuntu.com/maverick/libre2-dev - - If you want to install it manually: - You need Mercurial to checkout its source code: - $ sudo apt-get install mercurial - - Then checkout, build and install it: - $ hg clone https://re2.googlecode.com/hg re2 - $ cd re2 - $ make test - $ make install - $ make testinstall - - - ICU - http://userguide.icu-project.org/ - - You can install it very easily on a Debian-based distribution: - $ sudo apt-get install libicu-dev - - -How to build libphonenumber C++: - $ cd libphonenumber - $ mkdir build - $ cd build - $ cmake ../cpp/ - $ make diff --git a/third_party/libphonenumber/cpp/src/base/singleton.h b/third_party/libphonenumber/cpp/src/base/singleton.h deleted file mode 100644 index 0fe5e27..0000000 --- a/third_party/libphonenumber/cpp/src/base/singleton.h +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef BASE_SINGLETON_H_ -#define BASE_SINGLETON_H_ -#pragma once - -#include "base/at_exit.h" -#include "base/atomicops.h" -#include "base/third_party/dynamic_annotations/dynamic_annotations.h" -#include "base/threading/platform_thread.h" -#include "base/threading/thread_restrictions.h" - -// Default traits for Singleton<Type>. Calls operator new and operator delete on -// the object. Registers automatic deletion at process exit. -// Overload if you need arguments or another memory allocation function. -template<typename Type> -struct DefaultSingletonTraits { - // Allocates the object. - static Type* New() { - // The parenthesis is very important here; it forces POD type - // initialization. - return new Type(); - } - - // Destroys the object. - static void Delete(Type* x) { - delete x; - } - - // Set to true to automatically register deletion of the object on process - // exit. See below for the required call that makes this happen. - static const bool kRegisterAtExit = true; - - // Set to false to disallow access on a non-joinable thread. This is - // different from kRegisterAtExit because StaticMemorySingletonTraits allows - // access on non-joinable threads, and gracefully handles this. - static const bool kAllowedToAccessOnNonjoinableThread = false; -}; - - -// Alternate traits for use with the Singleton<Type>. Identical to -// DefaultSingletonTraits except that the Singleton will not be cleaned up -// at exit. -template<typename Type> -struct LeakySingletonTraits : public DefaultSingletonTraits<Type> { - static const bool kRegisterAtExit = false; - static const bool kAllowedToAccessOnNonjoinableThread = true; -}; - - -// Alternate traits for use with the Singleton<Type>. Allocates memory -// for the singleton instance from a static buffer. The singleton will -// be cleaned up at exit, but can't be revived after destruction unless -// the Resurrect() method is called. -// -// This is useful for a certain category of things, notably logging and -// tracing, where the singleton instance is of a type carefully constructed to -// be safe to access post-destruction. -// In logging and tracing you'll typically get stray calls at odd times, like -// during static destruction, thread teardown and the like, and there's a -// termination race on the heap-based singleton - e.g. if one thread calls -// get(), but then another thread initiates AtExit processing, the first thread -// may call into an object residing in unallocated memory. If the instance is -// allocated from the data segment, then this is survivable. -// -// The destructor is to deallocate system resources, in this case to unregister -// a callback the system will invoke when logging levels change. Note that -// this is also used in e.g. Chrome Frame, where you have to allow for the -// possibility of loading briefly into someone else's process space, and -// so leaking is not an option, as that would sabotage the state of your host -// process once you've unloaded. -template <typename Type> -struct StaticMemorySingletonTraits { - // WARNING: User has to deal with get() in the singleton class - // this is traits for returning NULL. - static Type* New() { - if (base::subtle::NoBarrier_AtomicExchange(&dead_, 1)) - return NULL; - Type* ptr = reinterpret_cast<Type*>(buffer_); - - // We are protected by a memory barrier. - new(ptr) Type(); - return ptr; - } - - static void Delete(Type* p) { - base::subtle::NoBarrier_Store(&dead_, 1); - base::subtle::MemoryBarrier(); - if (p != NULL) - p->Type::~Type(); - } - - static const bool kRegisterAtExit = true; - static const bool kAllowedToAccessOnNonjoinableThread = true; - - // Exposed for unittesting. - static void Resurrect() { - base::subtle::NoBarrier_Store(&dead_, 0); - } - - private: - static const size_t kBufferSize = (sizeof(Type) + - sizeof(intptr_t) - 1) / sizeof(intptr_t); - static intptr_t buffer_[kBufferSize]; - - // Signal the object was already deleted, so it is not revived. - static base::subtle::Atomic32 dead_; -}; - -template <typename Type> intptr_t - StaticMemorySingletonTraits<Type>::buffer_[kBufferSize]; -template <typename Type> base::subtle::Atomic32 - StaticMemorySingletonTraits<Type>::dead_ = 0; - -// The Singleton<Type, Traits, DifferentiatingType> class manages a single -// instance of Type which will be created on first use and will be destroyed at -// normal process exit). The Trait::Delete function will not be called on -// abnormal process exit. -// -// DifferentiatingType is used as a key to differentiate two different -// singletons having the same memory allocation functions but serving a -// different purpose. This is mainly used for Locks serving different purposes. -// -// Example usage: -// -// In your header: -// #include "base/singleton.h" -// class FooClass { -// public: -// static FooClass* GetInstance(); <-- See comment below on this. -// void Bar() { ... } -// private: -// FooClass() { ... } -// friend struct DefaultSingletonTraits<FooClass>; -// -// DISALLOW_COPY_AND_ASSIGN(FooClass); -// }; -// -// In your source file: -// FooClass* FooClass::GetInstance() { -// return Singleton<FooClass>::get(); -// } -// -// And to call methods on FooClass: -// FooClass::GetInstance()->Bar(); -// -// NOTE: The method accessing Singleton<T>::get() has to be named as GetInstance -// and it is important that FooClass::GetInstance() is not inlined in the -// header. This makes sure that when source files from multiple targets include -// this header they don't end up with different copies of the inlined code -// creating multiple copies of the singleton. -// -// Singleton<> has no non-static members and doesn't need to actually be -// instantiated. -// -// This class is itself thread-safe. The underlying Type must of course be -// thread-safe if you want to use it concurrently. Two parameters may be tuned -// depending on the user's requirements. -// -// Glossary: -// RAE = kRegisterAtExit -// -// On every platform, if Traits::RAE is true, the singleton will be destroyed at -// process exit. More precisely it uses base::AtExitManager which requires an -// object of this type to be instantiated. AtExitManager mimics the semantics -// of atexit() such as LIFO order but under Windows is safer to call. For more -// information see at_exit.h. -// -// If Traits::RAE is false, the singleton will not be freed at process exit, -// thus the singleton will be leaked if it is ever accessed. Traits::RAE -// shouldn't be false unless absolutely necessary. Remember that the heap where -// the object is allocated may be destroyed by the CRT anyway. -// -// Caveats: -// (a) Every call to get(), operator->() and operator*() incurs some overhead -// (16ns on my P4/2.8GHz) to check whether the object has already been -// initialized. You may wish to cache the result of get(); it will not -// change. -// -// (b) Your factory function must never throw an exception. This class is not -// exception-safe. -// -template <typename Type, - typename Traits = DefaultSingletonTraits<Type>, - typename DifferentiatingType = Type> -class Singleton { - private: - // Classes using the Singleton<T> pattern should declare a GetInstance() - // method and call Singleton::get() from within that. - friend Type* Type::GetInstance(); - - // This class is safe to be constructed and copy-constructed since it has no - // member. - - // Return a pointer to the one true instance of the class. - static Type* get() { - if (!Traits::kAllowedToAccessOnNonjoinableThread) - base::ThreadRestrictions::AssertSingletonAllowed(); - - // Our AtomicWord doubles as a spinlock, where a value of - // kBeingCreatedMarker means the spinlock is being held for creation. - static const base::subtle::AtomicWord kBeingCreatedMarker = 1; - - base::subtle::AtomicWord value = base::subtle::NoBarrier_Load(&instance_); - if (value != 0 && value != kBeingCreatedMarker) { - // See the corresponding HAPPENS_BEFORE below. - ANNOTATE_HAPPENS_AFTER(&instance_); - return reinterpret_cast<Type*>(value); - } - - // Object isn't created yet, maybe we will get to create it, let's try... - if (base::subtle::Acquire_CompareAndSwap(&instance_, - 0, - kBeingCreatedMarker) == 0) { - // instance_ was NULL and is now kBeingCreatedMarker. Only one thread - // will ever get here. Threads might be spinning on us, and they will - // stop right after we do this store. - Type* newval = Traits::New(); - - // This annotation helps race detectors recognize correct lock-less - // synchronization between different threads calling get(). - // See the corresponding HAPPENS_AFTER below and above. - ANNOTATE_HAPPENS_BEFORE(&instance_); - base::subtle::Release_Store( - &instance_, reinterpret_cast<base::subtle::AtomicWord>(newval)); - - if (newval != NULL && Traits::kRegisterAtExit) - base::AtExitManager::RegisterCallback(OnExit, NULL); - - return newval; - } - - // We hit a race. Another thread beat us and either: - // - Has the object in BeingCreated state - // - Already has the object created... - // We know value != NULL. It could be kBeingCreatedMarker, or a valid ptr. - // Unless your constructor can be very time consuming, it is very unlikely - // to hit this race. When it does, we just spin and yield the thread until - // the object has been created. - while (true) { - value = base::subtle::NoBarrier_Load(&instance_); - if (value != kBeingCreatedMarker) - break; - base::PlatformThread::YieldCurrentThread(); - } - - // See the corresponding HAPPENS_BEFORE above. - ANNOTATE_HAPPENS_AFTER(&instance_); - return reinterpret_cast<Type*>(value); - } - - // Adapter function for use with AtExit(). This should be called single - // threaded, so don't use atomic operations. - // Calling OnExit while singleton is in use by other threads is a mistake. - static void OnExit(void* /*unused*/) { - // AtExit should only ever be register after the singleton instance was - // created. We should only ever get here with a valid instance_ pointer. - Traits::Delete( - reinterpret_cast<Type*>(base::subtle::NoBarrier_Load(&instance_))); - instance_ = 0; - } - static base::subtle::AtomicWord instance_; -}; - -template <typename Type, typename Traits, typename DifferentiatingType> -base::subtle::AtomicWord Singleton<Type, Traits, DifferentiatingType>:: - instance_ = 0; - -#endif // BASE_SINGLETON_H_ diff --git a/third_party/libphonenumber/cpp/src/default_logger.cc b/third_party/libphonenumber/cpp/src/default_logger.cc deleted file mode 100644 index 11eb59f..0000000 --- a/third_party/libphonenumber/cpp/src/default_logger.cc +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#include <iostream> - -#include "default_logger.h" - -using std::cerr; -using std::cout; -using std::endl; - -namespace i18n { -namespace phonenumbers { - -DefaultLogger::DefaultLogger(LogLevel level) : level_(level) {} - -DefaultLogger::~DefaultLogger() {} - -void DefaultLogger::Fatal(const string& msg) const { - if (level_ >= LOG_FATAL) { - cerr << "FATAL libphonenumber " << msg << endl; - } -} - -void DefaultLogger::Error(const string& msg) const { - if (level_ >= LOG_ERROR) { - cerr << "ERROR libphonenumber " << msg << endl; - } -} - -void DefaultLogger::Warning(const string& msg) const { - if (level_ >= LOG_WARNING) { - cerr << "WARNING libphonenumber " << msg << endl; - } -} - -void DefaultLogger::Info(const string& msg) const { - if (level_ >= LOG_INFO) { - cout << "INFO libphonenumber " << msg << endl; - } -} - -void DefaultLogger::Debug(const string& msg) const { - if (level_ >= LOG_DEBUG) { - cout << "DEBUG libphonenumber " << msg << endl; - } -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/default_logger.h b/third_party/libphonenumber/cpp/src/default_logger.h deleted file mode 100644 index d1ebc1f..0000000 --- a/third_party/libphonenumber/cpp/src/default_logger.h +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#ifndef I18N_PHONENUMBERS_DEFAULT_LOGGER_H_ -#define I18N_PHONENUMBERS_DEFAULT_LOGGER_H_ - -#include "logger_adapter.h" - -namespace i18n { -namespace phonenumbers { - -enum LogLevel { - LOG_FATAL, - LOG_ERROR, - LOG_WARNING, - LOG_INFO, - LOG_DEBUG, -}; - -class DefaultLogger : public LoggerAdapter { - public: - virtual ~DefaultLogger(); - - DefaultLogger(LogLevel level = LOG_WARNING); - - virtual void Fatal(const string& msg) const; - - virtual void Error(const string& msg) const; - - virtual void Warning(const string& msg) const; - - virtual void Info(const string& msg) const; - - virtual void Debug(const string& msg) const; - - private: - LogLevel level_; -}; - -} // namespace phonenumbers -} // namespace i18n - -# endif // I18N_PHONENUMBERS_DEFAULT_LOGGER_H_ diff --git a/third_party/libphonenumber/cpp/src/logger_adapter.cc b/third_party/libphonenumber/cpp/src/logger_adapter.cc deleted file mode 100644 index edfaa04..0000000 --- a/third_party/libphonenumber/cpp/src/logger_adapter.cc +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -# include "logger_adapter.h" - -namespace i18n { -namespace phonenumbers { - -LoggerAdapter::~LoggerAdapter() {} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/logger_adapter.h b/third_party/libphonenumber/cpp/src/logger_adapter.h deleted file mode 100644 index 37122bc..0000000 --- a/third_party/libphonenumber/cpp/src/logger_adapter.h +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#ifndef I18N_PHONENUMBERS_LOGGER_ADAPTER_H_ -#define I18N_PHONENUMBERS_LOGGER_ADAPTER_H_ - -#include <string> - -using std::string; - -namespace i18n { -namespace phonenumbers { - -// Implement this 'interface' to override the way logging is handled -// in the library. -class LoggerAdapter { - public: - virtual ~LoggerAdapter(); - - // Logging methods - virtual void Fatal(const string& msg) const = 0; - - virtual void Error(const string& msg) const = 0; - - virtual void Warning(const string& msg) const = 0; - - virtual void Info(const string& msg) const = 0; - - virtual void Debug(const string& msg) const = 0; -}; - -} // namespace phonenumbers -} // namespace i18n - -#endif // I18N_PHONENUMBERS_LOGGER_ADAPTER_H_ diff --git a/third_party/libphonenumber/cpp/src/metadata.cc b/third_party/libphonenumber/cpp/src/metadata.cc deleted file mode 100644 index 85a38ed..0000000 --- a/third_party/libphonenumber/cpp/src/metadata.cc +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "metadata.h" - -static const unsigned char metadata_data[] = { 0x0A, 0xAC, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x12, 0x2C, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x36, 0x38, 0x38, 0x39, 0x1A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x43, 0x50, 0xF7, 0x01, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA8, 0x02, 0x0A, 0x1F, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x38, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x1A, 0x12, 0x09, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1B, 0x12, 0x0A, 0x5B, 0x33, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1F, 0x12, 0x0C, 0x31, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x17, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x44, 0x50, 0xF8, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x10, 0x28, 0x31, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x03, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x35, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x30, 0x30, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x0B, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x2A, 0x12, 0x13, 0x34, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x20, 0x12, 0x0C, 0x37, 0x30, 0x30, 0x5B, 0x30, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x45, 0x50, 0xCB, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x0E, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8A, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x3E, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x21, 0x12, 0x0D, 0x37, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x46, 0x50, 0x5D, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB9, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x42, 0x12, 0x23, 0x32, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x34, 0x29, 0x7C, 0x35, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x46, 0x12, 0x30, 0x32, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x34, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x36, 0x34, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x24, 0x12, 0x0E, 0x32, 0x36, 0x38, 0x34, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x41, 0x47, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x24, 0x12, 0x0E, 0x32, 0x36, 0x38, 0x34, 0x30, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x30, 0x36, 0x31, 0x32, 0x33, 0x34, 0xBA, 0x01, 0x03, 0x32, 0x36, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF7, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x37, 0x12, 0x18, 0x32, 0x36, 0x34, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x36, 0x34, 0x34, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x47, 0x12, 0x31, 0x32, 0x36, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x35, 0x7C, 0x34, 0x37, 0x36, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x37, 0x32, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x34, 0x32, 0x33, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x49, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x36, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x87, 0x05, 0x0A, 0x2D, 0x12, 0x22, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0xAE, 0x01, 0x12, 0x98, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x0B, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1A, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x19, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x32, 0x19, 0x12, 0x08, 0x38, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x38, 0x31, 0x32, 0x33, 0x3A, 0x1B, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4C, 0x50, 0xE3, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x11, 0x28, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x19, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5B, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x04, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x12, 0x5A, 0x12, 0x45, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x37, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1F, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x1F, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1C, 0x12, 0x09, 0x36, 0x30, 0x32, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x30, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x41, 0x4D, 0x50, 0xF6, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x31, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x38, 0x7C, 0x39, 0x30, 0x22, 0x04, 0x30, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x03, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x83, 0x01, 0x12, 0x6F, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x38, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x30, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x30, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x37, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x31, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x37, 0x31, 0x35, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x8D, 0x01, 0x12, 0x79, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x38, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x31, 0x36, 0x5B, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x33, 0x31, 0x38, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x22, 0x12, 0x0E, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x36, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x31, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4E, 0x50, 0xD7, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x23, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEE, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x31, 0x12, 0x1D, 0x32, 0x5C, 0x64, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5C, 0x64, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1F, 0x12, 0x0B, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4F, 0x50, 0xF4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE1, 0x0F, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x22, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x80, 0x01, 0x12, 0x67, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0B, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x1D, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x26, 0x12, 0x10, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x52, 0x50, 0x36, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x95, 0x04, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x31, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x3F, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x32, 0x7C, 0x31, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x29, 0x7C, 0x34, 0x37, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x32, 0x3F, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x3F, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x3F, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x3F, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x3F, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x3F, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x29, 0x29, 0x29, 0x31, 0x35, 0x29, 0x3F, 0x82, 0x01, 0x03, 0x39, 0x24, 0x31, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x13, 0x39, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x39, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7F, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x13, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x1A, 0x3C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x9F, 0x01, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x1A, 0x59, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x12, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x61, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x37, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x2D, 0x0A, 0x19, 0x28, 0x5B, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x13, 0x39, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x39, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x39, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x79, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x39, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x13, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x1A, 0x3C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x99, 0x01, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x39, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x1A, 0x59, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x29, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x23, 0x0A, 0x12, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x5C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x37, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x29, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x43, 0x12, 0x24, 0x36, 0x38, 0x34, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x35, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x38, 0x34, 0x36, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x29, 0x12, 0x13, 0x36, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x37, 0x33, 0x33, 0x7C, 0x32, 0x35, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x38, 0x34, 0x37, 0x33, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x38, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC9, 0x07, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x33, 0x7D, 0x12, 0xF3, 0x02, 0x12, 0xDA, 0x02, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x32, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x36, 0x33, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x33, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x37, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x41, 0x12, 0x2A, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x36, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x25, 0x12, 0x0E, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x38, 0x12, 0x21, 0x28, 0x3F, 0x3A, 0x37, 0x31, 0x31, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x2D, 0x12, 0x16, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0B, 0x37, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x37, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x41, 0x54, 0x50, 0x2B, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x10, 0x28, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x32, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x31, 0x7C, 0x35, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5A, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x37, 0x33, 0x31, 0x36, 0x7C, 0x34, 0x36, 0x7C, 0x35, 0x31, 0x7C, 0x37, 0x33, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x30, 0x29, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7E, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x5C, 0x32, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEA, 0x05, 0x0A, 0x1A, 0x12, 0x0E, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x0B, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x57, 0x12, 0x43, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x3D, 0x12, 0x25, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x24, 0x12, 0x0E, 0x31, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1C, 0x12, 0x08, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1C, 0x12, 0x08, 0x35, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x41, 0x55, 0x50, 0x3D, 0x5A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x34, 0x7C, 0x34, 0x5B, 0x31, 0x37, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x36, 0x7C, 0x37, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x3F, 0x30, 0x30, 0x31, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x04, 0x30, 0x30, 0x31, 0x31, 0x9A, 0x01, 0x33, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x35, 0x5B, 0x30, 0x35, 0x5D, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4A, 0x0A, 0x1B, 0x28, 0x31, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x5D, 0x30, 0x7C, 0x39, 0x29, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x5D, 0x30, 0x30, 0x7C, 0x39, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x0C, 0x28, 0x31, 0x38, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x31, 0x38, 0x30, 0x1A, 0x08, 0x31, 0x38, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x12, 0x28, 0x31, 0x33, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBA, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x3D, 0x12, 0x2B, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x3F, 0x12, 0x2D, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x36, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x36, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x1A, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x57, 0x50, 0xA9, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x13, 0x28, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF1, 0x05, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0xA5, 0x01, 0x12, 0x8E, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x29, 0x5C, 0x64, 0x7C, 0x30, 0x32, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x36, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x39, 0x29, 0x7C, 0x33, 0x36, 0x35, 0x3F, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2F, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x5D, 0x30, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1F, 0x12, 0x0B, 0x39, 0x30, 0x30, 0x32, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x5A, 0x50, 0xE2, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3B, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x31, 0x5B, 0x32, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x32, 0x32, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x33, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x45, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x12, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x35, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC7, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x27, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x20, 0x12, 0x0D, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1D, 0x12, 0x0A, 0x38, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x0C, 0x39, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x41, 0x50, 0x83, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x19, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1A, 0x12, 0x07, 0x38, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A, 0xE1, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x2C, 0x12, 0x0D, 0x32, 0x34, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x34, 0x36, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3C, 0x12, 0x26, 0x32, 0x34, 0x36, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x38, 0x32, 0x29, 0x5C, 0x64, 0x7C, 0x32, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x34, 0x36, 0x32, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x42, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x34, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCD, 0x07, 0x0A, 0x2E, 0x12, 0x22, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xA4, 0x04, 0x12, 0x8E, 0x04, 0x32, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x31, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x36, 0x5D, 0x31, 0x7C, 0x5B, 0x31, 0x33, 0x37, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x31, 0x7C, 0x38, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x31, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x32, 0x7C, 0x34, 0x31, 0x36, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x31, 0x32, 0x3F, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x36, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x31, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x32, 0x31, 0x5C, 0x64, 0x3F, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x32, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x5B, 0x33, 0x39, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x31, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x3F, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x32, 0x29, 0x5C, 0x64, 0x7C, 0x36, 0x31, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x5D, 0x31, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x39, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x2D, 0x38, 0x5D, 0x31, 0x7C, 0x36, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x33, 0x32, 0x7C, 0x39, 0x31, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x33, 0x31, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x32, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x32, 0x7C, 0x31, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x31, 0x7C, 0x32, 0x31, 0x37, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x32, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x5B, 0x32, 0x34, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x37, 0x31, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x4B, 0x12, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x44, 0x50, 0xF0, 0x06, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x3F, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1D, 0x0A, 0x0A, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0D, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEF, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x66, 0x12, 0x53, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2F, 0x12, 0x1B, 0x34, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x24, 0x12, 0x11, 0x28, 0x3F, 0x3A, 0x39, 0x30, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x45, 0x50, 0x20, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3D, 0x0A, 0x1F, 0x28, 0x34, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x06, 0x34, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x42, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x57, 0x0A, 0x1F, 0x28, 0x5B, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x20, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x29, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCB, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x54, 0x12, 0x41, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x30, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x30, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x34, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x4D, 0x12, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x46, 0x50, 0xE2, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC3, 0x05, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x73, 0x12, 0x5F, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x3D, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x34, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1D, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x47, 0x50, 0xE7, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x13, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x11, 0x34, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x11, 0x34, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1A, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x34, 0x38, 0x7C, 0x38, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFD, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x31, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x52, 0x12, 0x3F, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x50, 0x12, 0x3D, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x5B, 0x33, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x48, 0x50, 0xCD, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x02, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2B, 0x12, 0x18, 0x32, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x34, 0x12, 0x21, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x39, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x49, 0x50, 0x81, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD0, 0x02, 0x0A, 0x1D, 0x12, 0x12, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x31, 0x5B, 0x30, 0x33, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x42, 0x12, 0x2F, 0x36, 0x36, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x0B, 0x37, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x37, 0x33, 0x31, 0x32, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1F, 0x12, 0x0C, 0x38, 0x35, 0x37, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x35, 0x37, 0x35, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x42, 0x4A, 0x50, 0xE5, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDF, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x2F, 0x12, 0x1B, 0x35, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x30, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x34, 0x12, 0x20, 0x36, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4C, 0x50, 0xCE, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x87, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x5E, 0x12, 0x3F, 0x34, 0x34, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x32, 0x33, 0x7C, 0x36, 0x31, 0x7C, 0x5B, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x39, 0x29, 0x7C, 0x38, 0x32, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x30, 0x12, 0x1A, 0x34, 0x34, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x34, 0x31, 0x33, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4D, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x34, 0x34, 0x31, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDE, 0x01, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x1C, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1B, 0x12, 0x09, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4E, 0x50, 0xA1, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDD, 0x03, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0xE2, 0x01, 0x12, 0xCC, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x5B, 0x32, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x36, 0x32, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x34, 0x32, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x36, 0x7C, 0x39, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x32, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4F, 0x50, 0xCF, 0x04, 0x5A, 0x08, 0x30, 0x30, 0x28, 0x31, 0x5C, 0x64, 0x29, 0x3F, 0x62, 0x01, 0x30, 0x7A, 0x07, 0x30, 0x28, 0x31, 0x5C, 0x64, 0x29, 0x3F, 0x9A, 0x01, 0x29, 0x0A, 0x0E, 0x28, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x22, 0x00, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x22, 0x0A, 0x0B, 0x28, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x02, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x36, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF1, 0x04, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x56, 0x12, 0x3E, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x54, 0x12, 0x3E, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x29, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x21, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x25, 0x12, 0x0E, 0x5B, 0x33, 0x35, 0x39, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x29, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x30, 0x5C, 0x64, 0x7C, 0x33, 0x30, 0x30, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x34, 0x30, 0x30, 0x34, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x52, 0x50, 0x37, 0x5A, 0x1B, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x31, 0x7C, 0x34, 0x33, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x23, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x29, 0x29, 0x3F, 0x82, 0x01, 0x02, 0x24, 0x32, 0x9A, 0x01, 0x3F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x0A, 0x30, 0x20, 0x24, 0x43, 0x43, 0x20, 0x28, 0x24, 0x31, 0x29, 0x9A, 0x01, 0x30, 0x0A, 0x11, 0x28, 0x5B, 0x33, 0x34, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x33, 0x34, 0x5D, 0x30, 0x30, 0x1A, 0x08, 0x34, 0x30, 0x30, 0x7C, 0x33, 0x30, 0x30, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x1A, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x97, 0x04, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x8D, 0x01, 0x12, 0x6E, 0x32, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x36, 0x31, 0x7C, 0x35, 0x30, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x37, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x30, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x34, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x83, 0x01, 0x12, 0x6D, 0x32, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x35, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x35, 0x7C, 0x37, 0x37, 0x29, 0x7C, 0x36, 0x5B, 0x33, 0x34, 0x5D, 0x36, 0x7C, 0x37, 0x32, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x34, 0x32, 0x33, 0x35, 0x39, 0x31, 0x32, 0x33, 0x34, 0x22, 0x3F, 0x12, 0x29, 0x32, 0x34, 0x32, 0x33, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x34, 0x32, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC5, 0x02, 0x0A, 0x1C, 0x12, 0x11, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x4A, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1A, 0x12, 0x07, 0x31, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x54, 0x50, 0xCF, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x19, 0x28, 0x31, 0x37, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFF, 0x03, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0xB9, 0x01, 0x12, 0xA6, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x34, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x32, 0x12, 0x1F, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x19, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0F, 0x37, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x39, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x42, 0x57, 0x50, 0x8B, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x13, 0x28, 0x37, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0B, 0x28, 0x39, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x39, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9A, 0x04, 0x0A, 0x21, 0x12, 0x15, 0x5B, 0x31, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xB6, 0x01, 0x12, 0x9F, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x35, 0x32, 0x34, 0x35, 0x30, 0x39, 0x31, 0x31, 0x1A, 0x39, 0x12, 0x25, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x39, 0x34, 0x39, 0x31, 0x31, 0x39, 0x31, 0x31, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x59, 0x50, 0xF7, 0x02, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x03, 0x38, 0x30, 0x3F, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x22, 0x05, 0x38, 0x20, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC7, 0x02, 0x0A, 0x25, 0x12, 0x12, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x30, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x12, 0x23, 0x12, 0x11, 0x5B, 0x32, 0x33, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x2C, 0x12, 0x1A, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x36, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x20, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x31, 0x32, 0x33, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x5A, 0x50, 0xF5, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x30, 0x29, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x88, 0x05, 0x0A, 0x24, 0x12, 0x11, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0xC2, 0x01, 0x12, 0xA2, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x7C, 0x32, 0x36, 0x7C, 0x5B, 0x34, 0x38, 0x5D, 0x39, 0x7C, 0x35, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x34, 0x33, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x33, 0x7C, 0x31, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x31, 0x33, 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x38, 0x5D, 0x30, 0x7C, 0x37, 0x38, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x37, 0x7C, 0x31, 0x39, 0x7C, 0x29, 0x7C, 0x39, 0x30, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x31, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x34, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0xB9, 0x01, 0x12, 0x99, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x7C, 0x32, 0x36, 0x7C, 0x5B, 0x34, 0x38, 0x5D, 0x39, 0x7C, 0x35, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x34, 0x33, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x33, 0x7C, 0x31, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x31, 0x33, 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x38, 0x5D, 0x30, 0x7C, 0x37, 0x38, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x37, 0x7C, 0x31, 0x39, 0x7C, 0x29, 0x7C, 0x39, 0x30, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x34, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x45, 0x12, 0x26, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x31, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x41, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB1, 0x02, 0x0A, 0x1F, 0x12, 0x14, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x1C, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2D, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x44, 0x50, 0xF3, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x10, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x1D, 0x12, 0x0A, 0x32, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1F, 0x12, 0x0C, 0x37, 0x5B, 0x30, 0x32, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1C, 0x12, 0x09, 0x38, 0x37, 0x37, 0x36, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x37, 0x36, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x46, 0x50, 0xEC, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA7, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x23, 0x12, 0x0F, 0x32, 0x32, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x20, 0x12, 0x0C, 0x30, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x30, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x47, 0x50, 0xF2, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x30, 0x32, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x25, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xBC, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x49, 0x12, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x20, 0x12, 0x0C, 0x37, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x21, 0x12, 0x0D, 0x38, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1C, 0x12, 0x08, 0x38, 0x37, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x48, 0x50, 0x29, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x41, 0x0A, 0x1E, 0x28, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0B, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x38, 0x5B, 0x30, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCE, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x6A, 0x12, 0x57, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x30, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x37, 0x12, 0x24, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x49, 0x50, 0xE1, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xE5, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x12, 0x2B, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x24, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x37, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x4B, 0x50, 0xAA, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAD, 0x06, 0x0A, 0x24, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x30, 0x30, 0x7C, 0x31, 0x32, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x59, 0x12, 0x44, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x33, 0x32, 0x7C, 0x34, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x21, 0x12, 0x0B, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x29, 0x12, 0x12, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x32, 0x33, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0A, 0x36, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x43, 0x4C, 0x50, 0x38, 0x5A, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x29, 0x29, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x33, 0x30, 0x7C, 0x28, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x29, 0x29, 0x9A, 0x01, 0x30, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x08, 0x24, 0x43, 0x43, 0x20, 0x28, 0x24, 0x31, 0x29, 0x9A, 0x01, 0x4B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x16, 0x5B, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x08, 0x24, 0x43, 0x43, 0x20, 0x28, 0x24, 0x31, 0x29, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x39, 0x29, 0x28, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x34, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x34, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x18, 0x28, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x36, 0x30, 0x7C, 0x38, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1A, 0x28, 0x36, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x36, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x14, 0x28, 0x31, 0x32, 0x33, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC6, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x21, 0x12, 0x0E, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1A, 0x12, 0x07, 0x38, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x4D, 0x50, 0xED, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x3E, 0x0A, 0x20, 0x28, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x09, 0x5B, 0x32, 0x33, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAA, 0x13, 0x0A, 0x2C, 0x12, 0x20, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0xEF, 0x03, 0x12, 0xD6, 0x03, 0x32, 0x31, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x35, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3D, 0x12, 0x26, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x28, 0x12, 0x0F, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x29, 0x3F, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x0B, 0x31, 0x36, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x36, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x08, 0x34, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x43, 0x4E, 0x50, 0x56, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x10, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x38, 0x30, 0x5B, 0x32, 0x36, 0x37, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x73, 0x0A, 0x16, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x26, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x51, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xD7, 0x02, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0xAC, 0x02, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x35, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x15, 0x28, 0x31, 0x30, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x30, 0x38, 0x1A, 0x04, 0x31, 0x30, 0x38, 0x30, 0x1A, 0x05, 0x31, 0x30, 0x38, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x26, 0x0A, 0x14, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x6E, 0x0A, 0x16, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x26, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x25, 0x0A, 0x10, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x38, 0x30, 0x5B, 0x32, 0x36, 0x37, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x76, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x51, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x38, 0x2A, 0x00, 0xA2, 0x01, 0xD2, 0x02, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0xAC, 0x02, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x35, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x30, 0x0A, 0x19, 0x28, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x35, 0x0A, 0x15, 0x28, 0x31, 0x30, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x30, 0x38, 0x1A, 0x04, 0x31, 0x30, 0x38, 0x30, 0x1A, 0x05, 0x31, 0x30, 0x38, 0x30, 0x30, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFC, 0x05, 0x0A, 0x27, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x30, 0x2C, 0x33, 0x7D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x24, 0x12, 0x11, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x34, 0x12, 0x1E, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x20, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x2D, 0x12, 0x16, 0x31, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x4F, 0x50, 0x39, 0x5A, 0x11, 0x30, 0x30, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x23, 0x35, 0x35, 0x35, 0x7C, 0x23, 0x39, 0x39, 0x39, 0x62, 0x01, 0x30, 0x7A, 0x14, 0x30, 0x28, 0x5B, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x36, 0x29, 0x29, 0x9A, 0x01, 0x6C, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x1A, 0x26, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x39, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x25, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x4E, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x1A, 0x19, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x5F, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x1A, 0x26, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x39, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x1C, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x2A, 0x00, 0xA2, 0x01, 0x49, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x1A, 0x19, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x02, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x1F, 0x12, 0x0C, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2B, 0x12, 0x18, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x22, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1C, 0x12, 0x09, 0x34, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x43, 0x52, 0x50, 0xFA, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x06, 0x28, 0x31, 0x39, 0x30, 0x30, 0x29, 0x9A, 0x01, 0x2E, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x32, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF8, 0x02, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x12, 0x6B, 0x12, 0x56, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x35, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x55, 0x50, 0x35, 0x5A, 0x03, 0x31, 0x31, 0x39, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0D, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x37, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x1E, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x49, 0x12, 0x37, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x21, 0x12, 0x0F, 0x28, 0x3F, 0x3A, 0x39, 0x5C, 0x64, 0x7C, 0x35, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x56, 0x50, 0xEE, 0x01, 0x5A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA5, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x33, 0x12, 0x20, 0x37, 0x37, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x09, 0x38, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x1C, 0x12, 0x09, 0x39, 0x30, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1B, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x59, 0x50, 0xE5, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1E, 0x0A, 0x11, 0x28, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE9, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x3D, 0x12, 0x29, 0x32, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2D, 0x12, 0x19, 0x36, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x21, 0x12, 0x0D, 0x39, 0x30, 0x5B, 0x30, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1F, 0x12, 0x0B, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1F, 0x12, 0x0B, 0x37, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x5A, 0x50, 0xA4, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x1A, 0x28, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9F, 0x0C, 0x0A, 0x4D, 0x12, 0x41, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x33, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x32, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x12, 0xC5, 0x01, 0x12, 0xAE, 0x01, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x33, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x32, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x54, 0x12, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x23, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x31, 0x12, 0x18, 0x39, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x21, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x31, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x1F, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x45, 0x50, 0x31, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x0E, 0x33, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x34, 0x30, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6C, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x49, 0x32, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x31, 0x7C, 0x30, 0x5B, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x34, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x34, 0x30, 0x29, 0x7C, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xBD, 0x04, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x51, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x36, 0x39, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x1A, 0xC7, 0x03, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x7C, 0x33, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x23, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0A, 0x31, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x43, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x31, 0x38, 0x7C, 0x39, 0x30, 0x29, 0x30, 0x1A, 0x0D, 0x31, 0x38, 0x30, 0x7C, 0x39, 0x30, 0x30, 0x5B, 0x31, 0x33, 0x35, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x37, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x37, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x32, 0x12, 0x1C, 0x31, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x31, 0x31, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x31, 0x36, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE1, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x12, 0x27, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1B, 0x12, 0x0A, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4A, 0x50, 0xFD, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x4E, 0x12, 0x3B, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x49, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4B, 0x50, 0x2D, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x1E, 0x28, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x90, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x52, 0x12, 0x33, 0x37, 0x36, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x30, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x36, 0x37, 0x34, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x45, 0x12, 0x2F, 0x37, 0x36, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x5D, 0x35, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x31, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x31, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x37, 0x32, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4D, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x37, 0x36, 0x37, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDF, 0x02, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x30, 0x12, 0x11, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x30, 0x12, 0x11, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4F, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x07, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x93, 0x04, 0x0A, 0x21, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x47, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x36, 0x31, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2E, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x37, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0F, 0x38, 0x30, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x20, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1F, 0x12, 0x0B, 0x39, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x38, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x44, 0x5A, 0x50, 0xD5, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3B, 0x0A, 0x1E, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x21, 0x28, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1A, 0x28, 0x39, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF7, 0x03, 0x0A, 0x20, 0x12, 0x14, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x24, 0x12, 0x0F, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x25, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x43, 0x50, 0xD1, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2E, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x16, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x29, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x16, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE9, 0x05, 0x0A, 0x23, 0x12, 0x17, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x42, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x69, 0x12, 0x54, 0x28, 0x3F, 0x3A, 0x35, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x35, 0x29, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x32, 0x12, 0x1C, 0x38, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1A, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1F, 0x12, 0x0C, 0x37, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x45, 0x50, 0xF4, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x9C, 0x01, 0x0A, 0x15, 0x28, 0x5B, 0x33, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x2D, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x1A, 0x49, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x35, 0x29, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x12, 0x28, 0x37, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x14, 0x28, 0x38, 0x30, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x1A, 0x04, 0x38, 0x30, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x4F, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x12, 0x34, 0x30, 0x7C, 0x35, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x1A, 0x17, 0x34, 0x30, 0x7C, 0x35, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x1F, 0x12, 0x0D, 0x38, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x98, 0x04, 0x0A, 0x23, 0x12, 0x17, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xAF, 0x01, 0x12, 0x98, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x38, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x34, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x33, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x5D, 0x32, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x23, 0x12, 0x0F, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x47, 0x50, 0x14, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x23, 0x0A, 0x0D, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x89, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x12, 0x3D, 0x12, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x34, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x33, 0x37, 0x30, 0x33, 0x36, 0x32, 0x1A, 0x25, 0x12, 0x13, 0x31, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x52, 0x50, 0xA3, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD5, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x22, 0x12, 0x0E, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1A, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x0B, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1F, 0x12, 0x0B, 0x39, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1B, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x53, 0x50, 0x22, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x21, 0x28, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1B, 0x12, 0x07, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x0A, 0xF5, 0x06, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0xA6, 0x05, 0x12, 0x8F, 0x05, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x33, 0x7C, 0x33, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x38, 0x7C, 0x32, 0x5B, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x30, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x36, 0x30, 0x7C, 0x38, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x37, 0x7C, 0x35, 0x35, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x29, 0x5B, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x35, 0x30, 0x7C, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x20, 0x12, 0x0C, 0x39, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x54, 0x50, 0xFB, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA0, 0x05, 0x0A, 0x23, 0x12, 0x17, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x7A, 0x12, 0x62, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x7C, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x31, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2A, 0x12, 0x13, 0x34, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x22, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x23, 0x12, 0x0D, 0x5B, 0x36, 0x37, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x49, 0x50, 0xE6, 0x02, 0x5A, 0x0A, 0x30, 0x30, 0x7C, 0x39, 0x39, 0x5B, 0x30, 0x34, 0x39, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x14, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x35, 0x30, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0E, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x12, 0x28, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0xA1, 0x01, 0x12, 0x8A, 0x01, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x7C, 0x33, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x31, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x0A, 0xD8, 0x02, 0x0A, 0x26, 0x12, 0x13, 0x5B, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x30, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x12, 0x2F, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x35, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x27, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x20, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x4A, 0x50, 0xA7, 0x05, 0x5A, 0x09, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x35, 0x32, 0x29, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x23, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xAB, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x12, 0x1B, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x33, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x19, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x4B, 0x50, 0xF4, 0x03, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF4, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x30, 0x12, 0x1E, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x30, 0x12, 0x1E, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x4D, 0x50, 0xB3, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x12, 0x2A, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x2C, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1F, 0x12, 0x0E, 0x38, 0x30, 0x5B, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x32, 0x31, 0x32, 0x33, 0x2A, 0x34, 0x12, 0x23, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x5D, 0x5B, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x24, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x46, 0x4F, 0x50, 0xAA, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x13, 0x28, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x9A, 0x01, 0x17, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x02, 0x24, 0x31, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB7, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1E, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x26, 0x12, 0x12, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x23, 0x12, 0x0F, 0x38, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x32, 0x12, 0x1E, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1A, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x46, 0x52, 0x50, 0x21, 0x5A, 0x08, 0x5B, 0x30, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x45, 0x0A, 0x24, 0x28, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x06, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x1D, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x22, 0x04, 0x30, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEF, 0x03, 0x0A, 0x1C, 0x12, 0x11, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x5A, 0x12, 0x49, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x1A, 0xAF, 0x01, 0x12, 0x9B, 0x01, 0x30, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x31, 0x7C, 0x38, 0x33, 0x7C, 0x39, 0x5B, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x36, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x41, 0x50, 0xF1, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x1A, 0x28, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xE4, 0x14, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xF9, 0x0A, 0x12, 0xE0, 0x0A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x32, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x31, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x39, 0x5D, 0x31, 0x5C, 0x64, 0x7C, 0x36, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x38, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x35, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x37, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x34, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x35, 0x5D, 0x29, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x36, 0x33, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x34, 0x37, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x37, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x5B, 0x30, 0x31, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x33, 0x30, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x31, 0x34, 0x30, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x32, 0x7C, 0x38, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x7C, 0x32, 0x37, 0x36, 0x5C, 0x64, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x38, 0x36, 0x29, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x39, 0x35, 0x5B, 0x35, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x35, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x34, 0x29, 0x7C, 0x39, 0x35, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x34, 0x32, 0x5C, 0x64, 0x7C, 0x35, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x5D, 0x32, 0x7C, 0x37, 0x36, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x35, 0x29, 0x7C, 0x35, 0x32, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x35, 0x38, 0x33, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x31, 0x29, 0x29, 0x7C, 0x36, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x39, 0x35, 0x36, 0x31, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x31, 0x37, 0x36, 0x38, 0x38, 0x38, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x31, 0x36, 0x39, 0x37, 0x37, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0xB0, 0x01, 0x12, 0x99, 0x01, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x5C, 0x64, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x34, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x48, 0x12, 0x27, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x31, 0x31, 0x7C, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x11, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x39, 0x12, 0x23, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x42, 0x12, 0x23, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x34, 0x36, 0x34, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x34, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x47, 0x42, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x32, 0x7C, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x13, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x5C, 0x64, 0x31, 0x29, 0x7C, 0x33, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x8C, 0x01, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x16, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x36, 0x7C, 0x39, 0x34, 0x29, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x37, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x7C, 0x33, 0x39, 0x29, 0x7C, 0x36, 0x39, 0x37, 0x7C, 0x37, 0x36, 0x38, 0x7C, 0x39, 0x34, 0x36, 0x29, 0x1A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x37, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x32, 0x7C, 0x33, 0x39, 0x5B, 0x34, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x39, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x37, 0x36, 0x38, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x34, 0x36, 0x37, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x0F, 0x28, 0x37, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x09, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3F, 0x0A, 0x0C, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x1A, 0x04, 0x38, 0x30, 0x30, 0x31, 0x1A, 0x05, 0x38, 0x30, 0x30, 0x31, 0x31, 0x1A, 0x06, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x1A, 0x07, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x0E, 0x28, 0x38, 0x34, 0x35, 0x29, 0x28, 0x34, 0x36, 0x29, 0x28, 0x34, 0x5C, 0x64, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x34, 0x35, 0x1A, 0x04, 0x38, 0x34, 0x35, 0x34, 0x1A, 0x05, 0x38, 0x34, 0x35, 0x34, 0x36, 0x1A, 0x06, 0x38, 0x34, 0x35, 0x34, 0x36, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x16, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x0F, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x35, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x51, 0x12, 0x3B, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x29, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0xC3, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x85, 0x01, 0x12, 0x66, 0x34, 0x37, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x36, 0x39, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x38, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x33, 0x7C, 0x39, 0x30, 0x29, 0x7C, 0x36, 0x33, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x38, 0x7C, 0x38, 0x34, 0x29, 0x7C, 0x39, 0x33, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x34, 0x37, 0x33, 0x32, 0x36, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x44, 0x12, 0x2E, 0x34, 0x37, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x35, 0x38, 0x29, 0x7C, 0x35, 0x33, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x37, 0x33, 0x34, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x44, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x34, 0x37, 0x33, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBC, 0x03, 0x0A, 0x1E, 0x12, 0x13, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x67, 0x12, 0x52, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x41, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x45, 0x50, 0xE3, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x3C, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x1A, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x46, 0x50, 0xD2, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x93, 0x04, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x09, 0x31, 0x34, 0x38, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x34, 0x38, 0x31, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x2B, 0x12, 0x15, 0x37, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x31, 0x7C, 0x38, 0x33, 0x39, 0x7C, 0x39, 0x31, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x37, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x48, 0x12, 0x27, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x31, 0x31, 0x7C, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x11, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x39, 0x12, 0x23, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x42, 0x12, 0x23, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x34, 0x36, 0x34, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x34, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x47, 0x47, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x51, 0x12, 0x3B, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x29, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0x84, 0x03, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x99, 0x01, 0x12, 0x82, 0x01, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x31, 0x36, 0x37, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x30, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3E, 0x12, 0x2A, 0x32, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x30, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x48, 0x50, 0xE9, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8B, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x36, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x25, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0D, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x49, 0x50, 0xDE, 0x02, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9D, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x12, 0x39, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x31, 0x39, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x32, 0x31, 0x30, 0x30, 0x30, 0x1A, 0x20, 0x12, 0x0F, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x18, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x0A, 0x33, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x38, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x47, 0x4C, 0x50, 0xAB, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAD, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x7B, 0x12, 0x69, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x34, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x38, 0x29, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1D, 0x12, 0x0B, 0x5B, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x4D, 0x50, 0xDC, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCF, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x4B, 0x12, 0x38, 0x33, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x31, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x32, 0x34, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x5A, 0x12, 0x47, 0x35, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x5D, 0x30, 0x7C, 0x33, 0x35, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x4E, 0x50, 0xE0, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD4, 0x02, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x51, 0x12, 0x3D, 0x35, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x58, 0x12, 0x44, 0x36, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x50, 0x50, 0xCE, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x16, 0x28, 0x5B, 0x35, 0x36, 0x5D, 0x39, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF4, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x48, 0x12, 0x32, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x5B, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x33, 0x33, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x26, 0x12, 0x10, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x32, 0x7C, 0x35, 0x35, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x24, 0x12, 0x0E, 0x38, 0x30, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x24, 0x12, 0x0E, 0x39, 0x30, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x51, 0x50, 0xF0, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x81, 0x06, 0x0A, 0x15, 0x12, 0x0B, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0xF1, 0x02, 0x12, 0xDA, 0x02, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x1D, 0x12, 0x07, 0x36, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x21, 0x12, 0x0B, 0x39, 0x30, 0x5B, 0x31, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x2B, 0x12, 0x15, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x31, 0x32, 0x7C, 0x32, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x52, 0x50, 0x1E, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x32, 0x31, 0x7C, 0x37, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x31, 0x7C, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x0F, 0x28, 0x32, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCB, 0x02, 0x0A, 0x28, 0x12, 0x15, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x22, 0x12, 0x0F, 0x5B, 0x32, 0x36, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x1D, 0x12, 0x0A, 0x5B, 0x33, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x22, 0x12, 0x0B, 0x31, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, 0x2A, 0x1E, 0x12, 0x07, 0x31, 0x39, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x54, 0x50, 0xF6, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE6, 0x05, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0xF4, 0x01, 0x12, 0xD4, 0x01, 0x36, 0x37, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x36, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x37, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x38, 0x7C, 0x36, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x31, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0xF4, 0x01, 0x12, 0xD4, 0x01, 0x36, 0x37, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x36, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x37, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x38, 0x7C, 0x36, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x31, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x55, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x37, 0x31, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x44, 0x12, 0x32, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x37, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x0A, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x57, 0x50, 0xF5, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD8, 0x02, 0x0A, 0x16, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x7A, 0x12, 0x68, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x18, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x36, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x22, 0x22, 0x12, 0x10, 0x28, 0x3F, 0x3A, 0x32, 0x38, 0x39, 0x7C, 0x38, 0x36, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x38, 0x39, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x1B, 0x12, 0x09, 0x39, 0x30, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x38, 0x31, 0x32, 0x33, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x59, 0x50, 0xD0, 0x04, 0x5A, 0x03, 0x30, 0x30, 0x31, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA6, 0x03, 0x0A, 0x2B, 0x12, 0x1F, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x1C, 0x12, 0x09, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1E, 0x12, 0x0B, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x4B, 0x50, 0xD4, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x39, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1C, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x1A, 0x28, 0x39, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x39, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9E, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0xE8, 0x01, 0x12, 0xD4, 0x01, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x33, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x34, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x37, 0x39, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1E, 0x12, 0x0B, 0x5B, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x4E, 0x50, 0xF8, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA8, 0x06, 0x0A, 0x25, 0x12, 0x19, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x4F, 0x12, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x27, 0x12, 0x10, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x25, 0x12, 0x0D, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0D, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x06, 0x36, 0x31, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x22, 0x12, 0x0C, 0x37, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x52, 0x50, 0x81, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x36, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x36, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x1C, 0x28, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x21, 0x28, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9B, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2D, 0x12, 0x1A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x34, 0x35, 0x33, 0x33, 0x30, 0x30, 0x1A, 0x26, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x34, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x19, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x39, 0x38, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x48, 0x54, 0x50, 0xFD, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAF, 0x03, 0x0A, 0x12, 0x12, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x71, 0x12, 0x5C, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x28, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x5D, 0x30, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1D, 0x12, 0x0A, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x34, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x55, 0x50, 0x24, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x02, 0x30, 0x36, 0x7A, 0x02, 0x30, 0x36, 0x9A, 0x01, 0x28, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDD, 0x07, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0xB1, 0x03, 0x12, 0x99, 0x03, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x39, 0x3F, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x27, 0x12, 0x10, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x2D, 0x12, 0x15, 0x31, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x44, 0x50, 0x3E, 0x5A, 0x1B, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1A, 0x5B, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1A, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x09, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x31, 0x37, 0x37, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x23, 0x0A, 0x0E, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x17, 0x28, 0x38, 0x30, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x38, 0x30, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD9, 0x08, 0x0A, 0x1A, 0x12, 0x0E, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x91, 0x02, 0x12, 0xFB, 0x01, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x32, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x30, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x31, 0x12, 0x1A, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1F, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x38, 0x12, 0x22, 0x31, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x30, 0x7C, 0x35, 0x39, 0x7C, 0x39, 0x5B, 0x30, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x35, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x22, 0x12, 0x0C, 0x31, 0x38, 0x5B, 0x35, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1C, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1B, 0x12, 0x07, 0x37, 0x36, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x49, 0x45, 0x50, 0xE1, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x48, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x26, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0D, 0x34, 0x30, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x12, 0x28, 0x34, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x34, 0x38, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x13, 0x28, 0x38, 0x31, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x37, 0x36, 0x7C, 0x38, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x13, 0x28, 0x37, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x7C, 0x35, 0x29, 0x1A, 0x0E, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x30, 0x7C, 0x35, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1C, 0x12, 0x08, 0x38, 0x31, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A, 0x85, 0x06, 0x0A, 0x37, 0x12, 0x2B, 0x5B, 0x31, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x3F, 0x7C, 0x36, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x2F, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x22, 0x12, 0x0E, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x31, 0x12, 0x19, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x32, 0x35, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x36, 0x12, 0x1E, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x32, 0x7C, 0x28, 0x3F, 0x3A, 0x39, 0x31, 0x39, 0x7C, 0x32, 0x30, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x31, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x27, 0x12, 0x11, 0x31, 0x28, 0x3F, 0x3A, 0x37, 0x30, 0x30, 0x7C, 0x38, 0x30, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x49, 0x4C, 0x50, 0xCC, 0x07, 0x5A, 0x0E, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x5B, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x35, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x1D, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x06, 0x31, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0D, 0x28, 0x31, 0x32, 0x35, 0x35, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x03, 0x31, 0x32, 0x35, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x31, 0x32, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x32, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x31, 0x32, 0x31, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x32, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1D, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x03, 0x2A, 0x24, 0x31, 0x1A, 0x07, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x2E, 0x12, 0x16, 0x31, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xCA, 0x01, 0x1B, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x32, 0x32, 0x35, 0x30, 0x0A, 0xC2, 0x03, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x09, 0x31, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x36, 0x32, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x23, 0x12, 0x0D, 0x37, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x32, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x39, 0x32, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x38, 0x31, 0x36, 0x32, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x38, 0x31, 0x36, 0x32, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x31, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x32, 0x32, 0x39, 0x39, 0x7C, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x36, 0x32, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x36, 0x32, 0x34, 0x37, 0x38, 0x39, 0x30, 0x32, 0x3C, 0x12, 0x26, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x5B, 0x34, 0x39, 0x5D, 0x30, 0x36, 0x7C, 0x35, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x30, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x34, 0x35, 0x36, 0x32, 0x34, 0x37, 0x38, 0x39, 0x30, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x49, 0x4D, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x5E, 0x12, 0x48, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x31, 0x36, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x5B, 0x34, 0x39, 0x5D, 0x30, 0x36, 0x7C, 0x35, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x7C, 0x32, 0x32, 0x39, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x35, 0x35, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0xF6, 0x17, 0x0A, 0x23, 0x12, 0x17, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0xC0, 0x08, 0x12, 0xA7, 0x08, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x30, 0x29, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x35, 0x39, 0x5D, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x34, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x31, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x30, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x31, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x36, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x39, 0x5D, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x5D, 0x7C, 0x37, 0x33, 0x7C, 0x38, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x5D, 0x5B, 0x31, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x95, 0x03, 0x12, 0xFE, 0x02, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x37, 0x5B, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x31, 0x5B, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x39, 0x5D, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x38, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x34, 0x37, 0x5D, 0x39, 0x7C, 0x35, 0x30, 0x7C, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x7C, 0x31, 0x32, 0x7C, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x30, 0x7C, 0x39, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x5D, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x34, 0x7C, 0x32, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x34, 0x35, 0x38, 0x5D, 0x7C, 0x35, 0x32, 0x7C, 0x36, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x35, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x30, 0x12, 0x18, 0x31, 0x28, 0x3F, 0x3A, 0x36, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x4E, 0x50, 0x5B, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0xF6, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x5A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x1A, 0x70, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x30, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x31, 0x31, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x30, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x40, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x63, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x39, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x57, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2D, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x44, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x53, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x34, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x31, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x21, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x30, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x86, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x31, 0x7C, 0x38, 0x38, 0x29, 0x1A, 0x31, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x31, 0x7C, 0x38, 0x38, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x56, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x36, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x14, 0x28, 0x31, 0x36, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x36, 0x30, 0x1A, 0x04, 0x31, 0x36, 0x30, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x0F, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x31, 0x38, 0x30, 0x1A, 0x04, 0x31, 0x38, 0x30, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3C, 0x0A, 0x19, 0x28, 0x31, 0x38, 0x5B, 0x30, 0x36, 0x5D, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x31, 0x38, 0x5B, 0x30, 0x36, 0x5D, 0x1A, 0x07, 0x31, 0x38, 0x5B, 0x30, 0x36, 0x5D, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x23, 0x12, 0x0C, 0x31, 0x38, 0x36, 0x30, 0x33, 0x34, 0x35, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x36, 0x30, 0x33, 0x34, 0x35, 0x31, 0x32, 0x33, 0x34, 0x0A, 0xC3, 0x01, 0x0A, 0x0F, 0x12, 0x06, 0x33, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x19, 0x12, 0x07, 0x33, 0x37, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x37, 0x30, 0x39, 0x31, 0x30, 0x30, 0x1A, 0x19, 0x12, 0x07, 0x33, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x4F, 0x50, 0xF6, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFF, 0x02, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4B, 0x12, 0x36, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x21, 0x12, 0x0B, 0x37, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x51, 0x50, 0xC4, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x37, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAA, 0x06, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x31, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xBA, 0x03, 0x12, 0xA1, 0x03, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x7C, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x31, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x34, 0x34, 0x31, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x34, 0x7C, 0x34, 0x31, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x35, 0x32, 0x29, 0x7C, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x32, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x32, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x5B, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x2C, 0x12, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0C, 0x39, 0x39, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x39, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x49, 0x52, 0x50, 0x62, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x25, 0x12, 0x0F, 0x39, 0x34, 0x33, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x34, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1F, 0x12, 0x09, 0x39, 0x39, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x39, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A, 0xDA, 0x04, 0x0A, 0x1D, 0x12, 0x12, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0xB3, 0x01, 0x12, 0xA0, 0x01, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x37, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x97, 0x01, 0x12, 0x82, 0x01, 0x33, 0x38, 0x5B, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x35, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x36, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x19, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x21, 0x12, 0x0F, 0x34, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x39, 0x33, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x49, 0x53, 0x50, 0xE2, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x16, 0x28, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBE, 0x06, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x30, 0x31, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x53, 0x12, 0x3B, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x29, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x08, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x29, 0x12, 0x13, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x29, 0x12, 0x13, 0x38, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x25, 0x12, 0x0D, 0x38, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x34, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x22, 0x12, 0x0A, 0x31, 0x37, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x54, 0x50, 0x27, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2E, 0x0A, 0x17, 0x28, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x10, 0x28, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x18, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x10, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x35, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x11, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x35, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x16, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x11, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x12, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x09, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x33, 0x7C, 0x39, 0x29, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xF5, 0x04, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x09, 0x31, 0x35, 0x33, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x35, 0x33, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x36, 0x12, 0x20, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x30, 0x39, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x39, 0x37, 0x29, 0x7C, 0x38, 0x32, 0x39, 0x7C, 0x39, 0x33, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x37, 0x39, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x31, 0x12, 0x1B, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x38, 0x39, 0x30, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x37, 0x33, 0x35, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x44, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x31, 0x32, 0x30, 0x36, 0x7C, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x36, 0x5B, 0x35, 0x39, 0x5D, 0x7C, 0x31, 0x38, 0x31, 0x30, 0x7C, 0x37, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x35, 0x35, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x38, 0x31, 0x30, 0x35, 0x36, 0x37, 0x38, 0x32, 0x4E, 0x12, 0x38, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x39, 0x29, 0x7C, 0x37, 0x30, 0x33, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x31, 0x7C, 0x38, 0x30, 0x30, 0x29, 0x29, 0x7C, 0x37, 0x30, 0x30, 0x30, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x34, 0x34, 0x37, 0x30, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x21, 0x12, 0x0B, 0x37, 0x30, 0x31, 0x35, 0x31, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x35, 0x31, 0x31, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4A, 0x45, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x51, 0x12, 0x3B, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x7C, 0x12, 0x66, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x38, 0x39, 0x30, 0x31, 0x29, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x39, 0x29, 0x7C, 0x37, 0x30, 0x33, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x31, 0x7C, 0x38, 0x30, 0x30, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x30, 0x32, 0x7C, 0x31, 0x32, 0x30, 0x36, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x35, 0x35, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0xF7, 0x03, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x8C, 0x01, 0x12, 0x6D, 0x38, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x36, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x37, 0x36, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x72, 0x12, 0x5C, 0x38, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x39, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x37, 0x36, 0x32, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4A, 0x4D, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x38, 0x37, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE0, 0x03, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x25, 0x12, 0x10, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x2D, 0x12, 0x19, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1B, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x1B, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4A, 0x4F, 0x50, 0xC2, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x42, 0x0A, 0x1F, 0x28, 0x37, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x08, 0x37, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x37, 0x30, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x26, 0x12, 0x13, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x0A, 0x95, 0x23, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x93, 0x02, 0x12, 0xFE, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x21, 0x12, 0x0B, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x31, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1B, 0x12, 0x07, 0x36, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4A, 0x50, 0x50, 0x51, 0x5A, 0x03, 0x30, 0x31, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x39, 0x39, 0x29, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xF6, 0x03, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x5A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x7C, 0x33, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x36, 0x7C, 0x39, 0x37, 0x29, 0x7C, 0x34, 0x39, 0x39, 0x7C, 0x37, 0x34, 0x36, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x33, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x31, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x36, 0x5D, 0x29, 0x1A, 0xAC, 0x01, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x37, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x32, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x37, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x34, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x36, 0x7C, 0x39, 0x37, 0x29, 0x39, 0x7C, 0x34, 0x39, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x34, 0x36, 0x38, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x36, 0x29, 0x7C, 0x36, 0x33, 0x36, 0x7C, 0x34, 0x37, 0x37, 0x7C, 0x35, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x36, 0x7C, 0x38, 0x30, 0x32, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x39, 0x29, 0x29, 0x1A, 0xC3, 0x01, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x37, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x32, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x37, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x34, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x36, 0x39, 0x7C, 0x39, 0x37, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x39, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x34, 0x36, 0x38, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x36, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x33, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x37, 0x7C, 0x35, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x36, 0x7C, 0x38, 0x30, 0x32, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x39, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xFB, 0x14, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0xA7, 0x03, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x33, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x29, 0x1A, 0x9E, 0x05, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x30, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x32, 0x2D, 0x35, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x1A, 0xFD, 0x05, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x30, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x1A, 0x85, 0x06, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x30, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x30, 0x29, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xE4, 0x03, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x77, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x35, 0x5B, 0x35, 0x2D, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x29, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x33, 0x29, 0x1A, 0x9A, 0x01, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x31, 0x37, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x33, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x1A, 0xA3, 0x01, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x39, 0x39, 0x29, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x31, 0x37, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x34, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x23, 0x32, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x34, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x37, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x39, 0x29, 0x7C, 0x38, 0x32, 0x7C, 0x39, 0x39, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x40, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x19, 0x33, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x03, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x38, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x3D, 0x12, 0x29, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x28, 0x12, 0x11, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x27, 0x12, 0x10, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x45, 0x50, 0xFE, 0x01, 0x5A, 0x03, 0x30, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA1, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x35, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0xEA, 0x01, 0x12, 0xD3, 0x01, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x32, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x35, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x35, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x39, 0x7C, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x35, 0x12, 0x21, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x47, 0x50, 0xE4, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x36, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x33, 0x31, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCB, 0x03, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x45, 0x12, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x4A, 0x12, 0x37, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x34, 0x39, 0x5D, 0x29, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x2C, 0x12, 0x16, 0x31, 0x38, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x2C, 0x12, 0x16, 0x31, 0x39, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x48, 0x50, 0xD7, 0x06, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x31, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD9, 0x01, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x12, 0x2A, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x30, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x33, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x19, 0x12, 0x09, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x49, 0x50, 0xAE, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x14, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x02, 0x24, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE6, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x2F, 0x12, 0x1D, 0x37, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1C, 0x12, 0x0A, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x4D, 0x50, 0x8D, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x80, 0x03, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x44, 0x12, 0x25, 0x38, 0x36, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x33, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x30, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x36, 0x39, 0x32, 0x33, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x44, 0x12, 0x2E, 0x38, 0x36, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x36, 0x39, 0x35, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x4E, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x38, 0x36, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x50, 0x50, 0xD2, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCA, 0x0B, 0x0A, 0x20, 0x12, 0x14, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4C, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x10, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0C, 0x36, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1D, 0x12, 0x07, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4B, 0x52, 0x50, 0x52, 0x5A, 0x18, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x15, 0x30, 0x28, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x9A, 0x01, 0x77, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x1A, 0x25, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x39, 0x7C, 0x38, 0x29, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x9F, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x3B, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x37, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x04, 0x31, 0x33, 0x31, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x3F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x09, 0x31, 0x33, 0x31, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x3D, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x02, 0x33, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x73, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x1A, 0x31, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x8F, 0x01, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x1A, 0x49, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x30, 0x0A, 0x0D, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0A, 0x32, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x4D, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x1A, 0x17, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x6C, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x15, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x34, 0x36, 0x37, 0x38, 0x5D, 0x29, 0x1A, 0x2F, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x34, 0x34, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x47, 0x12, 0x34, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x34, 0x34, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x35, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x0A, 0x95, 0x03, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x60, 0x12, 0x4B, 0x28, 0x3F, 0x3A, 0x31, 0x38, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x6D, 0x12, 0x5A, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x36, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x57, 0x50, 0xC5, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x10, 0x28, 0x35, 0x5B, 0x30, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x35, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE4, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x81, 0x01, 0x12, 0x62, 0x33, 0x34, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x34, 0x34, 0x34, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x33, 0x38, 0x7C, 0x34, 0x30, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x35, 0x7C, 0x34, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x33, 0x34, 0x35, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x5D, 0x12, 0x47, 0x33, 0x34, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x32, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x34, 0x35, 0x33, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x2F, 0x12, 0x19, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x34, 0x35, 0x39, 0x37, 0x36, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x59, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x33, 0x34, 0x35, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x90, 0x06, 0x0A, 0x20, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x30, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0xE6, 0x03, 0x12, 0xCF, 0x03, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x33, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x37, 0x32, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x29, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x36, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x39, 0x5D, 0x7C, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x30, 0x7C, 0x35, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x29, 0x7C, 0x33, 0x36, 0x32, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x46, 0x12, 0x30, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x37, 0x31, 0x30, 0x30, 0x30, 0x39, 0x39, 0x39, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x08, 0x37, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x35, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x4B, 0x5A, 0x50, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x1E, 0x12, 0x08, 0x37, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x35, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD0, 0x02, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x28, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x31, 0x7C, 0x35, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x31, 0x32, 0x38, 0x36, 0x32, 0x1A, 0x36, 0x12, 0x20, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x39, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x30, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x41, 0x50, 0xD8, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x32, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x32, 0x31, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB6, 0x03, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x45, 0x12, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x33, 0x12, 0x1E, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1D, 0x12, 0x0A, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1D, 0x12, 0x0A, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x42, 0x50, 0xC1, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x48, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x21, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x44, 0x0A, 0x17, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x18, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAC, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x50, 0x12, 0x31, 0x37, 0x35, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x34, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x7C, 0x36, 0x33, 0x38, 0x7C, 0x37, 0x35, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x35, 0x38, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x63, 0x12, 0x4D, 0x37, 0x35, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x38, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x38, 0x34, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x38, 0x34, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x35, 0x38, 0x32, 0x38, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x43, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x37, 0x35, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAE, 0x05, 0x0A, 0x29, 0x12, 0x1E, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x56, 0x12, 0x44, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x33, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x36, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x37, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x6D, 0x12, 0x57, 0x36, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x35, 0x36, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x3D, 0x12, 0x29, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x32, 0x32, 0x32, 0x32, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x4F, 0x12, 0x3B, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x32, 0x32, 0x32, 0x32, 0x3A, 0x1A, 0x12, 0x08, 0x37, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x49, 0x50, 0xA7, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x35, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x37, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x13, 0x28, 0x36, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1E, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD3, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x52, 0x12, 0x3C, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x38, 0x39, 0x5D, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x21, 0x12, 0x0D, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x4B, 0x50, 0x5E, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD0, 0x02, 0x0A, 0x21, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x34, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x34, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x52, 0x50, 0xE7, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE3, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x20, 0x12, 0x0D, 0x38, 0x30, 0x30, 0x5B, 0x32, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x53, 0x50, 0x8A, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD5, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2F, 0x12, 0x1C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x20, 0x12, 0x0D, 0x39, 0x30, 0x5B, 0x30, 0x32, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x54, 0x50, 0xF2, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x4C, 0x0A, 0x1D, 0x28, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x16, 0x33, 0x37, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5D, 0x0A, 0x1C, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2B, 0x33, 0x5B, 0x31, 0x34, 0x38, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x38, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x15, 0x28, 0x35, 0x29, 0x28, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x35, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x0A, 0x0A, 0x3F, 0x12, 0x33, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0xFD, 0x02, 0x12, 0xE6, 0x02, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x36, 0x5D, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x37, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x30, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x08, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x23, 0x12, 0x0F, 0x36, 0x5B, 0x32, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x32, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1E, 0x12, 0x0B, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x1A, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1E, 0x12, 0x09, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x4A, 0x02, 0x4C, 0x55, 0x50, 0xE0, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x30, 0x28, 0x31, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x29, 0x9A, 0x01, 0x45, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x22, 0x5B, 0x32, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x4F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x22, 0x5B, 0x32, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x4B, 0x0A, 0x1E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x39, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x55, 0x0A, 0x25, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x6D, 0x0A, 0x1E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x39, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x56, 0x50, 0xF3, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x28, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x80, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x3B, 0x12, 0x25, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x0B, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x59, 0x50, 0xDA, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x12, 0x28, 0x5B, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x90, 0x05, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x9E, 0x01, 0x12, 0x89, 0x01, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x29, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x39, 0x12, 0x25, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x33, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1B, 0x12, 0x07, 0x38, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x41, 0x50, 0xD4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x12, 0x28, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x16, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x64, 0x0A, 0x12, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x18, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x32, 0x1A, 0x26, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x7C, 0x39, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x30, 0x29, 0x29, 0x7C, 0x38, 0x39, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x0F, 0x28, 0x35, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0A, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x33, 0x38, 0x29, 0x1A, 0x0E, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x33, 0x38, 0x29, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x0E, 0x28, 0x38, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0F, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8E, 0x03, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x21, 0x12, 0x0E, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x23, 0x12, 0x0D, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x22, 0x12, 0x0F, 0x28, 0x3F, 0x3A, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x43, 0x50, 0xF9, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x1F, 0x28, 0x36, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x0F, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEC, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x35, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x76, 0x12, 0x61, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x3C, 0x12, 0x29, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x35, 0x30, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1B, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x44, 0x50, 0xF5, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x32, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x1B, 0x28, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x25, 0x0A, 0x0F, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x73, 0x12, 0x5E, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x4D, 0x12, 0x38, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x32, 0x5C, 0x64, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x36, 0x37, 0x36, 0x32, 0x32, 0x39, 0x30, 0x31, 0x22, 0x1F, 0x12, 0x0C, 0x38, 0x30, 0x30, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x38, 0x30, 0x30, 0x30, 0x32, 0x2A, 0x35, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x38, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x34, 0x35, 0x31, 0x35, 0x31, 0x35, 0x31, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0F, 0x37, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x38, 0x31, 0x30, 0x38, 0x37, 0x38, 0x30, 0x4A, 0x02, 0x4D, 0x45, 0x50, 0xFE, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x61, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x10, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x37, 0x38, 0x39, 0x5D, 0x1A, 0x25, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x15, 0x28, 0x36, 0x37, 0x29, 0x28, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x36, 0x37, 0x39, 0x1A, 0x08, 0x36, 0x37, 0x39, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1A, 0x12, 0x07, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x37, 0x32, 0x37, 0x33, 0x30, 0x31, 0x32, 0x0A, 0xBD, 0x02, 0x0A, 0x14, 0x12, 0x09, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x69, 0x12, 0x53, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x32, 0x31, 0x30, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x20, 0x12, 0x0C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x47, 0x50, 0x85, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x35, 0x12, 0x21, 0x35, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x30, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x34, 0x12, 0x20, 0x36, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x46, 0x50, 0xCE, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6E, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x48, 0x50, 0xB4, 0x05, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8F, 0x04, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x87, 0x01, 0x12, 0x72, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x21, 0x12, 0x0E, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1F, 0x12, 0x0C, 0x35, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x2B, 0x12, 0x18, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4B, 0x50, 0x85, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1D, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x04, 0x5B, 0x35, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEB, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x53, 0x12, 0x40, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x34, 0x34, 0x32, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x50, 0x12, 0x3D, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4C, 0x50, 0xDF, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x20, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x84, 0x04, 0x0A, 0x22, 0x12, 0x17, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x4C, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x31, 0x33, 0x33, 0x33, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2C, 0x12, 0x17, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4D, 0x50, 0x5F, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x13, 0x28, 0x31, 0x29, 0x28, 0x33, 0x29, 0x28, 0x33, 0x33, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x31, 0x33, 0x33, 0x1A, 0x04, 0x31, 0x33, 0x33, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1E, 0x0A, 0x0D, 0x28, 0x39, 0x34, 0x34, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x02, 0x39, 0x34, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x18, 0x28, 0x39, 0x29, 0x28, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x39, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF2, 0x04, 0x0A, 0x23, 0x12, 0x17, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x7A, 0x12, 0x64, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2A, 0x12, 0x17, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x37, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x4D, 0x4E, 0x50, 0xD0, 0x07, 0x5A, 0x03, 0x30, 0x30, 0x31, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x16, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x32, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x12, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x32, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0A, 0x5B, 0x31, 0x32, 0x5D, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x49, 0x0A, 0x12, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x1A, 0x13, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x25, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4F, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x1A, 0x17, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE9, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x32, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x38, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1D, 0x12, 0x0A, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4F, 0x50, 0xD5, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x13, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB6, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x5D, 0x12, 0x3E, 0x36, 0x37, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x35, 0x36, 0x29, 0x7C, 0x33, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x38, 0x5D, 0x33, 0x7C, 0x35, 0x33, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x34, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x5D, 0x12, 0x3E, 0x36, 0x37, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x35, 0x36, 0x29, 0x7C, 0x33, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x38, 0x5D, 0x33, 0x7C, 0x35, 0x33, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x34, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x50, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x37, 0x30, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x51, 0x50, 0xD4, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCC, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x33, 0x12, 0x20, 0x32, 0x35, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x33, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x34, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x59, 0x12, 0x46, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x37, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x52, 0x50, 0xDE, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x1F, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC4, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x2A, 0x12, 0x0B, 0x36, 0x36, 0x34, 0x34, 0x39, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x36, 0x34, 0x34, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x21, 0x12, 0x0B, 0x36, 0x36, 0x34, 0x34, 0x39, 0x32, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x36, 0x34, 0x34, 0x39, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x36, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF8, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x3C, 0x12, 0x29, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x59, 0x12, 0x46, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x30, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x39, 0x36, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x38, 0x39, 0x7C, 0x39, 0x37, 0x29, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x36, 0x39, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x41, 0x12, 0x2E, 0x35, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x29, 0x7C, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x54, 0x50, 0xE4, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x1C, 0x12, 0x09, 0x37, 0x31, 0x31, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x85, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x68, 0x12, 0x56, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x4A, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x37, 0x5B, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1E, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x19, 0x12, 0x07, 0x33, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x55, 0x50, 0xE6, 0x01, 0x5A, 0x0E, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x30, 0x7C, 0x33, 0x33, 0x29, 0x8A, 0x01, 0x03, 0x30, 0x32, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x13, 0x28, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9A, 0x03, 0x0A, 0x29, 0x12, 0x1D, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4D, 0x12, 0x3B, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x30, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x28, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x56, 0x50, 0xC0, 0x07, 0x5A, 0x09, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x39, 0x29, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x17, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x39, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x1A, 0x12, 0x08, 0x37, 0x38, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBF, 0x03, 0x0A, 0x33, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x2B, 0x12, 0x17, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x3B, 0x12, 0x25, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x38, 0x5C, 0x64, 0x29, 0x3F, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x39, 0x5C, 0x64, 0x29, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x57, 0x50, 0x89, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9D, 0x0D, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0xC1, 0x03, 0x12, 0xA8, 0x03, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0xC5, 0x03, 0x12, 0xAD, 0x03, 0x31, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x58, 0x50, 0x34, 0x5A, 0x05, 0x30, 0x5B, 0x30, 0x39, 0x5D, 0x62, 0x02, 0x30, 0x31, 0x7A, 0x14, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x30, 0x34, 0x5B, 0x34, 0x35, 0x5D, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x29, 0x82, 0x01, 0x03, 0x31, 0x24, 0x31, 0x9A, 0x01, 0x36, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x55, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x18, 0x31, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5B, 0x0A, 0x16, 0x31, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x2F, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x4E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x3A, 0x0A, 0x1A, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x58, 0x0A, 0x18, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x2D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBD, 0x04, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x35, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x22, 0x12, 0x0E, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x22, 0x12, 0x0C, 0x31, 0x5B, 0x33, 0x38, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x09, 0x31, 0x36, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1F, 0x12, 0x09, 0x31, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1E, 0x12, 0x08, 0x31, 0x35, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x35, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x4D, 0x59, 0x50, 0x3C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x33, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x10, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1B, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x08, 0x31, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x13, 0x28, 0x31, 0x35, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x31, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC3, 0x02, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x38, 0x12, 0x25, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x39, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1E, 0x12, 0x0A, 0x38, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x5A, 0x50, 0x82, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x14, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x81, 0x06, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0xF9, 0x02, 0x12, 0xE2, 0x02, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x33, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x35, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x34, 0x7C, 0x36, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x3F, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x35, 0x7C, 0x36, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x38, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x3F, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x26, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x36, 0x30, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1D, 0x12, 0x09, 0x38, 0x37, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x08, 0x38, 0x38, 0x36, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x4A, 0x02, 0x4E, 0x41, 0x50, 0x88, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2E, 0x0A, 0x13, 0x28, 0x38, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x36, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x38, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x38, 0x37, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x37, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x43, 0x50, 0xAF, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x93, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x6F, 0x12, 0x5C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x20, 0x12, 0x0D, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1A, 0x12, 0x07, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x45, 0x50, 0xE3, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x1E, 0x28, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x30, 0x39, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x12, 0x28, 0x30, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x30, 0x38, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x86, 0x02, 0x0A, 0x14, 0x12, 0x09, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x12, 0x35, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x31, 0x37, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x39, 0x29, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x32, 0x06, 0x31, 0x30, 0x36, 0x36, 0x30, 0x39, 0x1A, 0x1A, 0x12, 0x07, 0x33, 0x38, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x38, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x46, 0x50, 0xA0, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1E, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x82, 0x06, 0x0A, 0x26, 0x12, 0x1A, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x34, 0x7D, 0x12, 0x96, 0x01, 0x12, 0x80, 0x01, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x7C, 0x34, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x4A, 0x12, 0x34, 0x28, 0x3F, 0x3A, 0x37, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x25, 0x12, 0x0B, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x0B, 0x38, 0x30, 0x30, 0x31, 0x37, 0x35, 0x39, 0x31, 0x37, 0x35, 0x39, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x24, 0x12, 0x0B, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x47, 0x50, 0xEA, 0x01, 0x5A, 0x03, 0x30, 0x30, 0x39, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4D, 0x0A, 0x19, 0x28, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1F, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1B, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x37, 0x30, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x37, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x49, 0x50, 0xF9, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAF, 0x04, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4F, 0x12, 0x3B, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x34, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x20, 0x12, 0x0C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x23, 0x12, 0x0E, 0x39, 0x30, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x10, 0x12, 0x07, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x4A, 0x02, 0x4E, 0x4C, 0x50, 0x1F, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x5E, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x30, 0x31, 0x5B, 0x30, 0x33, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x7C, 0x38, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x56, 0x0A, 0x1A, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x27, 0x31, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x35, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1D, 0x0A, 0x0A, 0x28, 0x36, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x12, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x38, 0x30, 0x7C, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8D, 0x04, 0x0A, 0x24, 0x12, 0x11, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x47, 0x12, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1E, 0x12, 0x0B, 0x38, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x2D, 0x12, 0x1A, 0x38, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x1B, 0x12, 0x08, 0x38, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x4F, 0x50, 0x2F, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x1A, 0x28, 0x5B, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3C, 0x0A, 0x20, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x42, 0x12, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x29, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x05, 0x30, 0x31, 0x32, 0x33, 0x34, 0xD0, 0x01, 0x01, 0x0A, 0xBF, 0x03, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x38, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x6C, 0x12, 0x57, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x21, 0x12, 0x0B, 0x39, 0x38, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x38, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x50, 0x50, 0xD1, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x31, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x13, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x16, 0x28, 0x39, 0x38, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x39, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD5, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x22, 0x12, 0x10, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x34, 0x7C, 0x38, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1E, 0x12, 0x0C, 0x35, 0x35, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x52, 0x50, 0xA2, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA8, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x12, 0x18, 0x12, 0x09, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x34, 0x30, 0x30, 0x32, 0x1A, 0x19, 0x12, 0x0A, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x55, 0x50, 0xAB, 0x05, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC2, 0x05, 0x0A, 0x2A, 0x12, 0x1E, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x4E, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x32, 0x34, 0x30, 0x39, 0x39, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x63, 0x12, 0x4C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x2B, 0x12, 0x14, 0x35, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x09, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x5A, 0x50, 0x40, 0x5A, 0x0A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x36, 0x31, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x39, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x44, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x32, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x32, 0x5B, 0x30, 0x31, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x0E, 0x28, 0x32, 0x34, 0x30, 0x39, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x32, 0x34, 0x30, 0x1A, 0x04, 0x32, 0x34, 0x30, 0x39, 0x1A, 0x05, 0x32, 0x34, 0x30, 0x39, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x21, 0x12, 0x0C, 0x5B, 0x32, 0x38, 0x5D, 0x36, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD7, 0x02, 0x0A, 0x2E, 0x12, 0x23, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1E, 0x12, 0x0B, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x29, 0x12, 0x14, 0x38, 0x30, 0x30, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x7C, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x37, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4F, 0x4D, 0x50, 0xC8, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1C, 0x0A, 0x0C, 0x28, 0x32, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x32, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1F, 0x0A, 0x0F, 0x28, 0x39, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x39, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x35, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x41, 0x50, 0xFB, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x02, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x46, 0x12, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1A, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x45, 0x50, 0x33, 0x5A, 0x14, 0x31, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x39, 0x30, 0x29, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x07, 0x20, 0x41, 0x6E, 0x65, 0x78, 0x6F, 0x20, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x1E, 0x0A, 0x0A, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x10, 0x28, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x16, 0x28, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x46, 0x50, 0xB1, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x83, 0x03, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x55, 0x12, 0x43, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x35, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x33, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x36, 0x38, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x36, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1A, 0x12, 0x08, 0x31, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x31, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1A, 0x12, 0x08, 0x32, 0x37, 0x35, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x37, 0x35, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x50, 0x47, 0x50, 0xA3, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF3, 0x06, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x7C, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x33, 0x7D, 0x12, 0x4D, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x50, 0x12, 0x3A, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x26, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x0C, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x48, 0x50, 0x3F, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0xDD, 0x01, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x46, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x39, 0x7C, 0x34, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x37, 0x36, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x36, 0x34, 0x32, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x36, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x1A, 0x73, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x30, 0x7C, 0x33, 0x39, 0x37, 0x7C, 0x34, 0x36, 0x31, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x35, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x34, 0x7C, 0x35, 0x31, 0x29, 0x7C, 0x33, 0x39, 0x36, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x36, 0x33, 0x29, 0x7C, 0x35, 0x39, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x37, 0x36, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x31, 0x7C, 0x34, 0x34, 0x36, 0x29, 0x7C, 0x36, 0x34, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x36, 0x32, 0x32, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x5D, 0x32, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x29, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x56, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x15, 0x33, 0x34, 0x36, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x39, 0x5B, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x38, 0x38, 0x33, 0x1A, 0x1D, 0x33, 0x34, 0x36, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x39, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x30, 0x7C, 0x35, 0x36, 0x29, 0x29, 0x7C, 0x38, 0x38, 0x33, 0x34, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x14, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1D, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF3, 0x0C, 0x0A, 0x4C, 0x12, 0x40, 0x31, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x32, 0x5C, 0x64, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x29, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x99, 0x02, 0x12, 0x80, 0x02, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x7C, 0x34, 0x32, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x35, 0x5B, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x30, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x35, 0x38, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x42, 0x12, 0x2C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1B, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1C, 0x12, 0x08, 0x31, 0x32, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x32, 0x30, 0x34, 0x34, 0x34, 0x34, 0x34, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x4B, 0x50, 0x5C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0xDD, 0x01, 0x0A, 0x1A, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x31, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x31, 0x1A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x31, 0x31, 0x1A, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x31, 0x31, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0xD2, 0x01, 0x0A, 0x1A, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x31, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x20, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x27, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x31, 0x1A, 0x28, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x31, 0x31, 0x1A, 0x29, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x31, 0x31, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x5E, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x71, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x20, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x2B, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0F, 0x28, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x35, 0x38, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x11, 0x28, 0x35, 0x38, 0x36, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x35, 0x38, 0x36, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0xEC, 0x01, 0x12, 0xD1, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x30, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x31, 0x31, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0B, 0x32, 0x31, 0x31, 0x31, 0x31, 0x38, 0x32, 0x35, 0x38, 0x38, 0x38, 0x0A, 0x91, 0x04, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x66, 0x12, 0x52, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x34, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1B, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x33, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x50, 0x4C, 0x50, 0x30, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x68, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x37, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x45, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1E, 0x33, 0x39, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x4D, 0x50, 0xFC, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE8, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x34, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x37, 0x7C, 0x39, 0x33, 0x39, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x38, 0x37, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x34, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x37, 0x7C, 0x39, 0x33, 0x39, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x38, 0x37, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x52, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x07, 0x37, 0x38, 0x37, 0x7C, 0x39, 0x33, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDD, 0x03, 0x0A, 0x35, 0x12, 0x29, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x41, 0x12, 0x2C, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x5B, 0x32, 0x33, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x32, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x32, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1E, 0x12, 0x0A, 0x35, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1F, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x21, 0x12, 0x0F, 0x31, 0x28, 0x3F, 0x3A, 0x34, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x32, 0x05, 0x31, 0x39, 0x31, 0x32, 0x33, 0x32, 0x1F, 0x12, 0x09, 0x31, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x53, 0x50, 0xCA, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x17, 0x28, 0x35, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9C, 0x03, 0x0A, 0x16, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x5A, 0x12, 0x46, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x40, 0x12, 0x2C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x26, 0x12, 0x12, 0x34, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1B, 0x12, 0x07, 0x37, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x33, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x50, 0x54, 0x50, 0xDF, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x68, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x57, 0x50, 0xA8, 0x05, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6E, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x59, 0x50, 0xD3, 0x04, 0x5A, 0x03, 0x30, 0x30, 0x32, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA0, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x1C, 0x12, 0x07, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x29, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x51, 0x41, 0x50, 0xCE, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1F, 0x0A, 0x0F, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x13, 0x28, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE2, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1C, 0x12, 0x08, 0x32, 0x36, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x32, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x26, 0x12, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x23, 0x12, 0x0F, 0x38, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x32, 0x12, 0x1E, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x45, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x21, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xBA, 0x01, 0x0B, 0x32, 0x36, 0x32, 0x7C, 0x36, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8D, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x23, 0x12, 0x0F, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x4F, 0x50, 0x28, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x05, 0x20, 0x69, 0x6E, 0x74, 0x20, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x32, 0x33, 0x5D, 0x31, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE8, 0x03, 0x0A, 0x1C, 0x12, 0x10, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x21, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x25, 0x12, 0x10, 0x36, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x07, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1F, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x29, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x34, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x53, 0x50, 0xFD, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x14, 0x28, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0E, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x29, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x53, 0x0A, 0x12, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x2F, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x14, 0x28, 0x36, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x14, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x82, 0x04, 0x0A, 0x15, 0x12, 0x0B, 0x5B, 0x33, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0xB7, 0x01, 0x12, 0xA0, 0x01, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1C, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x55, 0x50, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x44, 0x0A, 0x22, 0x28, 0x5B, 0x33, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x06, 0x38, 0x20, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x06, 0x38, 0x20, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC4, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1B, 0x12, 0x07, 0x32, 0x35, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x32, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x57, 0x50, 0xFA, 0x01, 0x5A, 0x03, 0x30, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x14, 0x28, 0x32, 0x35, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x1A, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x99, 0x04, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x4E, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x30, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x31, 0x31, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x09, 0x39, 0x32, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x39, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x41, 0x50, 0xC6, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x14, 0x28, 0x39, 0x32, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x13, 0x28, 0x35, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x38, 0x31, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x42, 0x50, 0xA5, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBB, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x12, 0xD7, 0x01, 0x12, 0xC5, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x37, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x31, 0x37, 0x31, 0x32, 0x33, 0x1A, 0x4F, 0x12, 0x3E, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x35, 0x31, 0x30, 0x31, 0x32, 0x33, 0x22, 0x1A, 0x12, 0x09, 0x38, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x26, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x36, 0x34, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x34, 0x31, 0x30, 0x31, 0x32, 0x33, 0x4A, 0x02, 0x53, 0x43, 0x50, 0xF8, 0x01, 0x5A, 0x06, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x14, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x36, 0x5D, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF3, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x31, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x2C, 0x12, 0x18, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x33, 0x35, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x20, 0x12, 0x0C, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x44, 0x50, 0xF9, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x11, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xD5, 0x04, 0x12, 0xC0, 0x04, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x21, 0x12, 0x0D, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1F, 0x12, 0x09, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x28, 0x12, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x1B, 0x12, 0x07, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x45, 0x50, 0x2E, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x35, 0x0A, 0x1C, 0x28, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x66, 0x0A, 0x21, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x2D, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x58, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2B, 0x31, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x87, 0x01, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7F, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x41, 0x0A, 0x20, 0x28, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x09, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x32, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x1F, 0x28, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x06, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x30, 0x0A, 0x1C, 0x28, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x2A, 0x00, 0xA2, 0x01, 0x61, 0x0A, 0x21, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x2D, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x53, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2B, 0x31, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x82, 0x01, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x7A, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x3C, 0x0A, 0x20, 0x28, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x09, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x26, 0x0A, 0x14, 0x28, 0x32, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x38, 0x0A, 0x1F, 0x28, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x06, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF1, 0x03, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x29, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x24, 0x12, 0x0A, 0x31, 0x3F, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x53, 0x47, 0x50, 0x41, 0x5A, 0x0B, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x9A, 0x01, 0x2F, 0x0A, 0x14, 0x28, 0x5B, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x14, 0x28, 0x37, 0x30, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x20, 0x12, 0x09, 0x37, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x37, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x0A, 0xC3, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x12, 0x27, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x32, 0x31, 0x35, 0x38, 0x1A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x25, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x35, 0x30, 0x31, 0x32, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x48, 0x50, 0xA2, 0x02, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x04, 0x0A, 0x23, 0x12, 0x18, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x12, 0x41, 0x12, 0x2C, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x31, 0x12, 0x1E, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x09, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x2D, 0x12, 0x18, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x7C, 0x38, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x25, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x35, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x4A, 0x02, 0x53, 0x49, 0x50, 0x82, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x54, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x21, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x41, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x15, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x13, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x30, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x12, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x09, 0x35, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEB, 0x02, 0x0A, 0x25, 0x12, 0x12, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x1A, 0x12, 0x07, 0x37, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1E, 0x12, 0x0B, 0x38, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x2D, 0x12, 0x1A, 0x38, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x1B, 0x12, 0x08, 0x38, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x4A, 0x50, 0x2F, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x42, 0x12, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x29, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x05, 0x30, 0x31, 0x32, 0x33, 0x34, 0xD0, 0x01, 0x01, 0x0A, 0xEC, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1E, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x36, 0x12, 0x22, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x2A, 0x12, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1F, 0x12, 0x0B, 0x38, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x2B, 0x12, 0x17, 0x36, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x53, 0x4B, 0x50, 0xA5, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x18, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x1E, 0x28, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x1A, 0x28, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8D, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x2A, 0x12, 0x15, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x3F, 0x12, 0x2A, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x4C, 0x50, 0xE8, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x04, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x30, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x32, 0x12, 0x1A, 0x30, 0x35, 0x34, 0x39, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x31, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x30, 0x35, 0x34, 0x39, 0x38, 0x38, 0x36, 0x33, 0x37, 0x37, 0x1A, 0x1D, 0x12, 0x0A, 0x36, 0x5B, 0x31, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x36, 0x36, 0x36, 0x31, 0x32, 0x31, 0x32, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1E, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x35, 0x5B, 0x31, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x4A, 0x02, 0x53, 0x4D, 0x50, 0xFA, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x14, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x34, 0x39, 0x29, 0x3F, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x82, 0x01, 0x06, 0x30, 0x35, 0x34, 0x39, 0x24, 0x31, 0x9A, 0x01, 0x36, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1D, 0x0A, 0x0D, 0x28, 0x30, 0x35, 0x34, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1C, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x07, 0x30, 0x35, 0x34, 0x39, 0x20, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x34, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x1D, 0x0A, 0x0D, 0x28, 0x30, 0x35, 0x34, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x07, 0x28, 0x24, 0x31, 0x29, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x1C, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x09, 0x28, 0x30, 0x35, 0x34, 0x39, 0x29, 0x20, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x9A, 0x03, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x34, 0x12, 0x20, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x30, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0xA7, 0x01, 0x12, 0x92, 0x01, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x30, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0A, 0x33, 0x33, 0x33, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x33, 0x33, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x53, 0x4E, 0x50, 0xDD, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x97, 0x02, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x2A, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x35, 0x32, 0x32, 0x30, 0x31, 0x30, 0x1A, 0x24, 0x12, 0x11, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x31, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x37, 0x39, 0x32, 0x30, 0x32, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x4F, 0x50, 0xFC, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0F, 0x28, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0F, 0x28, 0x5B, 0x31, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x31, 0x35, 0x7C, 0x39, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x52, 0x50, 0xD5, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC9, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x19, 0x12, 0x07, 0x32, 0x32, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x0A, 0x39, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x54, 0x50, 0xEF, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x03, 0x0A, 0x2F, 0x12, 0x1D, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x1A, 0x0E, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x32, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x2E, 0x12, 0x12, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x2E, 0x12, 0x12, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x56, 0x50, 0xF7, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x02, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x56, 0x12, 0x40, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x3F, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3C, 0x12, 0x28, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x59, 0x50, 0xC3, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x39, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF0, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x8A, 0x01, 0x12, 0x77, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x37, 0x7C, 0x32, 0x5B, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x37, 0x38, 0x5D, 0x33, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x5B, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x36, 0x37, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1E, 0x12, 0x0B, 0x37, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x5A, 0x50, 0x8C, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x1C, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xA1, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x3A, 0x12, 0x1B, 0x36, 0x34, 0x39, 0x28, 0x3F, 0x3A, 0x37, 0x31, 0x32, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x35, 0x30, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x34, 0x39, 0x37, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x52, 0x12, 0x3C, 0x36, 0x34, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x34, 0x39, 0x32, 0x33, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x24, 0x12, 0x0E, 0x36, 0x34, 0x39, 0x37, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x34, 0x39, 0x37, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x54, 0x43, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x34, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA4, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x32, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x38, 0x39, 0x5D, 0x30, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x40, 0x12, 0x2D, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x44, 0x50, 0xEB, 0x01, 0x5A, 0x05, 0x30, 0x30, 0x7C, 0x31, 0x36, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x46, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x33, 0x12, 0x21, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x32, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x47, 0x50, 0xE4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xDB, 0x03, 0x0A, 0x1F, 0x12, 0x13, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x3F, 0x12, 0x2C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1A, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x36, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x54, 0x48, 0x50, 0x42, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAA, 0x04, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x33, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x12, 0x56, 0x12, 0x40, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x37, 0x32, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x7C, 0x37, 0x34, 0x7C, 0x38, 0x37, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x37, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2C, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x35, 0x30, 0x35, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4A, 0x50, 0xE0, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x3E, 0x0A, 0x1A, 0x28, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x33, 0x34, 0x5D, 0x37, 0x7C, 0x39, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x47, 0x0A, 0x17, 0x28, 0x5B, 0x34, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x18, 0x34, 0x5B, 0x34, 0x38, 0x5D, 0x7C, 0x35, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x39, 0x7C, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x43, 0x0A, 0x13, 0x28, 0x33, 0x33, 0x31, 0x37, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x33, 0x33, 0x31, 0x1A, 0x04, 0x33, 0x33, 0x31, 0x37, 0x1A, 0x05, 0x33, 0x33, 0x31, 0x37, 0x30, 0x1A, 0x06, 0x33, 0x33, 0x31, 0x37, 0x30, 0x30, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x52, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x1A, 0x20, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4B, 0x50, 0xB2, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x97, 0x02, 0x0A, 0x16, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x2F, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1D, 0x12, 0x0B, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x19, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x19, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x19, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4C, 0x50, 0x9E, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x81, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2C, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x5C, 0x64, 0x7C, 0x32, 0x34, 0x33, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x32, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1E, 0x12, 0x0B, 0x36, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4D, 0x50, 0xE1, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x35, 0x0A, 0x1E, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFD, 0x01, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x29, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x30, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1E, 0x12, 0x0B, 0x38, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4E, 0x50, 0xD8, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4F, 0x50, 0xA4, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF2, 0x04, 0x0A, 0x21, 0x12, 0x15, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x34, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x99, 0x01, 0x12, 0x82, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x5D, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x5D, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x32, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x46, 0x12, 0x30, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x52, 0x50, 0x5A, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x48, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x13, 0x28, 0x34, 0x34, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x34, 0x34, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x1E, 0x12, 0x08, 0x35, 0x31, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x26, 0x12, 0x11, 0x34, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x34, 0x34, 0x34, 0x31, 0x34, 0x34, 0x34, 0x0A, 0xDF, 0x03, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x6D, 0x12, 0x4E, 0x38, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x31, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x32, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x36, 0x38, 0x32, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x7A, 0x12, 0x64, 0x38, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x5C, 0x64, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x36, 0x38, 0x32, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x54, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x38, 0x36, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAE, 0x01, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x12, 0x1C, 0x12, 0x0C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x32, 0x30, 0x31, 0x32, 0x33, 0x1A, 0x18, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x56, 0x50, 0xB0, 0x05, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x21, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1A, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x57, 0x50, 0xF6, 0x06, 0x5A, 0x10, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x39, 0x29, 0x62, 0x01, 0x30, 0x6A, 0x01, 0x23, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x38, 0x30, 0x7C, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC1, 0x03, 0x0A, 0x10, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x21, 0x12, 0x0B, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2A, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1B, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x26, 0x12, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x34, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x54, 0x5A, 0x50, 0xFF, 0x01, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x34, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE4, 0x07, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x3D, 0x12, 0x27, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x31, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x33, 0x39, 0x7C, 0x35, 0x30, 0x7C, 0x36, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x41, 0x50, 0xFC, 0x02, 0x5A, 0x03, 0x30, 0x7E, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0xA4, 0x01, 0x0A, 0x18, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x36, 0x33, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x36, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x1A, 0x3F, 0x33, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x29, 0x7C, 0x37, 0x5B, 0x33, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xCA, 0x01, 0x0A, 0x1C, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x43, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x32, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x32, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x32, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x7C, 0x39, 0x30, 0x1A, 0x54, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x32, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x32, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x32, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xD2, 0x02, 0x0A, 0x13, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x87, 0x01, 0x33, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x1A, 0xA2, 0x01, 0x33, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x03, 0x0A, 0x10, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x52, 0x12, 0x3C, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x36, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x32, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2D, 0x12, 0x19, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x30, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x21, 0x12, 0x0D, 0x38, 0x30, 0x30, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x47, 0x50, 0x80, 0x02, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x30, 0x35, 0x37, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x41, 0x0A, 0x15, 0x28, 0x5B, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1A, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x30, 0x30, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x0F, 0x28, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x16, 0x33, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0D, 0x28, 0x32, 0x30, 0x32, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x32, 0x30, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8E, 0x0C, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0xD3, 0x04, 0x12, 0xB3, 0x04, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x39, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0xD3, 0x04, 0x12, 0xB3, 0x04, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x39, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x27, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x28, 0x24, 0x31, 0x29, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x23, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x59, 0x50, 0xD6, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x30, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x24, 0x12, 0x0E, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x5A, 0x50, 0xE6, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x34, 0x0A, 0x1E, 0x28, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x38, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC7, 0x01, 0x0A, 0x11, 0x12, 0x07, 0x30, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0x20, 0x12, 0x0A, 0x30, 0x36, 0x36, 0x39, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x30, 0x36, 0x36, 0x39, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x0A, 0x12, 0x03, 0x4E, 0x2F, 0x41, 0x1A, 0x03, 0x4E, 0x2F, 0x41, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x41, 0x50, 0xFB, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x12, 0x28, 0x30, 0x36, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xBA, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x70, 0x12, 0x51, 0x37, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x36, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x35, 0x35, 0x35, 0x7C, 0x36, 0x33, 0x38, 0x7C, 0x37, 0x38, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x38, 0x34, 0x32, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x51, 0x12, 0x3B, 0x37, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x39, 0x33, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x38, 0x34, 0x34, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x43, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x37, 0x38, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x02, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x51, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2D, 0x12, 0x17, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x45, 0x50, 0x3A, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x0A, 0x28, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAB, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x5D, 0x12, 0x3E, 0x32, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x7C, 0x39, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x35, 0x32, 0x7C, 0x36, 0x5B, 0x34, 0x35, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x39, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x38, 0x34, 0x32, 0x32, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x55, 0x12, 0x3F, 0x32, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x33, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x35, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x39, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x38, 0x34, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x47, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x38, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEE, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x39, 0x12, 0x1A, 0x33, 0x34, 0x30, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x33, 0x34, 0x30, 0x36, 0x34, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x39, 0x12, 0x1A, 0x33, 0x34, 0x30, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x33, 0x34, 0x30, 0x36, 0x34, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x49, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x33, 0x34, 0x30, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF2, 0x06, 0x0A, 0x22, 0x12, 0x16, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xAF, 0x01, 0x12, 0x96, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x38, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x5B, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x38, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x36, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x39, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x39, 0x5C, 0x64, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x23, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x4E, 0x50, 0x54, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x14, 0x28, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x34, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5B, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2D, 0x32, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1F, 0x0A, 0x0B, 0x28, 0x38, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x23, 0x0A, 0x0F, 0x28, 0x36, 0x39, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x02, 0x36, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4D, 0x0A, 0x1C, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x35, 0x7C, 0x37, 0x5B, 0x31, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1A, 0x28, 0x39, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x19, 0x28, 0x31, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x55, 0x50, 0xA6, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x57, 0x46, 0x50, 0xA9, 0x05, 0x5A, 0x02, 0x31, 0x39, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC0, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x12, 0x2F, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x34, 0x30, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x32, 0x05, 0x32, 0x32, 0x31, 0x32, 0x33, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x36, 0x30, 0x7C, 0x37, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x06, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x19, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x57, 0x53, 0x50, 0xAD, 0x05, 0x5A, 0x01, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x11, 0x28, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x37, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x37, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEF, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x5C, 0x12, 0x48, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x59, 0x45, 0x50, 0xC7, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x18, 0x28, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD7, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x22, 0x12, 0x0E, 0x32, 0x36, 0x39, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x39, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x08, 0x36, 0x33, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x59, 0x54, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x06, 0x32, 0x36, 0x39, 0x7C, 0x36, 0x33, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB9, 0x03, 0x0A, 0x10, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x44, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x30, 0x12, 0x1C, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0C, 0x38, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x36, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x38, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x5A, 0x41, 0x50, 0x1B, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x38, 0x36, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x36, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x49, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1B, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB3, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x20, 0x12, 0x0C, 0x32, 0x31, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2E, 0x12, 0x1A, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x5A, 0x4D, 0x50, 0x84, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x0F, 0x28, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBB, 0x0B, 0x0A, 0x42, 0x12, 0x36, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x38, 0x7D, 0x7C, 0x36, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x7C, 0x38, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xAB, 0x02, 0x12, 0x95, 0x02, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x38, 0x3F, 0x7C, 0x35, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x3F, 0x7C, 0x31, 0x37, 0x3F, 0x7C, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x38, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x3F, 0x7C, 0x38, 0x29, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x37, 0x3F, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x38, 0x3F, 0x29, 0x7C, 0x38, 0x34, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x35, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x37, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x31, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x39, 0x12, 0x23, 0x38, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x33, 0x30, 0x7C, 0x34, 0x34, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x36, 0x38, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x5A, 0x57, 0x50, 0x87, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x34, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x35, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x31, 0x39, 0x5D, 0x31, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xBA, 0x01, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x93, 0x01, 0x31, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xC2, 0x01, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x93, 0x01, 0x31, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x72, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x4A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x7C, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x7C, 0x31, 0x37, 0x7C, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x39, 0x5D, 0x38, 0x7C, 0x33, 0x37, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7A, 0x0A, 0x1B, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x4A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x7C, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x7C, 0x31, 0x37, 0x7C, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x39, 0x5D, 0x38, 0x7C, 0x33, 0x37, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x14, 0x28, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x35, 0x34, 0x29, 0x38, 0x1A, 0x0C, 0x32, 0x35, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x34, 0x38, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x35, 0x34, 0x29, 0x38, 0x1A, 0x0C, 0x32, 0x35, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x34, 0x38, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0F, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, }; - -int metadata_size() { - return sizeof(metadata_data) / sizeof(metadata_data[0]); -} - -const void* metadata_get() { - return metadata_data; -} diff --git a/third_party/libphonenumber/cpp/src/metadata.h b/third_party/libphonenumber/cpp/src/metadata.h deleted file mode 100644 index 59794e6..0000000 --- a/third_party/libphonenumber/cpp/src/metadata.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef EMBEDDED_DATA_METADATA_H_ -#define EMBEDDED_DATA_METADATA_H_ - -int metadata_size(); -const void* metadata_get(); - -#endif // EMBEDDED_DATA_METADATA_H_ diff --git a/third_party/libphonenumber/cpp/src/phonenumber.cc b/third_party/libphonenumber/cpp/src/phonenumber.cc deleted file mode 100644 index f622e93..0000000 --- a/third_party/libphonenumber/cpp/src/phonenumber.cc +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (C) 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#include "phonemetadata.pb.h" -#include "phonenumber.pb.h" - -namespace i18n { -namespace phonenumbers { - -bool ExactlySameAs(const PhoneNumber& first_number, - const PhoneNumber& second_number) { - if (first_number.has_country_code() != second_number.has_country_code() || - first_number.country_code() != second_number.country_code()) { - return false; - } - if (first_number.has_national_number() != - second_number.has_national_number() || - first_number.national_number() != second_number.national_number()) { - return false; - } - if (first_number.has_extension() != second_number.has_extension() || - first_number.extension() != second_number.extension()) { - return false; - } - if (first_number.has_italian_leading_zero() != - second_number.has_italian_leading_zero() || - first_number.italian_leading_zero() != - second_number.italian_leading_zero()) { - return false; - } - if (first_number.has_raw_input() != second_number.has_raw_input() || - first_number.raw_input() != second_number.raw_input()) { - return false; - } - if (first_number.has_country_code_source() != - second_number.has_country_code_source() || - first_number.country_code_source() != - second_number.country_code_source()) { - return false; - } - if (first_number.has_preferred_domestic_carrier_code() != - second_number.has_preferred_domestic_carrier_code() || - first_number.preferred_domestic_carrier_code() != - second_number.preferred_domestic_carrier_code()) { - return false; - } - return true; -} - -bool ExactlySameAs(const PhoneNumberDesc& first_number_desc, - const PhoneNumberDesc& second_number_desc) { - if (first_number_desc.has_national_number_pattern() != - second_number_desc.has_national_number_pattern() || - first_number_desc.national_number_pattern() != - second_number_desc.national_number_pattern()) { - return false; - } - if (first_number_desc.has_possible_number_pattern() != - second_number_desc.has_possible_number_pattern() || - first_number_desc.possible_number_pattern() != - second_number_desc.possible_number_pattern()) { - return false; - } - if (first_number_desc.has_example_number() != - second_number_desc.has_example_number() || - first_number_desc.example_number() != - second_number_desc.example_number()) { - return false; - } - return true; -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/phonenumber.h b/third_party/libphonenumber/cpp/src/phonenumber.h deleted file mode 100644 index 952ca7c..0000000 --- a/third_party/libphonenumber/cpp/src/phonenumber.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#ifndef I18N_PHONENUMBERS_PHONENUMBER_H_ -#define I18N_PHONENUMBERS_PHONENUMBER_H_ - -// Helper functions dealing with PhoneNumber and PhoneNumberDesc comparisons. - -namespace i18n { -namespace phonenumbers { - -class PhoneNumber; -class PhoneNumberDesc; - -// Compares two phone numbers. -bool ExactlySameAs(const PhoneNumber& first_number, - const PhoneNumber& second_number); - - -// Compares two phone number descriptions. -bool ExactlySameAs(const PhoneNumberDesc& first_number_desc, - const PhoneNumberDesc& second_number_desc); - -} // namespace phonenumbers -} // namespace i18n - -#endif // I18N_PHONENUMBERS_PHONENUMBER_H_ diff --git a/third_party/libphonenumber/cpp/src/phonenumberutil.cc b/third_party/libphonenumber/cpp/src/phonenumberutil.cc deleted file mode 100644 index 75ef374..0000000 --- a/third_party/libphonenumber/cpp/src/phonenumberutil.cc +++ /dev/null @@ -1,2266 +0,0 @@ -// Copyright (C) 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Shaopeng Jia -// Open-sourced by: Philippe Liard - -#include "phonenumberutil.h" - -#include <algorithm> -#include <fstream> -#include <iostream> -#include <map> -#include <sstream> -#include <vector> - -#include <google/protobuf/message_lite.h> -#include <unicode/errorcode.h> -#include <unicode/translit.h> - -#include "base/logging.h" -#include "base/singleton.h" -#include "default_logger.h" -#include "logger_adapter.h" -#include "metadata.h" -#include "phonemetadata.pb.h" -#include "phonenumber.h" -#include "phonenumber.pb.h" -#include "regexp_adapter.h" -#include "stringutil.h" -#include "utf/unicodetext.h" -#include "utf/utf.h" - -namespace i18n { -namespace phonenumbers { - -using std::cerr; -using std::endl; -using std::ifstream; -using std::make_pair; -using std::sort; -using std::stringstream; - -using google::protobuf::RepeatedPtrField; - -namespace { - -scoped_ptr<LoggerAdapter> logger; - -// These objects are created in the function InitializeStaticMapsAndSets. - -// These mappings map a character (key) to a specific digit that should replace -// it for normalization purposes. -scoped_ptr<map<char32, char> > alpha_mappings; -// For performance reasons, amalgamate both into one map. -scoped_ptr<map<char32, char> > all_normalization_mappings; -// Separate map of all symbols that we wish to retain when formatting alpha -// numbers. This includes digits, ascii letters and number grouping symbols such -// as "-" and " ". -scoped_ptr<map<char32, char> > all_plus_number_grouping_symbols; - -// The kPlusSign signifies the international prefix. -const char kPlusSign[] = "+"; - -const char kPlusChars[] = "++"; -scoped_ptr<const reg_exp::RegularExpression> plus_chars_pattern; - -const char kRfc3966ExtnPrefix[] = ";ext="; - -// Pattern that makes it easy to distinguish whether a region has a unique -// international dialing prefix or not. If a region has a unique international -// prefix (e.g. 011 in USA), it will be represented as a string that contains a -// sequence of ASCII digits. If there are multiple available international -// prefixes in a region, they will be represented as a regex string that always -// contains character(s) other than ASCII digits. -// Note this regex also includes tilde, which signals waiting for the tone. -scoped_ptr<const reg_exp::RegularExpression> unique_international_prefix; - -// Digits accepted in phone numbers. -// Both Arabic-Indic and Eastern Arabic-Indic are supported. -const char kValidDigits[] = "0-90-9٠-٩۰-۹"; -// We accept alpha characters in phone numbers, ASCII only. We store lower-case -// here only since our regular expressions are case-insensitive. -const char kValidAlpha[] = "a-z"; -scoped_ptr<const reg_exp::RegularExpression> capturing_digit_pattern; -scoped_ptr<const reg_exp::RegularExpression> capturing_ascii_digits_pattern; - -// Regular expression of acceptable characters that may start a phone number -// for the purposes of parsing. This allows us to strip away meaningless -// prefixes to phone numbers that may be mistakenly given to us. This -// consists of digits, the plus symbol and arabic-indic digits. This does -// not contain alpha characters, although they may be used later in the -// number. It also does not include other punctuation, as this will be -// stripped later during parsing and is of no information value when parsing -// a number. The string starting with this valid character is captured. -// This corresponds to VALID_START_CHAR in the java version. -scoped_ptr<const string> valid_start_char; -scoped_ptr<const reg_exp::RegularExpression> valid_start_char_pattern; - -// Regular expression of characters typically used to start a second phone -// number for the purposes of parsing. This allows us to strip off parts of -// the number that are actually the start of another number, such as for: -// (530) 583-6985 x302/x2303 -> the second extension here makes this actually -// two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove -// the second extension so that the first number is parsed correctly. The string -// preceding this is captured. -// This corresponds to SECOND_NUMBER_START in the java version. -const char kCaptureUpToSecondNumberStart[] = "(.*)[\\\\/] *x"; -scoped_ptr<const reg_exp::RegularExpression> - capture_up_to_second_number_start_pattern; - -// Regular expression of trailing characters that we want to remove. We remove -// all characters that are not alpha or numerical characters. The hash -// character is retained here, as it may signify the previous block was an -// extension. Note the capturing block at the start to capture the rest of the -// number if this was a match. -// This corresponds to UNWANTED_END_CHARS in the java version. -const char kUnwantedEndChar[] = "[^\\p{N}\\p{L}#]"; -scoped_ptr<const reg_exp::RegularExpression> unwanted_end_char_pattern; - -// Regular expression of acceptable punctuation found in phone numbers. This -// excludes punctuation found as a leading character only. This consists of -// dash characters, white space characters, full stops, slashes, square -// brackets, parentheses and tildes. It also includes the letter 'x' as that is -// found as a placeholder for carrier information in some phone numbers. -// Full-width variants are also present. -// To find out the unicode code-point of the characters below in vim, highlight -// the character and type 'ga'. Note that the - is used to express ranges of -// full-width punctuation below, as well as being present in the expression -// itself. In emacs, you can use M-x unicode-what to query information about the -// unicode character. -const char kValidPunctuation[] = - "-x‐-―−ー--/ ()()[].\\[\\]/~⁓∼~"; - -// Regular expression of viable phone numbers. This is location independent. -// Checks we have at least three leading digits, and only valid punctuation, -// alpha characters and digits in the phone number. Does not include extension -// data. The symbol 'x' is allowed here as valid punctuation since it is often -// used as a placeholder for carrier codes, for example in Brazilian phone -// numbers. We also allow multiple plus-signs at the start. -// Corresponds to the following: -// plus_sign*([punctuation]*[digits]){3,}([punctuation]|[digits]|[alpha])* -scoped_ptr<const string> valid_phone_number; - -// Default extension prefix to use when formatting. This will be put in front of -// any extension component of the number, after the main national number is -// formatted. For example, if you wish the default extension formatting to be " -// extn: 3456", then you should specify " extn: " here as the default extension -// prefix. This can be overridden by region-specific preferences. -const char kDefaultExtnPrefix[] = " ext. "; - -// Regexp of all possible ways to write extensions, for use when parsing. This -// will be run as a case-insensitive regexp match. Wide character versions are -// also provided after each ascii version. There are three regular expressions -// here. The first covers RFC 3966 format, where the extension is added using -// ";ext=". The second more generic one starts with optional white space and -// ends with an optional full stop (.), followed by zero or more spaces/tabs and -// then the numbers themselves. The third one covers the special case of -// American numbers where the extension is written with a hash at the end, such -// as "- 503#". -// Note that the only capturing groups should be around the digits that you want -// to capture as part of the extension, or else parsing will fail! -scoped_ptr<const string> known_extn_patterns; -// Regexp of all known extension prefixes used by different regions followed -// by 1 or more valid digits, for use when parsing. -scoped_ptr<const reg_exp::RegularExpression> extn_pattern; - -// We append optionally the extension pattern to the end here, as a valid phone -// number may have an extension prefix appended, followed by 1 or more digits. -scoped_ptr<const reg_exp::RegularExpression> valid_phone_number_pattern; - -// We use this pattern to check if the phone number has at least three letters -// in it - if so, then we treat it as a number where some phone-number digits -// are represented by letters. -scoped_ptr<const reg_exp::RegularExpression> valid_alpha_phone_pattern; - -scoped_ptr<const reg_exp::RegularExpression> first_group_capturing_pattern; - -scoped_ptr<const reg_exp::RegularExpression> carrier_code_pattern; - -void TransformRegularExpressionToRE2Syntax(string* regex) { - DCHECK(regex); - StripString(regex, "$", '\\'); -} - -// Returns a pointer to the description inside the metadata of the appropriate -// type. -const PhoneNumberDesc* GetNumberDescByType( - const PhoneMetadata& metadata, - PhoneNumberUtil::PhoneNumberType type) { - switch (type) { - case PhoneNumberUtil::PREMIUM_RATE: - return &metadata.premium_rate(); - case PhoneNumberUtil::TOLL_FREE: - return &metadata.toll_free(); - case PhoneNumberUtil::MOBILE: - return &metadata.mobile(); - case PhoneNumberUtil::FIXED_LINE: - case PhoneNumberUtil::FIXED_LINE_OR_MOBILE: - return &metadata.fixed_line(); - case PhoneNumberUtil::SHARED_COST: - return &metadata.shared_cost(); - case PhoneNumberUtil::VOIP: - return &metadata.voip(); - case PhoneNumberUtil::PERSONAL_NUMBER: - return &metadata.personal_number(); - case PhoneNumberUtil::PAGER: - return &metadata.pager(); - case PhoneNumberUtil::UAN: - return &metadata.uan(); - default: - return &metadata.general_desc(); - } -} - -// A helper function that is used by Format and FormatByPattern. -void FormatNumberByFormat(int country_calling_code, - PhoneNumberUtil::PhoneNumberFormat number_format, - const string& formatted_national_number, - const string& formatted_extension, - string* formatted_number) { - switch (number_format) { - case PhoneNumberUtil::E164: - formatted_number->assign(StrCat(kPlusSign, - SimpleItoa(country_calling_code), - formatted_national_number, - formatted_extension)); - return; - case PhoneNumberUtil::INTERNATIONAL: - formatted_number->assign(StrCat(kPlusSign, - SimpleItoa(country_calling_code), - " ", - formatted_national_number, - formatted_extension)); - return; - case PhoneNumberUtil::RFC3966: - formatted_number->assign(StrCat(kPlusSign, - SimpleItoa(country_calling_code), - "-", - formatted_national_number, - formatted_extension)); - return; - case PhoneNumberUtil::NATIONAL: - default: - formatted_number->assign(StrCat(formatted_national_number, - formatted_extension)); - } -} - -// The number_for_leading_digits_match is a separate parameter, because for -// alpha numbers we want to pass in the numeric version to select the right -// formatting rule, but then we actually apply the formatting pattern to the -// national_number (which in this case has alpha characters in it). -// -// Note that carrier_code is optional - if an empty string, no carrier code -// replacement will take place. -void FormatAccordingToFormatsWithCarrier( - const string& number_for_leading_digits_match, - const RepeatedPtrField<NumberFormat>& available_formats, - PhoneNumberUtil::PhoneNumberFormat number_format, - const string& national_number, - const string& carrier_code, - string* formatted_number) { - DCHECK(formatted_number); - for (RepeatedPtrField<NumberFormat>::const_iterator - it = available_formats.begin(); it != available_formats.end(); ++it) { - int size = it->leading_digits_pattern_size(); - if (size > 0) { - scoped_ptr<reg_exp::RegularExpressionInput> - number_copy(reg_exp::CreateRegularExpressionInput( - number_for_leading_digits_match.c_str())); - // We always use the last leading_digits_pattern, as it is the most - // detailed. - if (!number_copy->ConsumeRegExp(it->leading_digits_pattern(size - 1), - true, NULL, NULL)) { - continue; - } - } - scoped_ptr<reg_exp::RegularExpression> pattern_to_match( - reg_exp::CreateRegularExpression(it->pattern().c_str())); - if (pattern_to_match->Match(national_number.c_str(), true, NULL)) { - string formatting_pattern(it->format()); - if (number_format == PhoneNumberUtil::NATIONAL && - carrier_code.length() > 0 && - it->domestic_carrier_code_formatting_rule().length() > 0) { - // Replace the $CC in the formatting rule with the desired carrier code. - string carrier_code_formatting_rule = - it->domestic_carrier_code_formatting_rule(); - carrier_code_pattern->Replace(&carrier_code_formatting_rule, - false, carrier_code.c_str()); - TransformRegularExpressionToRE2Syntax(&carrier_code_formatting_rule); - first_group_capturing_pattern->Replace(&formatting_pattern, - false, - carrier_code_formatting_rule.c_str()); - } else { - // Use the national prefix formatting rule instead. - string national_prefix_formatting_rule = - it->national_prefix_formatting_rule(); - if (number_format == PhoneNumberUtil::NATIONAL && - national_prefix_formatting_rule.length() > 0) { - // Apply the national_prefix_formatting_rule as the formatting_pattern - // contains only information on how the national significant number - // should be formatted at this point. - TransformRegularExpressionToRE2Syntax( - &national_prefix_formatting_rule); - first_group_capturing_pattern->Replace(&formatting_pattern, - false, - national_prefix_formatting_rule.c_str()); - } - } - TransformRegularExpressionToRE2Syntax(&formatting_pattern); - formatted_number->assign(national_number); - pattern_to_match->Replace(formatted_number, true, - formatting_pattern.c_str()); - return; - } - } - // If no pattern above is matched, we format the number as a whole. - formatted_number->assign(national_number); -} - -// Simple wrapper of FormatAccordingToFormatsWithCarrier for the common case of -// no carrier code. -void FormatAccordingToFormats( - const string& number_for_leading_digits_match, - const RepeatedPtrField<NumberFormat>& available_formats, - PhoneNumberUtil::PhoneNumberFormat number_format, - const string& national_number, - string* formatted_number) { - DCHECK(formatted_number); - FormatAccordingToFormatsWithCarrier(number_for_leading_digits_match, - available_formats, number_format, - national_number, "", formatted_number); -} - -// Returns true when one national number is the suffix of the other or both are -// the same. -bool IsNationalNumberSuffixOfTheOther(const PhoneNumber& first_number, - const PhoneNumber& second_number) { - const string& first_number_national_number = - SimpleItoa(first_number.national_number()); - const string& second_number_national_number = - SimpleItoa(second_number.national_number()); - // Note that HasSuffixString returns true if the numbers are equal. - return HasSuffixString(first_number_national_number, - second_number_national_number) || - HasSuffixString(second_number_national_number, - first_number_national_number); -} - -bool IsNumberMatchingDesc(const string& national_number, - const PhoneNumberDesc& number_desc) { - scoped_ptr<const reg_exp::RegularExpression> - possible_pattern(reg_exp::CreateRegularExpression( - number_desc.possible_number_pattern().c_str())); - scoped_ptr<const reg_exp::RegularExpression> - national_pattern(reg_exp::CreateRegularExpression( - number_desc.national_number_pattern().c_str())); - return (possible_pattern->Match(national_number.c_str(), true, NULL) && - national_pattern->Match(national_number.c_str(), true, NULL)); -} - -PhoneNumberUtil::PhoneNumberType GetNumberTypeHelper( - const string& national_number, const PhoneMetadata& metadata) { - const PhoneNumberDesc& general_desc = metadata.general_desc(); - if (!general_desc.has_national_number_pattern() || - !IsNumberMatchingDesc(national_number, general_desc)) { - logger->Debug("Number type unknown - " - "doesn't match general national number pattern."); - return PhoneNumberUtil::UNKNOWN; - } - if (IsNumberMatchingDesc(national_number, metadata.premium_rate())) { - logger->Debug("Number is a premium number."); - return PhoneNumberUtil::PREMIUM_RATE; - } - if (IsNumberMatchingDesc(national_number, metadata.toll_free())) { - logger->Debug("Number is a toll-free number."); - return PhoneNumberUtil::TOLL_FREE; - } - if (IsNumberMatchingDesc(national_number, metadata.shared_cost())) { - logger->Debug("Number is a shared cost number."); - return PhoneNumberUtil::SHARED_COST; - } - if (IsNumberMatchingDesc(national_number, metadata.voip())) { - logger->Debug("Number is a VOIP (Voice over IP) number."); - return PhoneNumberUtil::VOIP; - } - if (IsNumberMatchingDesc(national_number, metadata.personal_number())) { - logger->Debug("Number is a personal number."); - return PhoneNumberUtil::PERSONAL_NUMBER; - } - if (IsNumberMatchingDesc(national_number, metadata.pager())) { - logger->Debug("Number is a pager number."); - return PhoneNumberUtil::PAGER; - } - if (IsNumberMatchingDesc(national_number, metadata.uan())) { - logger->Debug("Number is a UAN."); - return PhoneNumberUtil::UAN; - } - - bool is_fixed_line = - IsNumberMatchingDesc(national_number, metadata.fixed_line()); - if (is_fixed_line) { - if (metadata.same_mobile_and_fixed_line_pattern()) { - logger->Debug("Fixed-line and mobile patterns equal, " - "number is fixed-line or mobile"); - return PhoneNumberUtil::FIXED_LINE_OR_MOBILE; - } else if (IsNumberMatchingDesc(national_number, metadata.mobile())) { - logger->Debug("Fixed-line and mobile patterns differ, but number is " - "still fixed-line or mobile"); - return PhoneNumberUtil::FIXED_LINE_OR_MOBILE; - } - logger->Debug("Number is a fixed line number."); - return PhoneNumberUtil::FIXED_LINE; - } - // Otherwise, test to see if the number is mobile. Only do this if certain - // that the patterns for mobile and fixed line aren't the same. - if (!metadata.same_mobile_and_fixed_line_pattern() && - IsNumberMatchingDesc(national_number, metadata.mobile())) { - logger->Debug("Number is a mobile number."); - return PhoneNumberUtil::MOBILE; - } - logger->Debug("Number type unknown - doesn't match any specific number type" - " pattern."); - return PhoneNumberUtil::UNKNOWN; -} - -int DecodeUTF8Char(const char* in, char32* out) { - Rune r; - int len = chartorune(&r, in); - *out = r; - - return len; -} - -char32 ToUnicodeCodepoint(const char* unicode_char) { - char32 codepoint; - DecodeUTF8Char(unicode_char, &codepoint); - - return codepoint; -} - -// Initialisation helper function used to populate the regular expressions in a -// defined order. -void CreateRegularExpressions() { - unique_international_prefix.reset( - reg_exp::CreateRegularExpression("[\\d]+(?:[~⁓∼~][\\d]+)?")); - first_group_capturing_pattern.reset( - reg_exp::CreateRegularExpression("(\\$1)")); - carrier_code_pattern.reset( - reg_exp::CreateRegularExpression("\\$CC")); - capturing_digit_pattern.reset( - reg_exp::CreateRegularExpression( - StrCat("([", kValidDigits, "])").c_str())); - capturing_ascii_digits_pattern.reset( - reg_exp::CreateRegularExpression("(\\d+)")); - valid_start_char.reset(new string(StrCat( - "[", kPlusChars, kValidDigits, "]"))); - valid_start_char_pattern.reset( - reg_exp::CreateRegularExpression(valid_start_char->c_str())); - capture_up_to_second_number_start_pattern.reset( - reg_exp::CreateRegularExpression(kCaptureUpToSecondNumberStart)); - unwanted_end_char_pattern.reset( - reg_exp::CreateRegularExpression(kUnwantedEndChar)); - valid_phone_number.reset(new string( - StrCat("[", kPlusChars, "]*(?:[", kValidPunctuation, "]*[", kValidDigits, - "]){3,}[", kValidAlpha, kValidPunctuation, kValidDigits, "]*"))); - // Canonical-equivalence doesn't seem to be an option with RE2, so we allow - // two options for representing the ó - the character itself, and one in the - // unicode decomposed form with the combining acute accent. Note that there - // are currently three capturing groups for the extension itself - if this - // number is changed, MaybeStripExtension needs to be updated. - const string capturing_extn_digits = StrCat("([", kValidDigits, "]{1,7})"); - known_extn_patterns.reset(new string( - StrCat(kRfc3966ExtnPrefix, capturing_extn_digits, "|" - "[ \\t,]*(?:ext(?:ensi(?:ó?|ó))?n?|extn?|[,xx##~~]|" - "int|int|anexo)" - "[:\\..]?[ \\t,-]*", capturing_extn_digits, "#?|" - "[- ]+([", kValidDigits, "]{1,5})#"))); - extn_pattern.reset(reg_exp::CreateRegularExpression( - StrCat("(?i)(?:", *known_extn_patterns, ")$").c_str())); - valid_phone_number_pattern.reset(reg_exp::CreateRegularExpression( - StrCat("(?i)", *valid_phone_number, "(?:", *known_extn_patterns, - ")?").c_str())); - valid_alpha_phone_pattern.reset(reg_exp::CreateRegularExpression( - StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}").c_str())); - plus_chars_pattern.reset(reg_exp::CreateRegularExpression( - StrCat("[", kPlusChars, "]+").c_str())); -} - -void InitializeStaticMapsAndSets() { - // Create global objects. - all_plus_number_grouping_symbols.reset(new map<char32, char>); - alpha_mappings.reset(new map<char32, char>); - all_normalization_mappings.reset(new map<char32, char>); - - // Punctuation that we wish to respect in alpha numbers, as they show number - // groupings are mapped here. - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("-"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("-"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("‐"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("‑"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("‒"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("–"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("—"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("―"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("−"), '-')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("/"), '/')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("/"), '/')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint(" "), ' ')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint(" "), ' ')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint(""), ' ')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("."), '.')); - all_plus_number_grouping_symbols->insert( - make_pair(ToUnicodeCodepoint("."), '.')); - // Only the upper-case letters are added here - the lower-case versions are - // added programmatically. - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("A"), '2')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("B"), '2')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("C"), '2')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("D"), '3')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("E"), '3')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("F"), '3')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("G"), '4')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("H"), '4')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("I"), '4')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("J"), '5')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("K"), '5')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("L"), '5')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("M"), '6')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("N"), '6')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("O"), '6')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("P"), '7')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("Q"), '7')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("R"), '7')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("S"), '7')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("T"), '8')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("U"), '8')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("V"), '8')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("W"), '9')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("X"), '9')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("Y"), '9')); - alpha_mappings->insert(make_pair(ToUnicodeCodepoint("Z"), '9')); - map<char32, char> lower_case_mappings; - map<char32, char> alpha_letters; - for (map<char32, char>::const_iterator it = alpha_mappings->begin(); - it != alpha_mappings->end(); - ++it) { - // Convert all the upper-case ASCII letters to lower-case. - if (it->first < 128) { - char letter_as_upper = static_cast<char>(it->first); - char32 letter_as_lower = static_cast<char32>(tolower(letter_as_upper)); - lower_case_mappings.insert(make_pair(letter_as_lower, it->second)); - // Add the letters in both variants to the alpha_letters map. This just - // pairs each letter with its upper-case representation so that it can be - // retained when normalising alpha numbers. - alpha_letters.insert(make_pair(letter_as_lower, letter_as_upper)); - alpha_letters.insert(make_pair(it->first, letter_as_upper)); - } - } - // In the Java version we don't insert the lower-case mappings in the map, - // because we convert to upper case on the fly. Doing this here would involve - // pulling in all of ICU, which we don't want to do if we don't have to. - alpha_mappings->insert(lower_case_mappings.begin(), - lower_case_mappings.end()); - all_normalization_mappings->insert(alpha_mappings->begin(), - alpha_mappings->end()); - all_plus_number_grouping_symbols->insert(alpha_letters.begin(), - alpha_letters.end()); - // Add the ASCII digits so that they don't get deleted by NormalizeHelper(). - for (char c = '0'; c <= '9'; ++c) { - all_normalization_mappings->insert(make_pair(c, c)); - all_plus_number_grouping_symbols->insert(make_pair(c, c)); - } - CreateRegularExpressions(); -} - -// Normalizes a string of characters representing a phone number by replacing -// all characters found in the accompanying map with the values therein, and -// stripping all other characters if remove_non_matches is true. -// Parameters: -// number - a pointer to a string of characters representing a phone number to -// be normalized. -// normalization_replacements - a mapping of characters to what they should be -// replaced by in the normalized version of the phone number -// remove_non_matches - indicates whether characters that are not able to be -// replaced should be stripped from the number. If this is false, they will be -// left unchanged in the number. -void NormalizeHelper(const map<char32, char>& normalization_replacements, - bool remove_non_matches, - string* number) { - DCHECK(number); - UnicodeText number_as_unicode; - number_as_unicode.PointToUTF8(number->data(), number->size()); - string normalized_number; - for (UnicodeText::const_iterator it = number_as_unicode.begin(); - it != number_as_unicode.end(); - ++it) { - map<char32, char>::const_iterator found_glyph_pair = - normalization_replacements.find(*it); - if (found_glyph_pair != normalization_replacements.end()) { - normalized_number.push_back(found_glyph_pair->second); - } else if (!remove_non_matches) { - normalized_number.append(it.utf8_data()); - } - // If neither of the above are true, we remove this character. - } - number->assign(normalized_number); -} - -// Strips the IDD from the start of the number if present. Helper function used -// by MaybeStripInternationalPrefixAndNormalize. -bool ParsePrefixAsIdd(const reg_exp::RegularExpression* idd_pattern, - string* number) { - DCHECK(number); - scoped_ptr<reg_exp::RegularExpressionInput> number_copy( - reg_exp::CreateRegularExpressionInput(number->c_str())); - // First attempt to strip the idd_pattern at the start, if present. We make a - // copy so that we can revert to the original string if necessary. - if (idd_pattern->Consume(number_copy.get(), true, NULL, NULL)) { - // Only strip this if the first digit after the match is not a 0, since - // country calling codes cannot begin with 0. - string extracted_digit; - if (capturing_digit_pattern->Match(number_copy->ToString().c_str(), false, - &extracted_digit)) { - PhoneNumberUtil::NormalizeDigitsOnly(&extracted_digit); - if (extracted_digit == "0") { - return false; - } - } - number->assign(number_copy->ToString()); - return true; - } - return false; -} - -PhoneNumberUtil::ValidationResult TestNumberLengthAgainstPattern( - const reg_exp::RegularExpression* number_pattern, const string& number) { - string extracted_number; - if (number_pattern->Match(number.c_str(), true, &extracted_number)) { - return PhoneNumberUtil::IS_POSSIBLE; - } - if (number_pattern->Match(number.c_str(), false, &extracted_number)) { - return PhoneNumberUtil::TOO_LONG; - } else { - return PhoneNumberUtil::TOO_SHORT; - } -} - -} // namespace - -// Fetch the metadata which are actually already available in the address space -// (embedded). -class DefaultMetadataProvider : public PhoneNumberUtil::MetadataProvider { - public: - virtual ~DefaultMetadataProvider() {} - - virtual pair<const void*, unsigned> operator()() { - return make_pair(metadata_get(), metadata_size()); - } -}; - -bool PhoneNumberUtil::LoadMetadata(PhoneMetadataCollection* metadata, - MetadataProvider& provider) { - - pair<const void*, unsigned> p = provider(); - const void* metadata_start = p.first; - unsigned size = p.second; - - if (!metadata->ParseFromArray(metadata_start, size)) { - cerr << "Could not parse binary data." << endl; - return false; - } - return true; -} - -void PhoneNumberUtil::SetLoggerAdapter(LoggerAdapter* logger_adapter) { - logger.reset(logger_adapter); -} - -// Private constructor. Also takes care of initialisation. -PhoneNumberUtil::PhoneNumberUtil(MetadataProvider* provider) - : country_calling_code_to_region_code_map_(new vector<IntRegionsPair>()), - nanpa_regions_(new set<string>()), - region_to_metadata_map_(new map<string, PhoneMetadata>()) { - - if (logger == NULL) { - SetLoggerAdapter(new DefaultLogger()); - } - PhoneMetadataCollection metadata_collection; - DefaultMetadataProvider default_provider; - - if (!LoadMetadata(&metadata_collection, provider ? *provider - : default_provider)) { - logger->Fatal("Could not load metadata"); - return; - } - // Storing data in a temporary map to make it easier to find other regions - // that share a country calling code when inserting data. - map<int, list<string>* > country_calling_code_to_region_map; - for (RepeatedPtrField<PhoneMetadata>::const_iterator it = - metadata_collection.metadata().begin(); - it != metadata_collection.metadata().end(); - ++it) { - const PhoneMetadata& phone_metadata = *it; - const string& region_code = phone_metadata.id(); - region_to_metadata_map_->insert(make_pair(region_code, *it)); - int country_calling_code = it->country_code(); - map<int, list<string>*>::iterator calling_code_in_map = - country_calling_code_to_region_map.find(country_calling_code); - if (calling_code_in_map != country_calling_code_to_region_map.end()) { - if (it->main_country_for_code()) { - calling_code_in_map->second->push_front(region_code); - } else { - calling_code_in_map->second->push_back(region_code); - } - } else { - // For most country calling codes, there will be only one region code. - list<string>* list_with_region_code = new list<string>(); - list_with_region_code->push_back(region_code); - country_calling_code_to_region_map.insert( - make_pair(country_calling_code, list_with_region_code)); - } - if (country_calling_code == kNanpaCountryCode) { - nanpa_regions_->insert(region_code); - } - } - - country_calling_code_to_region_code_map_->insert( - country_calling_code_to_region_code_map_->begin(), - country_calling_code_to_region_map.begin(), - country_calling_code_to_region_map.end()); - // Sort all the pairs in ascending order according to country calling code. - sort(country_calling_code_to_region_code_map_->begin(), - country_calling_code_to_region_code_map_->end(), - CompareFirst()); - - InitializeStaticMapsAndSets(); -} - -PhoneNumberUtil::~PhoneNumberUtil() { - for (vector<IntRegionsPair>::const_iterator it = - country_calling_code_to_region_code_map_->begin(); - it != country_calling_code_to_region_code_map_->end(); - ++it) { - delete it->second; - } -} - -// Public wrapper function to get a PhoneNumberUtil instance with the default -// metadata file. -// static -PhoneNumberUtil* PhoneNumberUtil::GetInstance() { - return Singleton<PhoneNumberUtil>::get(); -} - -void PhoneNumberUtil::GetSupportedRegions(set<string>* regions) const { - DCHECK(regions); - for (map<string, PhoneMetadata>::const_iterator it = - region_to_metadata_map_->begin(); it != region_to_metadata_map_->end(); - ++it) { - regions->insert(it->first); - } -} - -void PhoneNumberUtil::GetNddPrefixForRegion(const string& region_code, - bool strip_non_digits, - string* national_prefix) const { - DCHECK(national_prefix); - if (!IsValidRegionCode(region_code)) { - logger->Error("Invalid region code provided."); - return; - } - const PhoneMetadata* metadata = GetMetadataForRegion(region_code); - national_prefix->assign(metadata->national_prefix()); - if (strip_non_digits) { - // Note: if any other non-numeric symbols are ever used in national - // prefixes, these would have to be removed here as well. - strrmm(national_prefix, "~"); - } -} - -bool PhoneNumberUtil::IsValidRegionCode(const string& region_code) const { - return (region_to_metadata_map_->find(region_code) != - region_to_metadata_map_->end()); -} - -bool PhoneNumberUtil::HasValidRegionCode(const string& region_code, - int country_code, - const string& number) const { - if (!IsValidRegionCode(region_code)) { - logger->Info(string("Number ") + number + - " has invalid or missing country code (" + country_code + ")"); - return false; - } - return true; -} - -// Returns a pointer to the phone metadata for the appropriate region. -const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegion( - const string& region_code) const { - map<string, PhoneMetadata>::const_iterator it = - region_to_metadata_map_->find(region_code); - if (it != region_to_metadata_map_->end()) { - return &it->second; - } - return NULL; -} - -void PhoneNumberUtil::Format(const PhoneNumber& number, - PhoneNumberFormat number_format, - string* formatted_number) const { - DCHECK(formatted_number); - int country_calling_code = number.country_code(); - string national_significant_number; - GetNationalSignificantNumber(number, &national_significant_number); - if (number_format == E164) { - // Early exit for E164 case since no formatting of the national number needs - // to be applied. Extensions are not formatted. - FormatNumberByFormat(country_calling_code, E164, - national_significant_number, "", formatted_number); - return; - } - // Note here that all NANPA formatting rules are contained by US, so we use - // that to format NANPA numbers. The same applies to Russian Fed regions - - // rules are contained by Russia. French Indian Ocean country rules are - // contained by Réunion. - string region_code; - GetRegionCodeForCountryCode(country_calling_code, ®ion_code); - if (!HasValidRegionCode(region_code, country_calling_code, - national_significant_number)) { - formatted_number->assign(national_significant_number); - return; - } - string formatted_extension; - MaybeGetFormattedExtension(number, region_code, number_format, - &formatted_extension); - string formatted_national_number; - FormatNationalNumber(national_significant_number, region_code, number_format, - &formatted_national_number); - FormatNumberByFormat(country_calling_code, number_format, - formatted_national_number, - formatted_extension, formatted_number); -} - -void PhoneNumberUtil::FormatByPattern( - const PhoneNumber& number, - PhoneNumberFormat number_format, - const RepeatedPtrField<NumberFormat>& user_defined_formats, - string* formatted_number) const { - static scoped_ptr<const reg_exp::RegularExpression> - national_prefix_pattern(reg_exp::CreateRegularExpression("\\$NP")); - static scoped_ptr<const reg_exp::RegularExpression> - first_group_pattern(reg_exp::CreateRegularExpression("\\$FG")); - DCHECK(formatted_number); - int country_calling_code = number.country_code(); - // Note GetRegionCodeForCountryCode() is used because formatting information - // for regions which share a country calling code is contained by only one - // region for performance reasons. For example, for NANPA regions it will be - // contained in the metadata for US. - string region_code; - GetRegionCodeForCountryCode(country_calling_code, ®ion_code); - string national_significant_number; - GetNationalSignificantNumber(number, &national_significant_number); - if (!HasValidRegionCode(region_code, country_calling_code, - national_significant_number)) { - formatted_number->assign(national_significant_number); - return; - } - RepeatedPtrField<NumberFormat> user_defined_formats_copy; - for (RepeatedPtrField<NumberFormat>::const_iterator it = - user_defined_formats.begin(); - it != user_defined_formats.end(); - ++it) { - string national_prefix_formatting_rule( - it->national_prefix_formatting_rule()); - if (!national_prefix_formatting_rule.empty()) { - const string& national_prefix = - GetMetadataForRegion(region_code)->national_prefix(); - NumberFormat* num_format_copy = user_defined_formats_copy.Add(); - num_format_copy->MergeFrom(*it); - if (!national_prefix.empty()) { - // Replace $NP with national prefix and $FG with the first group ($1). - national_prefix_pattern->Replace(&national_prefix_formatting_rule, - false, - national_prefix.c_str()); - first_group_pattern->Replace(&national_prefix_formatting_rule, - false, - "$1"); - num_format_copy->set_national_prefix_formatting_rule( - national_prefix_formatting_rule); - } else { - // We don't want to have a rule for how to format the national prefix if - // there isn't one. - num_format_copy->clear_national_prefix_formatting_rule(); - } - } else { - user_defined_formats_copy.Add()->MergeFrom(*it); - } - } - - string formatted_number_without_extension; - FormatAccordingToFormats(national_significant_number, - user_defined_formats_copy, - number_format, national_significant_number, - &formatted_number_without_extension); - string formatted_extension; - MaybeGetFormattedExtension(number, region_code, NATIONAL, - &formatted_extension); - FormatNumberByFormat(country_calling_code, number_format, - formatted_number_without_extension, formatted_extension, - formatted_number); -} - -void PhoneNumberUtil::FormatNationalNumberWithCarrierCode( - const PhoneNumber& number, - const string& carrier_code, - string* formatted_number) const { - int country_calling_code = number.country_code(); - string national_significant_number; - GetNationalSignificantNumber(number, &national_significant_number); - // Note GetRegionCodeForCountryCode() is used because formatting information - // for regions which share a country calling code is contained by only one - // region for performance reasons. For example, for NANPA regions it will be - // contained in the metadata for US. - string region_code; - GetRegionCodeForCountryCode(country_calling_code, ®ion_code); - if (!HasValidRegionCode(region_code, country_calling_code, - national_significant_number)) { - formatted_number->assign(national_significant_number); - } - string formatted_extension; - MaybeGetFormattedExtension(number, region_code, NATIONAL, - &formatted_extension); - string formatted_national_number; - FormatNationalNumberWithCarrier(national_significant_number, region_code, - NATIONAL, carrier_code, - &formatted_national_number); - FormatNumberByFormat(country_calling_code, NATIONAL, - formatted_national_number, formatted_extension, - formatted_number); -} - -void PhoneNumberUtil::FormatNationalNumberWithPreferredCarrierCode( - const PhoneNumber& number, - const string& fallback_carrier_code, - string* formatted_number) const { - FormatNationalNumberWithCarrierCode( - number, - number.has_preferred_domestic_carrier_code() - ? number.preferred_domestic_carrier_code() - : fallback_carrier_code, - formatted_number); -} - -void PhoneNumberUtil::FormatOutOfCountryCallingNumber( - const PhoneNumber& number, - const string& calling_from, - string* formatted_number) const { - DCHECK(formatted_number); - if (!IsValidRegionCode(calling_from)) { - logger->Info("Trying to format number from invalid region. International" - " formatting applied."); - Format(number, INTERNATIONAL, formatted_number); - return; - } - int country_code = number.country_code(); - string region_code; - GetRegionCodeForCountryCode(country_code, ®ion_code); - string national_significant_number; - GetNationalSignificantNumber(number, &national_significant_number); - if (!HasValidRegionCode(region_code, country_code, - national_significant_number)) { - formatted_number->assign(national_significant_number); - return; - } - if (country_code == kNanpaCountryCode) { - if (IsNANPACountry(calling_from)) { - // For NANPA regions, return the national format for these regions but - // prefix it with the country calling code. - string national_number; - Format(number, NATIONAL, &national_number); - formatted_number->assign(StrCat(country_code, " ", national_number)); - return; - } - } else if (country_code == GetCountryCodeForRegion(calling_from)) { - // If neither region is a NANPA region, then we check to see if the - // country calling code of the number and the country calling code of the - // region we are calling from are the same. - // For regions that share a country calling code, the country calling code - // need not be dialled. This also applies when dialling within a region, so - // this if clause covers both these cases. - // Technically this is the case for dialling from la Réunion to other - // overseas departments of France (French Guiana, Martinique, Guadeloupe), - // but not vice versa - so we don't cover this edge case for now and for - // those cases return the version including country calling code. - // Details here: - // http://www.petitfute.com/voyage/225-info-pratiques-reunion - Format(number, NATIONAL, formatted_number); - return; - } - string formatted_national_number; - FormatNationalNumber(national_significant_number, region_code, INTERNATIONAL, - &formatted_national_number); - const PhoneMetadata* metadata = GetMetadataForRegion(calling_from); - const string& international_prefix = metadata->international_prefix(); - string formatted_extension; - MaybeGetFormattedExtension(number, region_code, INTERNATIONAL, - &formatted_extension); - // For regions that have multiple international prefixes, the international - // format of the number is returned, unless there is a preferred international - // prefix. - string international_prefix_for_formatting( - unique_international_prefix->Match(international_prefix.c_str(), - true, NULL) - ? international_prefix - : metadata->preferred_international_prefix()); - if (!international_prefix_for_formatting.empty()) { - formatted_number->assign( - StrCat(international_prefix_for_formatting, " ", country_code, " ", - formatted_national_number, formatted_extension)); - } else { - FormatNumberByFormat(country_code, INTERNATIONAL, formatted_national_number, - formatted_extension, formatted_number); - } -} - -void PhoneNumberUtil::FormatInOriginalFormat(const PhoneNumber& number, - const string& region_calling_from, - string* formatted_number) const { - DCHECK(formatted_number); - - if (!number.has_country_code_source()) { - Format(number, NATIONAL, formatted_number); - return; - } - switch (number.country_code_source()) { - case PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN: - Format(number, INTERNATIONAL, formatted_number); - return; - case PhoneNumber::FROM_NUMBER_WITH_IDD: - FormatOutOfCountryCallingNumber(number, region_calling_from, - formatted_number); - return; - case PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN: - Format(number, INTERNATIONAL, formatted_number); - formatted_number->erase(formatted_number->begin()); - return; - case PhoneNumber::FROM_DEFAULT_COUNTRY: - default: - Format(number, NATIONAL, formatted_number); - } -} - -void PhoneNumberUtil::FormatOutOfCountryKeepingAlphaChars( - const PhoneNumber& number, - const string& calling_from, - string* formatted_number) const { - // If there is no raw input, then we can't keep alpha characters because there - // aren't any. In this case, we return FormatOutOfCountryCallingNumber. - if (number.raw_input().empty()) { - FormatOutOfCountryCallingNumber(number, calling_from, formatted_number); - return; - } - string region_code; - GetRegionCodeForCountryCode(number.country_code(), ®ion_code); - if (!HasValidRegionCode(region_code, number.country_code(), - number.raw_input())) { - formatted_number->assign(number.raw_input()); - return; - } - // Strip any prefix such as country calling code, IDD, that was present. We do - // this by comparing the number in raw_input with the parsed number. - string raw_input_copy(number.raw_input()); - // Normalize punctuation. We retain number grouping symbols such as " " only. - NormalizeHelper(*all_plus_number_grouping_symbols, true, &raw_input_copy); - // Now we trim everything before the first three digits in the parsed number. - // We choose three because all valid alpha numbers have 3 digits at the start - // - if it does not, then we don't trim anything at all. Similarly, if the - // national number was less than three digits, we don't trim anything at all. - string national_number; - GetNationalSignificantNumber(number, &national_number); - if (national_number.length() > 3) { - size_t first_national_number_digit = - raw_input_copy.find(national_number.substr(0, 3)); - if (first_national_number_digit != string::npos) { - raw_input_copy = raw_input_copy.substr(first_national_number_digit); - } - } - const PhoneMetadata* metadata = GetMetadataForRegion(calling_from); - if (number.country_code() == kNanpaCountryCode) { - if (IsNANPACountry(calling_from)) { - formatted_number->assign(StrCat(number.country_code(), " ", - raw_input_copy)); - return; - } - } else if (number.country_code() == GetCountryCodeForRegion(calling_from)) { - // Here we copy the formatting rules so we can modify the pattern we expect - // to match against. - RepeatedPtrField<NumberFormat> available_formats = metadata->number_format(); - for (RepeatedPtrField<NumberFormat>::iterator - it = available_formats.begin(); it != available_formats.end(); ++it) { - // The first group is the first group of digits that the user determined. - it->set_pattern("(\\d+)(.*)"); - // Here we just concatenate them back together after the national prefix - // has been fixed. - it->set_format("$1$2"); - } - // Now we format using these patterns instead of the default pattern, but - // with the national prefix prefixed if necessary, by choosing the format - // rule based on the leading digits present in the unformatted national - // number. - // This will not work in the cases where the pattern (and not the - // leading digits) decide whether a national prefix needs to be used, since - // we have overridden the pattern to match anything, but that is not the - // case in the metadata to date. - FormatAccordingToFormats(national_number, available_formats, - NATIONAL, raw_input_copy, formatted_number); - return; - } - - const string& international_prefix = metadata->international_prefix(); - // For regions that have multiple international prefixes, the international - // format of the number is returned, unless there is a preferred international - // prefix. - string international_prefix_for_formatting( - unique_international_prefix->Match(international_prefix.c_str(), - true, NULL) - ? international_prefix - : metadata->preferred_international_prefix()); - if (!international_prefix_for_formatting.empty()) { - formatted_number->assign( - StrCat(international_prefix_for_formatting, " ", number.country_code(), - " ", raw_input_copy)); - } else { - FormatNumberByFormat(number.country_code(), INTERNATIONAL, raw_input_copy, - "", formatted_number); - } -} - -void PhoneNumberUtil::FormatNationalNumber( - const string& number, - const string& region_code, - PhoneNumberFormat number_format, - string* formatted_number) const { - DCHECK(formatted_number); - FormatNationalNumberWithCarrier(number, region_code, number_format, "", - formatted_number); -} - -// Note in some regions, the national number can be written in two completely -// different ways depending on whether it forms part of the NATIONAL format or -// INTERNATIONAL format. The number_format parameter here is used to specify -// which format to use for those cases. If a carrier_code is specified, this -// will be inserted into the formatted string to replace $CC. -void PhoneNumberUtil::FormatNationalNumberWithCarrier( - const string& number, - const string& region_code, - PhoneNumberFormat number_format, - const string& carrier_code, - string* formatted_number) const { - DCHECK(formatted_number); - const PhoneMetadata* metadata = GetMetadataForRegion(region_code); - // When the intl_number_formats exists, we use that to format national number - // for the INTERNATIONAL format instead of using the number_formats. - const RepeatedPtrField<NumberFormat> available_formats = - (metadata->intl_number_format_size() == 0 || number_format == NATIONAL) - ? metadata->number_format() - : metadata->intl_number_format(); - FormatAccordingToFormatsWithCarrier(number, available_formats, number_format, - number, carrier_code, formatted_number); - if (number_format == RFC3966) { - // Replace all separators with a "-". - scoped_ptr<const reg_exp::RegularExpression> separator_pattern( - reg_exp::CreateRegularExpression( - StrCat("[", kValidPunctuation, "]+").c_str())); - separator_pattern->Replace(formatted_number, true, "-"); - } -} - -// Gets the formatted extension of a phone number, if the phone number had an -// extension specified. If not, it returns an empty string. -void PhoneNumberUtil::MaybeGetFormattedExtension( - const PhoneNumber& number, - const string& region_code, - PhoneNumberFormat number_format, - string* extension) const { - DCHECK(extension); - if (!number.has_extension() || number.extension().length() == 0) { - extension->assign(""); - } else { - if (number_format == RFC3966) { - StrAppend(extension, kRfc3966ExtnPrefix, number.extension()); - return; - } - FormatExtension(number.extension(), region_code, extension); - } -} - -// Formats the extension part of the phone number by prefixing it with the -// appropriate extension prefix. This will be the default extension prefix, -// unless overridden by a preferred extension prefix for this region. -void PhoneNumberUtil::FormatExtension(const string& extension_digits, - const string& region_code, - string* extension) const { - DCHECK(extension); - const PhoneMetadata* metadata = GetMetadataForRegion(region_code); - if (metadata->has_preferred_extn_prefix()) { - extension->assign(StrCat(metadata->preferred_extn_prefix(), - extension_digits)); - } else { - extension->assign(StrCat(kDefaultExtnPrefix, extension_digits)); - } -} - -bool PhoneNumberUtil::IsNANPACountry(const string& region_code) const { - return nanpa_regions_->find(region_code) != nanpa_regions_->end(); -} - -// Returns the region codes that matches the specific country calling code. In -// the case of no region code being found, region_codes will be left empty. -void PhoneNumberUtil::GetRegionCodesForCountryCallingCode( - int country_calling_code, - list<string>* region_codes) const { - DCHECK(region_codes); - // Create a IntRegionsPair with the country_code passed in, and use it to - // locate the pair with the same country_code in the sorted vector. - IntRegionsPair target_pair; - target_pair.first = country_calling_code; - typedef vector<IntRegionsPair>::const_iterator ConstIterator; - pair<ConstIterator, ConstIterator> range = equal_range( - country_calling_code_to_region_code_map_->begin(), - country_calling_code_to_region_code_map_->end(), - target_pair, CompareFirst()); - if (range.first != range.second) { - region_codes->insert(region_codes->begin(), - range.first->second->begin(), - range.first->second->end()); - } -} - -// Returns the region code that matches the specific country calling code. In -// the case of no region code being found, ZZ will be returned. -void PhoneNumberUtil::GetRegionCodeForCountryCode( - int country_calling_code, - string* region_code) const { - DCHECK(region_code); - list<string> region_codes; - - GetRegionCodesForCountryCallingCode(country_calling_code, ®ion_codes); - *region_code = region_codes.size() != 0 ? region_codes.front() : "ZZ"; -} - -void PhoneNumberUtil::GetRegionCodeForNumber(const PhoneNumber& number, - string* region_code) const { - DCHECK(region_code); - int country_calling_code = number.country_code(); - list<string> region_codes; - GetRegionCodesForCountryCallingCode(country_calling_code, ®ion_codes); - if (region_codes.size() == 0) { - string number_string; - GetNationalSignificantNumber(number, &number_string); - logger->Warning(string("Missing/invalid country code (") + - SimpleItoa(country_calling_code) + ") for number " + number_string); - *region_code = "ZZ"; - return; - } - if (region_codes.size() == 1) { - *region_code = region_codes.front(); - } else { - GetRegionCodeForNumberFromRegionList(number, region_codes, region_code); - } -} - -void PhoneNumberUtil::GetRegionCodeForNumberFromRegionList( - const PhoneNumber& number, const list<string>& region_codes, - string* region_code) const { - DCHECK(region_code); - string national_number; - GetNationalSignificantNumber(number, &national_number); - for (list<string>::const_iterator it = region_codes.begin(); - it != region_codes.end(); ++it) { - const PhoneMetadata* metadata = GetMetadataForRegion(*it); - if (metadata->has_leading_digits()) { - scoped_ptr<reg_exp::RegularExpressionInput> number( - reg_exp::CreateRegularExpressionInput(national_number.c_str())); - if (number->ConsumeRegExp(metadata->leading_digits(), true, NULL, NULL)) { - *region_code = *it; - return; - } - } else if (GetNumberTypeHelper(national_number, *metadata) != UNKNOWN) { - *region_code = *it; - return; - } - } - *region_code = "ZZ"; -} - -int PhoneNumberUtil::GetCountryCodeForRegion(const string& region_code) const { - if (!IsValidRegionCode(region_code)) { - logger->Info("Invalid or unknown country code provided."); - return 0; - } - const PhoneMetadata* metadata = GetMetadataForRegion(region_code); - if (!metadata) { - logger->Error("Unsupported country code provided."); - return 0; - } - return metadata->country_code(); -} - -// Gets a valid fixed-line number for the specified region_code. Returns false -// if the country was unknown or if no number exists. -bool PhoneNumberUtil::GetExampleNumber(const string& region_code, - PhoneNumber* number) const { - DCHECK(number); - return GetExampleNumberForType(region_code, - FIXED_LINE, - number); -} - -// Gets a valid number for the specified region_code and type. Returns false if -// the country was unknown or if no number exists. -bool PhoneNumberUtil::GetExampleNumberForType( - const string& region_code, - PhoneNumberUtil::PhoneNumberType type, - PhoneNumber* number) const { - DCHECK(number); - const PhoneMetadata* region_metadata = GetMetadataForRegion(region_code); - const PhoneNumberDesc* description = - GetNumberDescByType(*region_metadata, type); - if (description && description->has_example_number()) { - return (Parse(description->example_number(), - region_code, - number) == NO_PARSING_ERROR); - } - return false; -} - -PhoneNumberUtil::ErrorType PhoneNumberUtil::Parse(const string& number_to_parse, - const string& default_region, - PhoneNumber* number) const { - DCHECK(number); - return ParseHelper(number_to_parse, default_region, false, true, number); -} - -PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseAndKeepRawInput( - const string& number_to_parse, - const string& default_region, - PhoneNumber* number) const { - DCHECK(number); - return ParseHelper(number_to_parse, default_region, true, true, number); -} - -// Checks to see that the region code used is valid, or if it is not valid, that -// the number to parse starts with a + symbol so that we can attempt to infer -// the country from the number. Returns false if it cannot use the region -// provided and the region cannot be inferred. -bool PhoneNumberUtil::CheckRegionForParsing( - const string& number_to_parse, - const string& default_region) const { - if (!IsValidRegionCode(default_region) && !number_to_parse.empty()) { - scoped_ptr<reg_exp::RegularExpressionInput> number_as_string_piece( - reg_exp::CreateRegularExpressionInput(number_to_parse.c_str())); - if (!plus_chars_pattern->Consume(number_as_string_piece.get(), - true, NULL, NULL)) { - return false; - } - } - return true; -} - -PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseHelper( - const string& number_to_parse, - const string& default_region, - bool keep_raw_input, - bool check_region, - PhoneNumber* phone_number) const { - DCHECK(phone_number); - // Extract a possible number from the string passed in (this strips leading - // characters that could not be the start of a phone number.) - string national_number; - ExtractPossibleNumber(number_to_parse, &national_number); - if (!IsViablePhoneNumber(national_number)) { - logger->Debug("The string supplied did not seem to be a phone number."); - return NOT_A_NUMBER; - } - - if (check_region && - !CheckRegionForParsing(national_number, default_region)) { - logger->Info("Missing or invalid default country."); - return INVALID_COUNTRY_CODE_ERROR; - } - PhoneNumber temp_number; - if (keep_raw_input) { - temp_number.set_raw_input(number_to_parse); - } - // Attempt to parse extension first, since it doesn't require country-specific - // data and we want to have the non-normalised number here. - string extension; - MaybeStripExtension(&national_number, &extension); - if (!extension.empty()) { - temp_number.set_extension(extension); - } - const PhoneMetadata* country_metadata = GetMetadataForRegion(default_region); - // Check to see if the number is given in international format so we know - // whether this number is from the default country or not. - string normalized_national_number(national_number); - ErrorType country_code_error = - MaybeExtractCountryCode(country_metadata, keep_raw_input, - &normalized_national_number, &temp_number); - int country_code = temp_number.country_code(); - if (country_code_error != NO_PARSING_ERROR) { - return country_code_error; - } - if (country_code != 0) { - string phone_number_region; - GetRegionCodeForCountryCode(country_code, &phone_number_region); - if (phone_number_region != default_region) { - country_metadata = GetMetadataForRegion(phone_number_region); - } - } else if (country_metadata) { - // If no extracted country calling code, use the region supplied instead. - // Note that the national number was already normalized by - // MaybeExtractCountryCode. - country_code = country_metadata->country_code(); - } - if (normalized_national_number.length() < kMinLengthForNsn) { - logger->Debug("The string supplied is too short to be a phone number."); - return TOO_SHORT_NSN; - } - if (country_metadata) { - string* carrier_code = keep_raw_input ? - temp_number.mutable_preferred_domestic_carrier_code() : NULL; - MaybeStripNationalPrefixAndCarrierCode(*country_metadata, - &normalized_national_number, - carrier_code); - } - size_t normalized_national_number_length = - normalized_national_number.length(); - if (normalized_national_number_length < kMinLengthForNsn) { - logger->Debug("The string supplied is too short to be a phone number."); - return TOO_SHORT_NSN; - } - if (normalized_national_number_length > kMaxLengthForNsn) { - logger->Debug("The string supplied is too long to be a phone number."); - return TOO_LONG_NSN; - } - temp_number.set_country_code(country_code); - if (country_metadata && - country_metadata->leading_zero_possible() && - normalized_national_number[0] == '0') { - temp_number.set_italian_leading_zero(true); - } - uint64 number_as_int; - safe_strtou64(normalized_national_number, &number_as_int); - temp_number.set_national_number(number_as_int); - phone_number->MergeFrom(temp_number); - return NO_PARSING_ERROR; -} - -// Attempts to extract a possible number from the string passed in. This -// currently strips all leading characters that could not be used to start a -// phone number. Characters that can be used to start a phone number are -// defined in the valid_start_char_pattern. If none of these characters are -// found in the number passed in, an empty string is returned. This function -// also attempts to strip off any alternative extensions or endings if two or -// more are present, such as in the case of: (530) 583-6985 x302/x2303. The -// second extension here makes this actually two phone numbers, (530) 583-6985 -// x302 and (530) 583-6985 x2303. We remove the second extension so that the -// first number is parsed correctly. -// static -void PhoneNumberUtil::ExtractPossibleNumber(const string& number, - string* extracted_number) { - DCHECK(extracted_number); - - UnicodeText number_as_unicode; - number_as_unicode.PointToUTF8(number.data(), number.size()); - char current_char[5]; - int len; - UnicodeText::const_iterator it; - for (it = number_as_unicode.begin(); it != number_as_unicode.end(); ++it) { - len = it.get_utf8(current_char); - current_char[len] = '\0'; - if (valid_start_char_pattern->Match(current_char, true, NULL)) { - break; - } - } - - if (it == number_as_unicode.end()) { - // No valid start character was found. extracted_number should be set to - // empty string. - extracted_number->assign(""); - return; - } - - UnicodeText::const_reverse_iterator reverse_it(number_as_unicode.end()); - for (; reverse_it.base() != it; ++reverse_it) { - len = reverse_it.get_utf8(current_char); - current_char[len] = '\0'; - if (!unwanted_end_char_pattern->Match(current_char, true, NULL)) { - break; - } - } - - if (reverse_it.base() == it) { - extracted_number->assign(""); - return; - } - - extracted_number->assign(UnicodeText::UTF8Substring(it, reverse_it.base())); - - logger->Debug("After stripping starting and trailing characters," - " left with: " + *extracted_number); - - // Now remove any extra numbers at the end. - capture_up_to_second_number_start_pattern->Match(extracted_number->c_str(), - false, - extracted_number); -} - -bool PhoneNumberUtil::IsPossibleNumber(const PhoneNumber& number) const { - return IsPossibleNumberWithReason(number) == IS_POSSIBLE; -} - -bool PhoneNumberUtil::IsPossibleNumberForString( - const string& number, - const string& region_dialing_from) const { - PhoneNumber number_proto; - if (Parse(number, region_dialing_from, &number_proto) == NO_PARSING_ERROR) { - return IsPossibleNumber(number_proto); - } else { - return false; - } -} - -PhoneNumberUtil::ValidationResult PhoneNumberUtil::IsPossibleNumberWithReason( - const PhoneNumber& number) const { - string national_number; - GetNationalSignificantNumber(number, &national_number); - int country_code = number.country_code(); - // Note: For Russian Fed and NANPA numbers, we just use the rules from the - // default region (US or Russia) since the GetRegionCodeForNumber will not - // work if the number is possible but not valid. This would need to be - // revisited if the possible number pattern ever differed between various - // regions within those plans. - string region_code; - GetRegionCodeForCountryCode(country_code, ®ion_code); - if (!HasValidRegionCode(region_code, country_code, national_number)) { - return INVALID_COUNTRY_CODE; - } - const PhoneNumberDesc& general_num_desc = - GetMetadataForRegion(region_code)->general_desc(); - // Handling case of numbers with no metadata. - if (!general_num_desc.has_national_number_pattern()) { - size_t number_length = national_number.length(); - if (number_length < kMinLengthForNsn) { - return TOO_SHORT; - } else if (number_length > kMaxLengthForNsn) { - return TOO_LONG; - } else { - return IS_POSSIBLE; - } - } - scoped_ptr<reg_exp::RegularExpression> possible_number_pattern( - reg_exp::CreateRegularExpression( - StrCat("(", general_num_desc.possible_number_pattern(), ")").c_str())); - return TestNumberLengthAgainstPattern(possible_number_pattern.get(), - national_number); -} - -bool PhoneNumberUtil::TruncateTooLongNumber(PhoneNumber* number) const { - if (IsValidNumber(*number)) { - return true; - } - PhoneNumber number_copy(*number); - uint64 national_number = number->national_number(); - do { - national_number /= 10; - number_copy.set_national_number(national_number); - if (IsPossibleNumberWithReason(number_copy) == TOO_SHORT || - national_number == 0) { - return false; - } - } while (!IsValidNumber(number_copy)); - number->set_national_number(national_number); - return true; -} - -PhoneNumberUtil::PhoneNumberType PhoneNumberUtil::GetNumberType( - const PhoneNumber& number) const { - string region_code; - GetRegionCodeForNumber(number, ®ion_code); - if (!IsValidRegionCode(region_code)) { - return UNKNOWN; - } - string national_significant_number; - GetNationalSignificantNumber(number, &national_significant_number); - return GetNumberTypeHelper(national_significant_number, - *GetMetadataForRegion(region_code)); -} - -bool PhoneNumberUtil::IsValidNumber(const PhoneNumber& number) const { - string region_code; - GetRegionCodeForNumber(number, ®ion_code); - return IsValidRegionCode(region_code) && - IsValidNumberForRegion(number, region_code); -} - -bool PhoneNumberUtil::IsValidNumberForRegion(const PhoneNumber& number, - const string& region_code) const { - if (number.country_code() != GetCountryCodeForRegion(region_code)) { - return false; - } - const PhoneMetadata* metadata = GetMetadataForRegion(region_code); - const PhoneNumberDesc& general_desc = metadata->general_desc(); - string national_number; - GetNationalSignificantNumber(number, &national_number); - - // For regions where we don't have metadata for PhoneNumberDesc, we treat - // any number passed in as a valid number if its national significant number - // is between the minimum and maximum lengths defined by ITU for a national - // significant number. - if (!general_desc.has_national_number_pattern()) { - logger->Info("Validating number with incomplete metadata."); - size_t number_length = national_number.length(); - return number_length > kMinLengthForNsn && - number_length <= kMaxLengthForNsn; - } - return GetNumberTypeHelper(national_number, *metadata) != UNKNOWN; -} - -bool PhoneNumberUtil::IsLeadingZeroPossible(int country_calling_code) const { - string region_code; - GetRegionCodeForCountryCode(country_calling_code, ®ion_code); - const PhoneMetadata* main_metadata_for_calling_code = - GetMetadataForRegion(region_code); - if (!main_metadata_for_calling_code) return false; - return main_metadata_for_calling_code->leading_zero_possible(); -} - -void PhoneNumberUtil::GetNationalSignificantNumber( - const PhoneNumber& number, - string* national_number) const { - // The leading zero in the national (significant) number of an Italian phone - // number has a special meaning. Unlike the rest of the world, it indicates - // the number is a landline number. There have been plans to migrate landline - // numbers to start with the digit two since December 2000, but it has not yet - // happened. - // See http://en.wikipedia.org/wiki/%2B39 for more details. - // Other regions such as Cote d'Ivoire and Gabon use this for their mobile - // numbers. - DCHECK(national_number); - StrAppend(national_number, - (IsLeadingZeroPossible(number.country_code()) && - number.has_italian_leading_zero() && - number.italian_leading_zero()) - ? "0" - : ""); - StrAppend(national_number, number.national_number()); -} - -int PhoneNumberUtil::GetLengthOfGeographicalAreaCode( - const PhoneNumber& number) const { - string region_code; - GetRegionCodeForNumber(number, ®ion_code); - if (!IsValidRegionCode(region_code)) { - return 0; - } - const PhoneMetadata* metadata = GetMetadataForRegion(region_code); - DCHECK(metadata); - if (!metadata->has_national_prefix()) { - return 0; - } - - string national_significant_number; - GetNationalSignificantNumber(number, &national_significant_number); - PhoneNumberType type = GetNumberTypeHelper(national_significant_number, - *metadata); - // Most numbers other than the two types below have to be dialled in full. - if (type != FIXED_LINE && type != FIXED_LINE_OR_MOBILE) { - return 0; - } - - return GetLengthOfNationalDestinationCode(number); -} - -int PhoneNumberUtil::GetLengthOfNationalDestinationCode( - const PhoneNumber& number) const { - PhoneNumber copied_proto(number); - if (number.has_extension()) { - // Clear the extension so it's not included when formatting. - copied_proto.clear_extension(); - } - - string formatted_number; - Format(copied_proto, INTERNATIONAL, &formatted_number); - scoped_ptr<reg_exp::RegularExpressionInput> i18n_number( - reg_exp::CreateRegularExpressionInput(formatted_number.c_str())); - string digit_group; - string ndc; - string third_group; - for (int i = 0; i < 3; ++i) { - if (!capturing_ascii_digits_pattern->Consume(i18n_number.get(), - false, - &digit_group, - NULL)) { - // We should find at least three groups. - return 0; - } - if (i == 1) { - ndc = digit_group; - } else if (i == 2) { - third_group = digit_group; - } - } - string region_code; - GetRegionCodeForNumber(number, ®ion_code); - if (region_code == "AR" && - GetNumberType(number) == MOBILE) { - // Argentinian mobile numbers, when formatted in the international format, - // are in the form of +54 9 NDC XXXX.... As a result, we take the length of - // the third group (NDC) and add 1 for the digit 9, which also forms part of - // the national significant number. - return third_group.size() + 1; - } - return ndc.size(); -} - -// static -void PhoneNumberUtil::NormalizeDigitsOnly(string* number) { - DCHECK(number); - // Delete everything that isn't valid digits. - static scoped_ptr<reg_exp::RegularExpression> invalid_digits_pattern( - reg_exp::CreateRegularExpression(StrCat("[^", kValidDigits, - "]").c_str())); - static const char *empty = ""; - invalid_digits_pattern->Replace(number, true, empty); - // Normalize all decimal digits to ASCII digits. - UParseError error; - icu::ErrorCode status; - - scoped_ptr<icu::Transliterator> transliterator( - icu::Transliterator::createFromRules( - "NormalizeDecimalDigits", - "[[:nv=0:]-[0]-[:^nt=de:]]>0;" - "[[:nv=1:]-[1]-[:^nt=de:]]>1;" - "[[:nv=2:]-[2]-[:^nt=de:]]>2;" - "[[:nv=3:]-[3]-[:^nt=de:]]>3;" - "[[:nv=4:]-[4]-[:^nt=de:]]>4;" - "[[:nv=5:]-[5]-[:^nt=de:]]>5;" - "[[:nv=6:]-[6]-[:^nt=de:]]>6;" - "[[:nv=7:]-[7]-[:^nt=de:]]>7;" - "[[:nv=8:]-[8]-[:^nt=de:]]>8;" - "[[:nv=9:]-[9]-[:^nt=de:]]>9;", - UTRANS_FORWARD, - error, - status - ) - ); - if (!status.isSuccess()) { - logger->Error("Error creating ICU Transliterator"); - return; - } - icu::UnicodeString utf16(icu::UnicodeString::fromUTF8(number->c_str())); - transliterator->transliterate(utf16); - number->clear(); - utf16.toUTF8String(*number); -} - -bool PhoneNumberUtil::IsAlphaNumber(const string& number) const { - if (!IsViablePhoneNumber(number)) { - // Number is too short, or doesn't match the basic phone number pattern. - return false; - } - // Copy the number, since we are going to try and strip the extension from it. - string number_copy(number); - string extension; - MaybeStripExtension(&number_copy, &extension); - return valid_alpha_phone_pattern->Match(number_copy.c_str(), true, NULL); -} - -void PhoneNumberUtil::ConvertAlphaCharactersInNumber(string* number) const { - DCHECK(number); - NormalizeHelper(*all_normalization_mappings, false, number); -} - -// Normalizes a string of characters representing a phone number. This performs -// the following conversions: -// - Wide-ascii digits are converted to normal ASCII (European) digits. -// - Letters are converted to their numeric representation on a telephone -// keypad. The keypad used here is the one defined in ITU Recommendation -// E.161. This is only done if there are 3 or more letters in the number, to -// lessen the risk that such letters are typos - otherwise alpha characters -// are stripped. -// - Punctuation is stripped. -// - Arabic-Indic numerals are converted to European numerals. -void PhoneNumberUtil::Normalize(string* number) const { - DCHECK(number); - if (valid_alpha_phone_pattern->Match(number->c_str(), false, NULL)) { - NormalizeHelper(*all_normalization_mappings, true, number); - } - NormalizeDigitsOnly(number); -} - -// Checks to see if the string of characters could possibly be a phone number at -// all. At the moment, checks to see that the string begins with at least 3 -// digits, ignoring any punctuation commonly found in phone numbers. This -// method does not require the number to be normalized in advance - but does -// assume that leading non-number symbols have been removed, such as by the -// method ExtractPossibleNumber. -// static -bool PhoneNumberUtil::IsViablePhoneNumber(const string& number) { - if (number.length() < kMinLengthForNsn) { - logger->Debug("Number too short to be viable:" + number); - return false; - } - return valid_phone_number_pattern->Match(number.c_str(), true, NULL); -} - -// Strips any international prefix (such as +, 00, 011) present in the number -// provided, normalizes the resulting number, and indicates if an international -// prefix was present. -// -// possible_idd_prefix represents the international direct dialing prefix from -// the region we think this number may be dialed in. -// Returns true if an international dialing prefix could be removed from the -// number, otherwise false if the number did not seem to be in international -// format. -PhoneNumber::CountryCodeSource -PhoneNumberUtil::MaybeStripInternationalPrefixAndNormalize( - const string& possible_idd_prefix, - string* number) const { - DCHECK(number); - if (number->empty()) { - return PhoneNumber::FROM_DEFAULT_COUNTRY; - } - scoped_ptr<reg_exp::RegularExpressionInput> number_string_piece( - reg_exp::CreateRegularExpressionInput(number->c_str())); - if (plus_chars_pattern->Consume(number_string_piece.get(), true, - NULL, NULL)) { - number->assign(number_string_piece->ToString()); - // Can now normalize the rest of the number since we've consumed the "+" - // sign at the start. - Normalize(number); - return PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN; - } - // Attempt to parse the first digits as an international prefix. - scoped_ptr<reg_exp::RegularExpression> idd_pattern( - reg_exp::CreateRegularExpression(possible_idd_prefix.c_str())); - if (ParsePrefixAsIdd(idd_pattern.get(), number)) { - Normalize(number); - return PhoneNumber::FROM_NUMBER_WITH_IDD; - } - // If still not found, then try and normalize the number and then try again. - // This shouldn't be done before, since non-numeric characters (+ and ~) may - // legally be in the international prefix. - Normalize(number); - return ParsePrefixAsIdd(idd_pattern.get(), number) - ? PhoneNumber::FROM_NUMBER_WITH_IDD - : PhoneNumber::FROM_DEFAULT_COUNTRY; -} - -// Strips any national prefix (such as 0, 1) present in the number provided. -// The number passed in should be the normalized telephone number that we wish -// to strip any national dialing prefix from. The metadata should be for the -// region that we think this number is from. -// static -void PhoneNumberUtil::MaybeStripNationalPrefixAndCarrierCode( - const PhoneMetadata& metadata, - string* number, - string* carrier_code) { - DCHECK(number); - string carrier_code_temp; - const string& possible_national_prefix = - metadata.national_prefix_for_parsing(); - if (number->empty() || possible_national_prefix.empty()) { - // Early return for numbers of zero length or with no national prefix - // possible. - return; - } - // We use two copies here since Consume modifies the phone number, and if the - // first if-clause fails the number will already be changed. - scoped_ptr<reg_exp::RegularExpressionInput> number_copy( - reg_exp::CreateRegularExpressionInput(number->c_str())); - scoped_ptr<reg_exp::RegularExpressionInput> number_copy_without_transform( - reg_exp::CreateRegularExpressionInput(number->c_str())); - - string number_string_copy(*number); - string captured_part_of_prefix; - scoped_ptr<reg_exp::RegularExpression> national_number_rule( - reg_exp::CreateRegularExpression( - metadata.general_desc().national_number_pattern().c_str())); - // Attempt to parse the first digits as a national prefix. We make a - // copy so that we can revert to the original string if necessary. - const string& transform_rule = metadata.national_prefix_transform_rule(); - if (!transform_rule.empty() && - (number_copy->ConsumeRegExp(possible_national_prefix, true, - &carrier_code_temp, - &captured_part_of_prefix) || - number_copy->ConsumeRegExp(possible_national_prefix, true, - &captured_part_of_prefix, NULL)) && - !captured_part_of_prefix.empty()) { - string re2_transform_rule(transform_rule); - TransformRegularExpressionToRE2Syntax(&re2_transform_rule); - // If this succeeded, then we must have had a transform rule and there must - // have been some part of the prefix that we captured. - // We make the transformation and check that the resultant number is viable. - // If so, replace the number and return. - scoped_ptr<reg_exp::RegularExpression> possible_national_prefix_rule( - reg_exp::CreateRegularExpression(possible_national_prefix.c_str())); - possible_national_prefix_rule->Replace(&number_string_copy, false, - re2_transform_rule.c_str()); - if (national_number_rule->Match(number_string_copy.c_str(), true, NULL)) { - number->assign(number_string_copy); - if (carrier_code) { - carrier_code->assign(carrier_code_temp); - } - } - } else if (number_copy_without_transform->ConsumeRegExp( - possible_national_prefix, true, &carrier_code_temp, NULL) || - number_copy_without_transform->ConsumeRegExp( - possible_national_prefix, true, NULL, NULL)) { - logger->Debug("Parsed the first digits as a national prefix."); - string unconsumed_part(number_copy_without_transform->ToString()); - // If captured_part_of_prefix is empty, this implies nothing was captured by - // the capturing groups in possible_national_prefix; therefore, no - // transformation is necessary, and we just remove the national prefix. - if (national_number_rule->Match(unconsumed_part.c_str(), true, NULL)) { - number->assign(unconsumed_part); - if (carrier_code) { - carrier_code->assign(carrier_code_temp); - } - } - } else { - logger->Debug("The first digits did not match the national prefix."); - } -} - -// Strips any extension (as in, the part of the number dialled after the call is -// connected, usually indicated with extn, ext, x or similar) from the end of -// the number, and returns it. The number passed in should be non-normalized. -// static -bool PhoneNumberUtil::MaybeStripExtension(string* number, string* extension) { - DCHECK(number); - DCHECK(extension); - // There are three extension capturing groups in the regular expression. - string possible_extension_one; - string possible_extension_two; - string possible_extension_three; - string number_copy(*number); - scoped_ptr<reg_exp::RegularExpressionInput> number_copy_regex_input( - reg_exp::CreateRegularExpressionInput(number_copy.c_str())); - if (extn_pattern->Consume(number_copy_regex_input.get(), false, - &possible_extension_one, &possible_extension_two, - &possible_extension_three)) { - // Replace the extensions in the original string here. - extn_pattern->Replace(&number_copy, false, ""); - logger->Debug("Found an extension. Possible extension one: " - + possible_extension_one - + ". Possible extension two: " + possible_extension_two - + ". Remaining number: " + number_copy); - // If we find a potential extension, and the number preceding this is a - // viable number, we assume it is an extension. - if ((!possible_extension_one.empty() || !possible_extension_two.empty() || - !possible_extension_three.empty()) && - IsViablePhoneNumber(number_copy)) { - number->assign(number_copy); - if (!possible_extension_one.empty()) { - extension->assign(possible_extension_one); - } else if (!possible_extension_two.empty()) { - extension->assign(possible_extension_two); - } else if (!possible_extension_three.empty()) { - extension->assign(possible_extension_three); - } - return true; - } - } - return false; -} - -// Extracts country calling code from national_number, and returns it. It -// assumes that the leading plus sign or IDD has already been removed. Returns 0 -// if national_number doesn't start with a valid country calling code, and -// leaves national_number unmodified. Assumes the national_number is at least 3 -// characters long. -int PhoneNumberUtil::ExtractCountryCode(string* national_number) const { - int potential_country_code; - for (int i = 1; i <= 3; ++i) { - safe_strto32(national_number->substr(0, i), &potential_country_code); - string region_code; - GetRegionCodeForCountryCode(potential_country_code, ®ion_code); - if (region_code != "ZZ") { - national_number->erase(0, i); - return potential_country_code; - } - } - return 0; -} - -// Tries to extract a country calling code from a number. Country calling codes -// are extracted in the following ways: -// - by stripping the international dialing prefix of the region the person -// is dialing from, if this is present in the number, and looking at the next -// digits -// - by stripping the '+' sign if present and then looking at the next digits -// - by comparing the start of the number and the country calling code of the -// default region. If the number is not considered possible for the numbering -// plan of the default region initially, but starts with the country calling -// code of this region, validation will be reattempted after stripping this -// country calling code. If this number is considered a possible number, then -// the first digits will be considered the country calling code and removed as -// such. -// -// Returns NO_PARSING_ERROR if a country calling code was successfully -// extracted or none was present, or the appropriate error otherwise, such as -// if a + was present but it was not followed by a valid country calling code. -// If NO_PARSING_ERROR is returned, the national_number without the country -// calling code is populated, and the country_code passed in is set to the -// country calling code if found, otherwise to 0. -PhoneNumberUtil::ErrorType PhoneNumberUtil::MaybeExtractCountryCode( - const PhoneMetadata* default_region_metadata, - bool keep_raw_input, - string* national_number, - PhoneNumber* phone_number) const { - DCHECK(national_number); - DCHECK(phone_number); - // Set the default prefix to be something that will never match if there is no - // default region. - string possible_country_idd_prefix = default_region_metadata - ? default_region_metadata->international_prefix() - : "NonMatch"; - PhoneNumber::CountryCodeSource country_code_source = - MaybeStripInternationalPrefixAndNormalize(possible_country_idd_prefix, - national_number); - if (keep_raw_input) { - phone_number->set_country_code_source(country_code_source); - } - if (country_code_source != PhoneNumber::FROM_DEFAULT_COUNTRY) { - if (national_number->length() < kMinLengthForNsn) { - logger->Debug("Phone number had an IDD, but after this was not " - "long enough to be a viable phone number."); - return TOO_SHORT_AFTER_IDD; - } - int potential_country_code = ExtractCountryCode(national_number); - if (potential_country_code != 0) { - phone_number->set_country_code(potential_country_code); - return NO_PARSING_ERROR; - } - // If this fails, they must be using a strange country calling code that we - // don't recognize, or that doesn't exist. - return INVALID_COUNTRY_CODE_ERROR; - } else if (default_region_metadata) { - // Check to see if the number starts with the country calling code for the - // default region. If so, we remove the country calling code, and do some - // checks on the validity of the number before and after. - int default_country_code = default_region_metadata->country_code(); - string default_country_code_string(SimpleItoa(default_country_code)); - logger->Debug("Possible country code: " + default_country_code_string); - string potential_national_number; - if (TryStripPrefixString(*national_number, - default_country_code_string, - &potential_national_number)) { - const PhoneNumberDesc& general_num_desc = - default_region_metadata->general_desc(); - scoped_ptr<reg_exp::RegularExpression> valid_number_pattern( - reg_exp::CreateRegularExpression( - general_num_desc.national_number_pattern().c_str())); - - MaybeStripNationalPrefixAndCarrierCode(*default_region_metadata, - &potential_national_number, - NULL); - logger->Debug("Number without country code prefix: " - + potential_national_number); - string extracted_number; - scoped_ptr<reg_exp::RegularExpression> possible_number_pattern( - reg_exp::CreateRegularExpression( - StrCat("(", general_num_desc.possible_number_pattern(), - ")").c_str())); - // If the number was not valid before but is valid now, or if it was too - // long before, we consider the number with the country code stripped to - // be a better result and keep that instead. - if ((!valid_number_pattern->Match(national_number->c_str(), - true, NULL) && - valid_number_pattern->Match(potential_national_number.c_str(), - true, NULL)) || - TestNumberLengthAgainstPattern(possible_number_pattern.get(), - *national_number) - == TOO_LONG) { - national_number->assign(potential_national_number); - if (keep_raw_input) { - phone_number->set_country_code_source( - PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN); - } - phone_number->set_country_code(default_country_code); - return NO_PARSING_ERROR; - } - } - } - // No country calling code present. Set the country_code to 0. - phone_number->set_country_code(0); - return NO_PARSING_ERROR; -} - -PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatch( - const PhoneNumber& first_number_in, - const PhoneNumber& second_number_in) const { - // Make copies of the phone number so that the numbers passed in are not - // edited. - PhoneNumber first_number(first_number_in); - PhoneNumber second_number(second_number_in); - // First clear raw_input and country_code_source and - // preferred_domestic_carrier_code fields and any empty-string extensions so - // that we can use the proto-buffer equality method. - first_number.clear_raw_input(); - first_number.clear_country_code_source(); - first_number.clear_preferred_domestic_carrier_code(); - second_number.clear_raw_input(); - second_number.clear_country_code_source(); - second_number.clear_preferred_domestic_carrier_code(); - if (first_number.extension().empty()) { - first_number.clear_extension(); - } - if (second_number.extension().empty()) { - second_number.clear_extension(); - } - // Early exit if both had extensions and these are different. - if (first_number.has_extension() && second_number.has_extension() && - first_number.extension() != second_number.extension()) { - return NO_MATCH; - } - int first_number_country_code = first_number.country_code(); - int second_number_country_code = second_number.country_code(); - // Both had country calling code specified. - if (first_number_country_code != 0 && second_number_country_code != 0) { - if (ExactlySameAs(first_number, second_number)) { - return EXACT_MATCH; - } else if (first_number_country_code == second_number_country_code && - IsNationalNumberSuffixOfTheOther(first_number, second_number)) { - // A SHORT_NSN_MATCH occurs if there is a difference because of the - // presence or absence of an 'Italian leading zero', the presence or - // absence of an extension, or one NSN being a shorter variant of the - // other. - return SHORT_NSN_MATCH; - } - // This is not a match. - return NO_MATCH; - } - // Checks cases where one or both country calling codes were not specified. To - // make equality checks easier, we first set the country_code fields to be - // equal. - first_number.set_country_code(second_number_country_code); - // If all else was the same, then this is an NSN_MATCH. - if (ExactlySameAs(first_number, second_number)) { - return NSN_MATCH; - } - if (IsNationalNumberSuffixOfTheOther(first_number, second_number)) { - return SHORT_NSN_MATCH; - } - return NO_MATCH; -} - -PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithTwoStrings( - const string& first_number, - const string& second_number) const { - PhoneNumber first_number_as_proto; - ErrorType error_type = - Parse(first_number, "ZZ", &first_number_as_proto); - if (error_type == NO_PARSING_ERROR) { - return IsNumberMatchWithOneString(first_number_as_proto, second_number); - } - if (error_type == INVALID_COUNTRY_CODE_ERROR) { - PhoneNumber second_number_as_proto; - ErrorType error_type = Parse(second_number, "ZZ", - &second_number_as_proto); - if (error_type == NO_PARSING_ERROR) { - return IsNumberMatchWithOneString(second_number_as_proto, first_number); - } - if (error_type == INVALID_COUNTRY_CODE_ERROR) { - error_type = ParseHelper(first_number, "ZZ", false, false, - &first_number_as_proto); - if (error_type == NO_PARSING_ERROR) { - error_type = ParseHelper(second_number, "ZZ", false, false, - &second_number_as_proto); - if (error_type == NO_PARSING_ERROR) { - return IsNumberMatch(first_number_as_proto, second_number_as_proto); - } - } - } - } - // One or more of the phone numbers we are trying to match is not a viable - // phone number. - return INVALID_NUMBER; -} - -PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithOneString( - const PhoneNumber& first_number, - const string& second_number) const { - // First see if the second number has an implicit country calling code, by - // attempting to parse it. - PhoneNumber second_number_as_proto; - ErrorType error_type = - Parse(second_number, "ZZ", &second_number_as_proto); - if (error_type == NO_PARSING_ERROR) { - return IsNumberMatch(first_number, second_number_as_proto); - } - if (error_type == INVALID_COUNTRY_CODE_ERROR) { - // The second number has no country calling code. EXACT_MATCH is no longer - // possible. We parse it as if the region was the same as that for the - // first number, and if EXACT_MATCH is returned, we replace this with - // NSN_MATCH. - string first_number_region; - GetRegionCodeForCountryCode(first_number.country_code(), - &first_number_region); - if (first_number_region != "ZZ") { - PhoneNumber second_number_with_first_number_region; - Parse(second_number, first_number_region, - &second_number_with_first_number_region); - MatchType match = IsNumberMatch(first_number, - second_number_with_first_number_region); - if (match == EXACT_MATCH) { - return NSN_MATCH; - } - return match; - } else { - // If the first number didn't have a valid country calling code, then we - // parse the second number without one as well. - error_type = ParseHelper(second_number, "ZZ", false, false, - &second_number_as_proto); - if (error_type == NO_PARSING_ERROR) { - return IsNumberMatch(first_number, second_number_as_proto); - } - } - } - // One or more of the phone numbers we are trying to match is not a viable - // phone number. - return INVALID_NUMBER; -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/phonenumberutil.h b/third_party/libphonenumber/cpp/src/phonenumberutil.h deleted file mode 100644 index 6a766df..0000000 --- a/third_party/libphonenumber/cpp/src/phonenumberutil.h +++ /dev/null @@ -1,678 +0,0 @@ -// Copyright (C) 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Utility for international phone numbers. -// -// Author: Shaopeng Jia -// Open-sourced by: Philippe Liard - -#ifndef I18N_PHONENUMBERS_PHONENUMBERUTIL_H_ -#define I18N_PHONENUMBERS_PHONENUMBERUTIL_H_ - -#include <list> -#include <map> -#include <set> -#include <string> -#include <utility> -#include <vector> - -#include "base/scoped_ptr.h" -#include "base/singleton.h" -#include "phonenumber.pb.h" - -class TelephoneNumber; - -namespace i18n { -namespace phonenumbers { - -using std::list; -using std::map; -using std::pair; -using std::set; -using std::string; -using std::vector; - -using google::protobuf::RepeatedPtrField; - -class LoggerAdapter; -class NumberFormat; -class PhoneMetadata; -class PhoneMetadataCollection; -class PhoneNumber; - -class PhoneNumberUtil { - friend struct DefaultSingletonTraits<PhoneNumberUtil>; - friend class PhoneNumberUtilTest; - public: - // INTERNATIONAL and NATIONAL formats are consistent with the definition - // in ITU-T Recommendation E. 123. For example, the number of the Google - // Zürich office will be written as "+41 44 668 1800" in INTERNATIONAL - // format, and as "044 668 1800" in NATIONAL format. E164 format is as per - // INTERNATIONAL format but with no formatting applied e.g. +41446681800. - // RFC3966 is as per INTERNATIONAL format, but with all spaces and other - // separating symbols replaced with a hyphen, and with any phone number - // extension appended with ";ext=". - enum PhoneNumberFormat { - E164, - INTERNATIONAL, - NATIONAL, - RFC3966 - }; - - // Type of phone numbers. - enum PhoneNumberType { - FIXED_LINE, - MOBILE, - // In some regions (e.g. the USA), it is impossible to distinguish between - // fixed-line and mobile numbers by looking at the phone number itself. - FIXED_LINE_OR_MOBILE, - // Freephone lines - TOLL_FREE, - PREMIUM_RATE, - // The cost of this call is shared between the caller and the recipient, and - // is hence typically less than PREMIUM_RATE calls. See - // http://en.wikipedia.org/wiki/Shared_Cost_Service for more information. - SHARED_COST, - // Voice over IP numbers. This includes TSoIP (Telephony Service over IP). - VOIP, - // A personal number is associated with a particular person, and may be - // routed to either a MOBILE or FIXED_LINE number. Some more information can - // be found here: http://en.wikipedia.org/wiki/Personal_Numbers - PERSONAL_NUMBER, - PAGER, - // Used for "Universal Access Numbers" or "Company Numbers". They may be - // further routed to specific offices, but allow one number to be used for a - // company. - UAN, - // A phone number is of type UNKNOWN when it does not fit any of the known - // patterns for a specific region. - UNKNOWN - }; - - // Types of phone number matches. See detailed description beside the - // IsNumberMatch() method. - enum MatchType { - INVALID_NUMBER, // NOT_A_NUMBER in the java version. - NO_MATCH, - SHORT_NSN_MATCH, - NSN_MATCH, - EXACT_MATCH, - }; - - enum ErrorType { - NO_PARSING_ERROR, - INVALID_COUNTRY_CODE_ERROR, // INVALID_COUNTRY_CODE in the java version. - NOT_A_NUMBER, - TOO_SHORT_AFTER_IDD, - TOO_SHORT_NSN, - TOO_LONG_NSN, // TOO_LONG in the java version. - }; - - // Possible outcomes when testing if a PhoneNumber is possible. - enum ValidationResult { - IS_POSSIBLE, - INVALID_COUNTRY_CODE, - TOO_SHORT, - TOO_LONG, - }; - - // Gets a PhoneNumberUtil instance to carry out international phone number - // formatting, parsing, or validation. The instance is loaded with phone - // number metadata for a number of most commonly used regions, as specified by - // DEFAULT_REGIONS_. - // - // The PhoneNumberUtil is implemented as a singleton. Therefore, calling - // getInstance multiple times will only result in one instance being created. - static PhoneNumberUtil* GetInstance(); - - // Returns true if the number is a valid vanity (alpha) number such as 800 - // MICROSOFT. A valid vanity number will start with at least 3 digits and will - // have three or more alpha characters. This does not do region-specific - // checks - to work out if this number is actually valid for a region, it - // should be parsed and methods such as IsPossibleNumberWithReason or - // IsValidNumber should be used. - bool IsAlphaNumber(const string& number) const; - - // Converts all alpha characters in a number to their respective digits on - // a keypad, but retains existing formatting. - void ConvertAlphaCharactersInNumber(string* number) const; - - // Normalizes a string of characters representing a phone number. This - // converts wide-ascii and arabic-indic numerals to European numerals, and - // strips punctuation and alpha characters. - static void NormalizeDigitsOnly(string* number); - - // Gets the national significant number of a phone number. Note a national - // significant number doesn't contain a national prefix or any formatting. - void GetNationalSignificantNumber(const PhoneNumber& number, - string* national_significant_num) const; - - // Gets the length of the geographical area code from the PhoneNumber object - // passed in, so that clients could use it to split a national significant - // number into geographical area code and subscriber number. It works in such - // a way that the resultant subscriber number should be diallable, at least on - // some devices. An example of how this could be used: - // - // const PhoneNumberUtil& phone_util(PhoneNumberUtil::GetInstance()); - // PhoneNumber number; - // phone_util.Parse("16502530000", "US", &number); - // string national_significant_number; - // phone_util.GetNationalSignificantNumber(number, - // &national_significant_number); - // string area_code; - // string subscriber_number; - // - // int area_code_length = phone_util.GetLengthOfGeographicalAreaCode(number); - // if (area_code_length > 0) { - // area_code = national_significant_number.substring(0, area_code_length); - // subscriber_number = national_significant_number.substring( - // area_code_length, string::npos); - // else { - // area_code = ""; - // subscriber_number = national_significant_number; - // } - // - // N.B.: area code is a very ambiguous concept, so the I18N team generally - // recommends against using it for most purposes, but recommends using the - // more general national_number instead. Read the following carefully before - // deciding to use this method: - // - // - geographical area codes change over time, and this method honors those - // changes; therefore, it doesn't guarantee the stability of the result it - // produces. - // - subscriber numbers may not be diallable from all devices (notably mobile - // devices, which typically requires the full national_number to be dialled - // in most regions). - // - most non-geographical numbers have no area codes. - // - some geographical numbers have no area codes. - int GetLengthOfGeographicalAreaCode(const PhoneNumber& number) const; - - // Gets the length of the national destination code (NDC) from the PhoneNumber - // object passed in, so that clients could use it to split a national - // significant number into NDC and subscriber number. The NDC of a phone - // number is normally the first group of digit(s) right after the country - // calling code when the number is formatted in the international format, if - // there is a subscriber number part that follows. An example of how this - // could be used: - // - // const PhoneNumberUtil& phone_util(PhoneNumberUtil::GetInstance()); - // PhoneNumber number; - // phone_util.Parse("16502530000", "US", &number); - // string national_significant_number; - // phone_util.GetNationalSignificantNumber(number, - // &national_significant_number); - // string national_destination_code; - // string subscriber_number; - // - // int national_destination_code_length = - // phone_util.GetLengthOfGeographicalAreaCode(number); - // if (national_destination_code_length > 0) { - // national_destination_code = national_significant_number.substring( - // 0, national_destination_code_length); - // subscriber_number = national_significant_number.substring( - // national_destination_code_length, string::npos); - // else { - // national_destination_code = ""; - // subscriber_number = national_significant_number; - // } - // - // Refer to the unittests to see the difference between this function and - // GetLengthOfGeographicalAreaCode(). - int GetLengthOfNationalDestinationCode(const PhoneNumber& number) const; - - // Formats a phone number in the specified format using default rules. Note - // that this does not promise to produce a phone number that the user can - // dial from where they are - although we do format in either NATIONAL or - // INTERNATIONAL format depending on what the client asks for, we do not - // currently support a more abbreviated format, such as for users in the - // same area who could potentially dial the number without area code. - void Format(const PhoneNumber& number, - PhoneNumberFormat number_format, - string* formatted_number) const; - - // Formats a phone number in the specified format using client-defined - // formatting rules. - void FormatByPattern( - const PhoneNumber& number, - PhoneNumberFormat number_format, - const RepeatedPtrField<NumberFormat>& user_defined_formats, - string* formatted_number) const; - - // Formats a phone number in national format for dialing using the carrier as - // specified in the carrier_code. The carrier_code will always be used - // regardless of whether the phone number already has a preferred domestic - // carrier code stored. If carrier_code contains an empty string, return the - // number in national format without any carrier code. - void FormatNationalNumberWithCarrierCode(const PhoneNumber& number, - const string& carrier_code, - string* formatted_number) const; - - // Formats a phone number in national format for dialing using the carrier as - // specified in the preferred_domestic_carrier_code field of the PhoneNumber - // object passed in. If that is missing, use the fallback_carrier_code passed - // in instead. If there is no preferred_domestic_carrier_code, and the - // fallback_carrier_code contains an empty string, return the number in - // national format without any carrier code. - // - // Use FormatNationalNumberWithCarrierCode instead if the carrier code passed - // in should take precedence over the number's preferred_domestic_carrier_code - // when formatting. - void FormatNationalNumberWithPreferredCarrierCode( - const PhoneNumber& number, - const string& fallback_carrier_code, - string* formatted_number) const; - - // Formats a phone number for out-of-country dialing purposes. - // - // Note this function takes care of the case for calling inside of NANPA - // and between Russia and Kazakhstan (who share the same country calling - // code). In those cases, no international prefix is used. For regions which - // have multiple international prefixes, the number in its INTERNATIONAL - // format will be returned instead. - void FormatOutOfCountryCallingNumber( - const PhoneNumber& number, - const string& calling_from, - string* formatted_number) const; - - // Formats a phone number using the original phone number format that the - // number is parsed from. The original format is embedded in the - // country_code_source field of the PhoneNumber object passed in. If such - // information is missing, the number will be formatted into the NATIONAL - // format by default. - void FormatInOriginalFormat(const PhoneNumber& number, - const string& region_calling_from, - string* formatted_number) const; - - // Formats a phone number for out-of-country dialing purposes. - // - // Note that in this version, if the number was entered originally using alpha - // characters and this version of the number is stored in raw_input, this - // representation of the number will be used rather than the digit - // representation. Grouping information, as specified by characters such as - // "-" and " ", will be retained. - // - // Caveats: - // 1) This will not produce good results if the country calling code is both - // present in the raw input _and_ is the start of the national number. This - // is not a problem in the regions which typically use alpha numbers. - // 2) This will also not produce good results if the raw input has any - // grouping information within the first three digits of the national number, - // and if the function needs to strip preceding digits/words in the raw input - // before these digits. Normally people group the first three digits together - // so this is not a huge problem - and will be fixed if it proves to be so. - void FormatOutOfCountryKeepingAlphaChars( - const PhoneNumber& number, - const string& calling_from, - string* formatted_number) const; - - // Attempts to extract a valid number from a phone number that is too long to - // be valid, and resets the PhoneNumber object passed in to that valid - // version. If no valid number could be extracted, the PhoneNumber object - // passed in will not be modified. It returns true if a valid phone number can - // be successfully extracted. - bool TruncateTooLongNumber(PhoneNumber* number) const; - - // Gets the type of a phone number. - PhoneNumberType GetNumberType(const PhoneNumber& number) const; - - // Tests whether a phone number matches a valid pattern. Note this doesn't - // verify the number is actually in use, which is impossible to tell by just - // looking at a number itself. - bool IsValidNumber(const PhoneNumber& number) const; - - // Tests whether a phone number is valid for a certain region. Note this - // doesn't verify the number is actually in use, which is impossible to tell - // by just looking at a number itself. If the country calling code is not the - // same as the country calling code for the region, this immediately exits - // with false. After this, the specific number pattern rules for the region - // are examined. - // This is useful for determining for example whether a particular number is - // valid for Canada, rather than just a valid NANPA number. - // - // The region_code parameter is an ISO 3166-1 two-letter country code string. - bool IsValidNumberForRegion( - const PhoneNumber& number, - const string& region_code) const; - - // Returns the region where a phone number is from. This could be used for - // geo-coding at the region level. - // The country/region is returned as an ISO 3166-1 two-letter country code - // string. - void GetRegionCodeForNumber(const PhoneNumber& number, - string* region_code) const; - - // Returns the country calling code for a specific region. For example, - // this would be 1 for the United States, and 64 for New Zealand. - // - // The region_code parameter is an ISO 3166-1 two-letter country code string. - int GetCountryCodeForRegion(const string& region_code) const; - - // Returns the region code that matches the specific country code. Note that - // it is possible that several regions share the same country code (e.g. US - // and Canada), and in that case, only one of the regions (normally the one - // with the largest population) is returned. - // - // The region code is returned as an ISO 3166-1 two-letter country code - // string. - void GetRegionCodeForCountryCode(int country_code, string* region_code) const; - - // Checks if this is a region under the North American Numbering Plan - // Administration (NANPA). - // - // The region_code parameter is an ISO 3166-1 two-letter country code string. - bool IsNANPACountry(const string& region_code) const; - - // Checks whether a phone number is a possible number. It provides a more - // lenient check than IsValidNumber() in the following sense: - // 1. It only checks the length of phone numbers. In particular, it doesn't - // check starting digits of the number. - // 2. It doesn't attempt to figure out the type of the number, but uses - // general rules which applies to all types of phone numbers in a - // region. Therefore, it is much faster than IsValidNumber(). - // 3. For fixed line numbers, many regions have the concept of area code, - // which together with subscriber number constitute the national - // significant number. It is sometimes okay to dial the subscriber - // number only when dialing in the same area. This function will return - // true if the subscriber-number-only version is passed in. On the other - // hand, because IsValidNumber() validates using information on both - // starting digits (for fixed line numbers, that would most likely be - // area codes) and length (obviously includes the length of area codes - // for fixed line numbers), it will return false for the - // subscriber-number-only version. - ValidationResult IsPossibleNumberWithReason(const PhoneNumber& number) const; - - // Convenience wrapper around IsPossibleNumberWithReason. Instead of returning - // the reason for failure, this method returns a boolean value. - bool IsPossibleNumber(const PhoneNumber& number) const; - - // Checks whether a phone number is a possible number given a number in the - // form of a string, and the country where the number could be dialed from. - // It provides a more lenient check than IsValidNumber(). See - // IsPossibleNumber(const PhoneNumber& number) for details. - // - // This method first parses the number, then invokes - // IsPossibleNumber(const PhoneNumber& number) with the resultant PhoneNumber - // object. - // - // region_dialing_from represents the region that we are expecting the number - // to be dialed from. Note this is different from the region where the number - // belongs. For example, the number +1 650 253 0000 is a number that belongs - // to US. When written in this form, it could be dialed from any region. When - // it is written as 00 1 650 253 0000, it could be dialed from any region - // which uses an international dialling prefix of 00. When it is written as - // 650 253 0000, it could only be dialed from within the US, and when written - // as 253 0000, it could only be dialed from within a smaller area in the US - // (Mountain View, CA, to be more specific). - // - // The country_dialing_from parameter is an ISO 3166-1 two-letter country code - // string. - bool IsPossibleNumberForString( - const string& number, - const string& country_dialing_from) const; - - // Gets a valid fixed-line number for the specified region. Returns false if - // the region was unknown. - bool GetExampleNumber(const string& region_code, - PhoneNumber* number) const; - - // Gets a valid number of the specified type for the specified region. - // Returns false if the region was unknown or if no example number of that - // type could be found. - // - // The region_code parameter is an ISO 3166-1 two-letter country code string. - bool GetExampleNumberForType(const string& region_code, - PhoneNumberType type, - PhoneNumber* number) const; - - // Parses a string and returns it in proto buffer format. This method will - // return an error like INVALID_COUNTRY_CODE if the number is not considered - // to be a possible number, and NO_PARSING_ERROR if it parsed correctly. Note - // that validation of whether the number is actually a valid number for a - // particular region is not performed. This can be done separately with - // IsValidNumber(). - // - // default_region represents the country that we are expecting the number to - // be from. This is only used if the number being parsed is not written in - // international format. The country_code for the number in this case would be - // stored as that of the default country supplied. If the number is guaranteed - // to start with a '+' followed by the country calling code, then - // "ZZ" can be supplied. - // - // The default_country parameter is an ISO 3166-1 two-letter country code - // string. - ErrorType Parse(const string& number_to_parse, - const string& default_country, - PhoneNumber* number) const; - // Parses a string and returns it in proto buffer format. This method differs - // from Parse() in that it always populates the raw_input field of the - // protocol buffer with number_to_parse as well as the country_code_source - // field. - // - // The default_country parameter is an ISO 3166-1 two-letter country code - // string. - ErrorType ParseAndKeepRawInput(const string& number_to_parse, - const string& default_country, - PhoneNumber* number) const; - - // Takes two phone numbers and compares them for equality. - // - // Returns EXACT_MATCH if the country calling code, NSN, presence of a leading - // zero for Italian numbers and any extension present are the same. - // Returns NSN_MATCH if either or both has no country calling code specified, - // and the NSNs and extensions are the same. - // Returns SHORT_NSN_MATCH if either or both has no country calling code - // specified, or the country calling code specified is the same, and one NSN - // could be a shorter version of the other number. This includes the case - // where one has an extension specified, and the other does not. - // Returns NO_MATCH otherwise. - // For example, the numbers +1 345 657 1234 and 657 1234 are a - // SHORT_NSN_MATCH. The numbers +1 345 657 1234 and 345 657 are a NO_MATCH. - MatchType IsNumberMatch(const PhoneNumber& first_number, - const PhoneNumber& second_number) const; - - // Takes two phone numbers as strings and compares them for equality. This - // is a convenience wrapper for IsNumberMatch(PhoneNumber firstNumber, - // PhoneNumber secondNumber). No default region is known. - // Returns INVALID_NUMBER if either number cannot be parsed into a phone - // number. - MatchType IsNumberMatchWithTwoStrings(const string& first_number, - const string& second_number) const; - - // Takes two phone numbers and compares them for equality. This is a - // convenience wrapper for IsNumberMatch(PhoneNumber firstNumber, - // PhoneNumber secondNumber). No default region is known. - // Returns INVALID_NUMBER if second_number cannot be parsed into a phone - // number. - MatchType IsNumberMatchWithOneString(const PhoneNumber& first_number, - const string& second_number) const; - - // Implement this 'interface' to override the way metadatas are fetched. - // Useful for testing injecting stable metadatas. - class MetadataProvider { - public: - virtual ~MetadataProvider() {} - - // Returns a pair containing a pointer to the data and its size - virtual pair<const void*, unsigned> operator()() = 0; - }; - - // Override the default logging system. The provided adapter destruction is - // handled by this class (don't delete it). - static void SetLoggerAdapter(LoggerAdapter* logger_adapter); - - friend bool ConvertFromTelephoneNumberProto( - const TelephoneNumber& proto_to_convert, - PhoneNumber* new_proto); - friend bool ConvertToTelephoneNumberProto(const PhoneNumber& proto_to_convert, - TelephoneNumber* resulting_proto); - - protected: - // Check whether the country_calling_code is from a country whose national - // significant number could contain a leading zero. An example of such a - // country is Italy. - bool IsLeadingZeroPossible(int country_calling_code) const; - - private: - typedef pair<int, list<string>*> IntRegionsPair; - - // The minimum and maximum length of the national significant number. - static const size_t kMinLengthForNsn = 3; - static const size_t kMaxLengthForNsn = 15; - - // A mapping from a country calling code to a region code which denotes the - // region represented by that country calling code. Note countries under - // NANPA share the country calling code 1 and Russia and Kazakhstan share the - // country calling code 7. Under this map, 1 is mapped to region code "US" and - // 7 is mapped to region code "RU". This is implemented as a sorted vector to - // achieve better performance. - // - // Region codes are ISO 3166-1 two-letter country code strings. - scoped_ptr<vector<IntRegionsPair> > country_calling_code_to_region_code_map_; - - struct CompareFirst { - bool operator()(const IntRegionsPair& p1, - const IntRegionsPair& p2) const { - return p1.first < p2.first; - } - }; - - // The set of regions that share country calling code 1. - scoped_ptr<set<string> > nanpa_regions_; - static const int kNanpaCountryCode = 1; - - // A mapping from a region code to a PhoneMetadata for that region. - // Region codes are ISO 3166-1 two-letter country code strings. - scoped_ptr<map<string, PhoneMetadata> > region_to_metadata_map_; - - bool LoadMetadata(PhoneMetadataCollection* metadata, - MetadataProvider& provider); - - explicit PhoneNumberUtil(MetadataProvider* provider = 0); - ~PhoneNumberUtil(); - - // Gets all the supported regions. - void GetSupportedRegions(set<string>* regions) const; - - // Returns the national dialling prefix for a specific region. For example, - // this would be 1 for the United States, and 0 for New Zealand. Set - // stripNonDigits to true to strip symbols like "~" (which indicates a wait - // for a dialling tone) from the prefix returned. If no national prefix is - // present, we return an empty string. - // - // Set strip_non_digits to true to strip non-digits from the national - // dialling prefix. - void GetNddPrefixForRegion(const string& region_code, - bool strip_non_digits, - string* national_prefix) const; - - // Helper function to check region code is not unknown or null. - // - // The region_code parameter is an ISO 3166-1 two-letter country code string. - bool IsValidRegionCode(const string& region_code) const; - - // Helper function to check region code is not unknown. The - // country_calling_code and number supplied is used only for the resultant log - // message. - // - // The region_code parameter is an ISO 3166-1 two-letter country code string. - bool HasValidRegionCode(const string& region_code, - int country_code, - const string& number) const; - - // The region_code parameter is an ISO 3166-1 two-letter country code string. - const i18n::phonenumbers::PhoneMetadata* GetMetadataForRegion( - const string& region_code) const; - - void GetRegionCodesForCountryCallingCode( - int country_calling_code, - list<string>* region_codes) const; - - // Simple wrapper of FormatNationalNumberWithCarrier for the common case of - // no carrier code. - // - // The region_code parameter is an ISO 3166-1 two-letter country code string. - void FormatNationalNumber(const string& number, - const string& region_code, - PhoneNumberFormat number_format, - string* formatted_number) const; - - // The region_code parameter is an ISO 3166-1 two-letter country code string. - void FormatNationalNumberWithCarrier(const string& number, - const string& region_code, - PhoneNumberFormat number_format, - const string& carrier_code, - string* formatted_number) const; - - // The region_code parameter is an ISO 3166-1 two-letter country code string. - void MaybeGetFormattedExtension( - const PhoneNumber& number, - const string& region_code, - PhoneNumberFormat number_format, - string* extension) const; - - // The region_code parameter is an ISO 3166-1 two-letter country code string. - void FormatExtension(const string& extension_digits, - const string& region_code, - string* extension) const; - - void GetRegionCodeForNumberFromRegionList( - const PhoneNumber& number, - const list<string>& region_codes, - string* region_code) const; - - void Normalize(string* number) const; - PhoneNumber::CountryCodeSource MaybeStripInternationalPrefixAndNormalize( - const string& possible_idd_prefix, - string* number) const; - - static void MaybeStripNationalPrefixAndCarrierCode( - const PhoneMetadata& metadata, - string* number, - string* carrier_code); - - static void ExtractPossibleNumber(const string& number, - string* extracted_number); - - static bool IsViablePhoneNumber(const string& number); - - static bool MaybeStripExtension(string* number, string* extension); - - int ExtractCountryCode(string* national_number) const; - ErrorType MaybeExtractCountryCode( - const PhoneMetadata* default_region_metadata, - bool keepRawInput, - string* national_number, - PhoneNumber* phone_number) const; - - // The default_region parameter is an ISO 3166-1 two-letter country code - // string. - bool CheckRegionForParsing( - const string& number_to_parse, - const string& default_region) const; - - // The default_region parameter is an ISO 3166-1 two-letter country code - // string. - ErrorType ParseHelper(const string& number_to_parse, - const string& default_region, - bool keep_raw_input, - bool check_region, - PhoneNumber* phone_number) const; - - DISALLOW_COPY_AND_ASSIGN(PhoneNumberUtil); -}; - -} // namespace phonenumbers -} // namespace i18n - -#endif // I18N_PHONENUMBERS_PHONENUMBERUTIL_H_ diff --git a/third_party/libphonenumber/cpp/src/phonenumberutil_test.cc b/third_party/libphonenumber/cpp/src/phonenumberutil_test.cc deleted file mode 100644 index 3ef3fa7..0000000 --- a/third_party/libphonenumber/cpp/src/phonenumberutil_test.cc +++ /dev/null @@ -1,2866 +0,0 @@ -// Copyright (C) 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Shaopeng Jia -// Author: Lara Rennie -// Open-sourced by: Philippe Liard - -#include <iostream> -#include <set> -#include <string> - -#include <gtest/gtest.h> - -#include "phonemetadata.pb.h" -#include "phonenumber.h" -#include "phonenumber.pb.h" -#include "phonenumberutil.h" -#include "regexp_adapter.h" -#include "test_metadata.h" - -namespace i18n { -namespace phonenumbers { - -using std::endl; -using std::make_pair; -using std::ostream; - -using google::protobuf::RepeatedPtrField; - -namespace { - -// Class containing string constants of region codes for easier testing. -class RegionCode { - public: - static const string& AD() { - static const string s = "AD"; - return s; - } - - static const string& AO() { - static const string s = "AO"; - return s; - } - - static const string& AR() { - static const string s = "AR"; - return s; - } - - static const string& AU() { - static const string s = "AU"; - return s; - } - - static const string& BS() { - static const string s = "BS"; - return s; - } - - static const string& CN() { - static const string s = "CN"; - return s; - } - - static const string& CS() { - static const string s = "CS"; - return s; - } - - static const string& DE() { - static const string s = "DE"; - return s; - } - - static const string& GB() { - static const string s = "GB"; - return s; - } - - static const string& IT() { - static const string s = "IT"; - return s; - } - - static const string& KR() { - static const string s = "KR"; - return s; - } - - static const string& MX() { - static const string s = "MX"; - return s; - } - - static const string& NZ() { - static const string s = "NZ"; - return s; - } - - static const string& PL() { - static const string s = "PL"; - return s; - } - - static const string& RE() { - static const string s = "RE"; - return s; - } - - static const string& SG() { - static const string s = "SG"; - return s; - } - - static const string& US() { - static const string s = "US"; - return s; - } - - static const string& YT() { - static const string s = "YT"; - return s; - } - - // Official code for the unknown region. - static const string& ZZ() { - static const string s = "ZZ"; - return s; - } -}; - -} // namespace - -class TestMetadataProvider : public PhoneNumberUtil::MetadataProvider { - public: - virtual ~TestMetadataProvider() {} - - pair<const void*, unsigned> operator()() { - return make_pair(test_metadata_get(), test_metadata_size()); - } -}; - -class PhoneNumberUtilTest : public testing::Test { - protected: - PhoneNumberUtilTest() : phone_util_(&provider_) {} - - // Wrapper functions for private functions that we want to test. - const PhoneMetadata* GetPhoneMetadata(const string& region_code) const { - return phone_util_.GetMetadataForRegion(region_code); - } - - void GetSupportedRegions(set<string>* regions) { - phone_util_.GetSupportedRegions(regions); - } - - void ExtractPossibleNumber(const string& number, - string* extracted_number) const { - PhoneNumberUtil::ExtractPossibleNumber(number, extracted_number); - } - - bool IsViablePhoneNumber(const string& number) const { - return PhoneNumberUtil::IsViablePhoneNumber(number); - } - - void Normalize(string* number) const { - phone_util_.Normalize(number); - } - - bool IsLeadingZeroPossible(int country_calling_code) const { - return phone_util_.IsLeadingZeroPossible(country_calling_code); - } - - PhoneNumber::CountryCodeSource MaybeStripInternationalPrefixAndNormalize( - const string& possible_idd_prefix, - string* number) const { - return phone_util_.MaybeStripInternationalPrefixAndNormalize( - possible_idd_prefix, - number); - } - - void MaybeStripNationalPrefixAndCarrierCode(const PhoneMetadata& metadata, - string* number, - string* carrier_code) const { - PhoneNumberUtil::MaybeStripNationalPrefixAndCarrierCode(metadata, number, - carrier_code); - } - - bool MaybeStripExtension(string* number, string* extension) const { - return PhoneNumberUtil::MaybeStripExtension(number, extension); - } - - PhoneNumberUtil::ErrorType MaybeExtractCountryCode( - const PhoneMetadata* default_region_metadata, - bool keep_raw_input, - string* national_number, - PhoneNumber* phone_number) const { - return phone_util_.MaybeExtractCountryCode(default_region_metadata, - keep_raw_input, - national_number, - phone_number); - } - - void GetNddPrefixForRegion(const string& region, - bool strip_non_digits, - string* ndd_prefix) const { - // For testing purposes, we check this is empty first. - ndd_prefix->clear(); - phone_util_.GetNddPrefixForRegion(region, strip_non_digits, ndd_prefix); - } - - static bool Equals(const PhoneNumberDesc& expected_number, - const PhoneNumberDesc& actual_number) { - return ExactlySameAs(expected_number, actual_number); - } - - TestMetadataProvider provider_; - PhoneNumberUtil phone_util_; -}; - -// Provides PhoneNumber comparison operators to support the use of EXPECT_EQ and -// EXPECT_NE in the unittests. -bool operator==(const PhoneNumber& number1, const PhoneNumber& number2) { - return ExactlySameAs(number1, number2); -} - -bool operator!=(const PhoneNumber& number1, const PhoneNumber& number2) { - return !(number1 == number2); -} - -// Needed by Google Test to display errors. -ostream& operator<<(ostream& os, const PhoneNumber& number) { - os << endl - << "country_code: " << number.country_code() << endl - << "national_number: " << number.national_number() << endl; - if (number.has_extension()) { - os << "extension: " << number.extension() << endl; - } - if (number.has_italian_leading_zero()) { - os << "italian_leading_zero: " << number.italian_leading_zero() << endl; - } - if (number.has_raw_input()) { - os << "raw_input: " << number.raw_input() << endl; - } - if (number.has_country_code_source()) { - os << "country_code_source: " << number.country_code_source() << endl; - } - if (number.has_preferred_domestic_carrier_code()) { - os << "preferred_domestic_carrier_code: " - << number.preferred_domestic_carrier_code() << endl; - } - return os; -} - -TEST_F(PhoneNumberUtilTest, GetSupportedRegions) { - set<string> regions; - - GetSupportedRegions(®ions); - EXPECT_GT(regions.size(), 0U); -} - -TEST_F(PhoneNumberUtilTest, GetInstanceLoadUSMetadata) { - const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::US()); - EXPECT_EQ("US", metadata->id()); - EXPECT_EQ(1, metadata->country_code()); - EXPECT_EQ("011", metadata->international_prefix()); - EXPECT_TRUE(metadata->has_national_prefix()); - ASSERT_EQ(2, metadata->number_format_size()); - EXPECT_EQ("(\\d{3})(\\d{3})(\\d{4})", - metadata->number_format(0).pattern()); - EXPECT_EQ("$1 $2 $3", metadata->number_format(0).format()); - EXPECT_EQ("[13-9]\\d{9}|2[0-35-9]\\d{8}", - metadata->general_desc().national_number_pattern()); - EXPECT_EQ("\\d{7}(?:\\d{3})?", - metadata->general_desc().possible_number_pattern()); - EXPECT_TRUE(Equals(metadata->general_desc(), metadata->fixed_line())); - EXPECT_EQ("\\d{10}", metadata->toll_free().possible_number_pattern()); - EXPECT_EQ("900\\d{7}", metadata->premium_rate().national_number_pattern()); - // No shared-cost data is available, so it should be initialised to "NA". - EXPECT_EQ("NA", metadata->shared_cost().national_number_pattern()); - EXPECT_EQ("NA", metadata->shared_cost().possible_number_pattern()); -} - -TEST_F(PhoneNumberUtilTest, GetInstanceLoadDEMetadata) { - const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::DE()); - EXPECT_EQ("DE", metadata->id()); - EXPECT_EQ(49, metadata->country_code()); - EXPECT_EQ("00", metadata->international_prefix()); - EXPECT_EQ("0", metadata->national_prefix()); - ASSERT_EQ(6, metadata->number_format_size()); - EXPECT_EQ(1, metadata->number_format(5).leading_digits_pattern_size()); - EXPECT_EQ("900", metadata->number_format(5).leading_digits_pattern(0)); - EXPECT_EQ("(\\d{3})(\\d{3,4})(\\d{4})", - metadata->number_format(5).pattern()); - EXPECT_EQ("$1 $2 $3", metadata->number_format(5).format()); - EXPECT_EQ("(?:[24-6]\\d{2}|3[03-9]\\d|[789](?:[1-9]\\d|0[2-9]))\\d{3,8}", - metadata->fixed_line().national_number_pattern()); - EXPECT_EQ("\\d{2,14}", metadata->fixed_line().possible_number_pattern()); - EXPECT_EQ("30123456", metadata->fixed_line().example_number()); - EXPECT_EQ("\\d{10}", metadata->toll_free().possible_number_pattern()); - EXPECT_EQ("900([135]\\d{6}|9\\d{7})", - metadata->premium_rate().national_number_pattern()); -} - -TEST_F(PhoneNumberUtilTest, GetInstanceLoadARMetadata) { - const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::AR()); - EXPECT_EQ("AR", metadata->id()); - EXPECT_EQ(54, metadata->country_code()); - EXPECT_EQ("00", metadata->international_prefix()); - EXPECT_EQ("0", metadata->national_prefix()); - EXPECT_EQ("0(?:(11|343|3715)15)?", metadata->national_prefix_for_parsing()); - EXPECT_EQ("9$1", metadata->national_prefix_transform_rule()); - ASSERT_EQ(5, metadata->number_format_size()); - EXPECT_EQ("$1 15 $2-$3", metadata->number_format(2).format()); - EXPECT_EQ("9(\\d{4})(\\d{2})(\\d{4})", metadata->number_format(3).pattern()); - EXPECT_EQ("(9)(\\d{4})(\\d{2})(\\d{4})", - metadata->intl_number_format(3).pattern()); - EXPECT_EQ("$1 $2 $3 $4", metadata->intl_number_format(3).format()); -} - -TEST_F(PhoneNumberUtilTest, GetNationalSignificantNumber) { - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(6502530000ULL); - string national_significant_number; - phone_util_.GetNationalSignificantNumber(number, - &national_significant_number); - EXPECT_EQ("6502530000", national_significant_number); - - // An Italian mobile number. - national_significant_number.clear(); - number.set_country_code(39); - number.set_national_number(312345678ULL); - phone_util_.GetNationalSignificantNumber(number, - &national_significant_number); - EXPECT_EQ("312345678", national_significant_number); - - // An Italian fixed line number. - national_significant_number.clear(); - number.set_country_code(39); - number.set_national_number(236618300ULL); - number.set_italian_leading_zero(true); - phone_util_.GetNationalSignificantNumber(number, - &national_significant_number); - EXPECT_EQ("0236618300", national_significant_number); -} - -TEST_F(PhoneNumberUtilTest, GetExampleNumber) { - PhoneNumber de_number; - de_number.set_country_code(49); - de_number.set_national_number(30123456ULL); - PhoneNumber test_number; - bool success = phone_util_.GetExampleNumber(RegionCode::DE(), &test_number); - EXPECT_TRUE(success); - EXPECT_EQ(de_number, test_number); - success = phone_util_.GetExampleNumberForType(RegionCode::DE(), - PhoneNumberUtil::FIXED_LINE, - &test_number); - EXPECT_TRUE(success); - EXPECT_EQ(de_number, test_number); - test_number.Clear(); - success = phone_util_.GetExampleNumberForType(RegionCode::DE(), - PhoneNumberUtil::MOBILE, - &test_number); - // Here we test that an example number was not returned, and that the number - // passed in was not modified. - EXPECT_FALSE(success); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - // For the US, the example number is placed under general description, and - // hence should be used for both fixed line and mobile, so neither of these - // should return null. - test_number.Clear(); - success = phone_util_.GetExampleNumberForType(RegionCode::US(), - PhoneNumberUtil::FIXED_LINE, - &test_number); - // Here we test that the call to get an example number succeeded, and that the - // number passed in was modified. - EXPECT_TRUE(success); - EXPECT_NE(PhoneNumber::default_instance(), test_number); - test_number.Clear(); - success = phone_util_.GetExampleNumberForType(RegionCode::US(), - PhoneNumberUtil::MOBILE, - &test_number); - EXPECT_TRUE(success); - EXPECT_NE(PhoneNumber::default_instance(), test_number); -} - -TEST_F(PhoneNumberUtilTest, FormatUSNumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(1); - test_number.set_national_number(6502530000ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("650 253 0000", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+1 650 253 0000", formatted_number); - - test_number.set_national_number(8002530000ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("800 253 0000", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+1 800 253 0000", formatted_number); - - test_number.set_national_number(9002530000ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("900 253 0000", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+1 900 253 0000", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::RFC3966, &formatted_number); - EXPECT_EQ("+1-900-253-0000", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatBSNumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(1); - test_number.set_national_number(2421234567ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("242 123 4567", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+1 242 123 4567", formatted_number); - - test_number.set_national_number(8002530000ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("800 253 0000", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+1 800 253 0000", formatted_number); - - test_number.set_national_number(9002530000ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("900 253 0000", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+1 900 253 0000", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatGBNumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(44); - test_number.set_national_number(2087389353ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("(020) 8738 9353", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+44 20 8738 9353", formatted_number); - - test_number.set_national_number(7912345678ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("(07912) 345 678", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+44 7912 345 678", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatDENumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(49); - test_number.set_national_number(301234ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("030/1234", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+49 30/1234", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::RFC3966, &formatted_number); - EXPECT_EQ("+49-30-1234", formatted_number); - - test_number.set_national_number(291123ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("0291 123", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+49 291 123", formatted_number); - - test_number.set_national_number(29112345678ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("0291 12345678", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+49 291 12345678", formatted_number); - - test_number.set_national_number(9123123ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("09123 123", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+49 9123 123", formatted_number); - - test_number.set_national_number(80212345ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("08021 2345", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+49 8021 2345", formatted_number); - - test_number.set_national_number(1234ULL); - // Note this number is correctly formatted without national prefix. Most of - // the numbers that are treated as invalid numbers by the library are short - // numbers, and they are usually not dialed with national prefix. - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("1234", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+49 1234", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatITNumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(39); - test_number.set_national_number(236618300ULL); - test_number.set_italian_leading_zero(true); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("02 3661 8300", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+39 02 3661 8300", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::E164, - &formatted_number); - EXPECT_EQ("+390236618300", formatted_number); - - test_number.set_national_number(345678901ULL); - test_number.set_italian_leading_zero(false); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("345 678 901", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+39 345 678 901", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::E164, - &formatted_number); - EXPECT_EQ("+39345678901", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatAUNumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(61); - test_number.set_national_number(236618300ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("02 3661 8300", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+61 2 3661 8300", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::E164, - &formatted_number); - EXPECT_EQ("+61236618300", formatted_number); - - test_number.set_national_number(1800123456ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("1800 123 456", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+61 1800 123 456", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::E164, - &formatted_number); - EXPECT_EQ("+611800123456", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatARNumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(54); - test_number.set_national_number(1187654321ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("011 8765-4321", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+54 11 8765-4321", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::E164, - &formatted_number); - EXPECT_EQ("+541187654321", formatted_number); - - test_number.set_national_number(91187654321ULL); - phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("011 15 8765-4321", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+54 9 11 8765 4321", formatted_number); - phone_util_.Format(test_number, PhoneNumberUtil::E164, - &formatted_number); - EXPECT_EQ("+5491187654321", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatOutOfCountryCallingNumber) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(1); - test_number.set_national_number(9002530000ULL); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::DE(), - &formatted_number); - EXPECT_EQ("00 1 900 253 0000", formatted_number); - - test_number.set_national_number(6502530000ULL); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::BS(), - &formatted_number); - EXPECT_EQ("1 650 253 0000", formatted_number); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::PL(), - &formatted_number); - EXPECT_EQ("0~0 1 650 253 0000", formatted_number); - - test_number.set_country_code(44); - test_number.set_national_number(7912345678ULL); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(), - &formatted_number); - EXPECT_EQ("011 44 7912 345 678", formatted_number); - - test_number.set_country_code(49); - test_number.set_national_number(1234ULL); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::GB(), - &formatted_number); - EXPECT_EQ("00 49 1234", formatted_number); - // Note this number is correctly formatted without national prefix. Most of - // the numbers that are treated as invalid numbers by the library are short - // numbers, and they are usually not dialed with national prefix. - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::DE(), - &formatted_number); - EXPECT_EQ("1234", formatted_number); - - test_number.set_country_code(39); - test_number.set_national_number(236618300ULL); - test_number.set_italian_leading_zero(true); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(), - &formatted_number); - EXPECT_EQ("011 39 02 3661 8300", formatted_number); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::IT(), - &formatted_number); - EXPECT_EQ("02 3661 8300", formatted_number); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::SG(), - &formatted_number); - EXPECT_EQ("+39 02 3661 8300", formatted_number); - - test_number.set_country_code(65); - test_number.set_national_number(94777892ULL); - test_number.set_italian_leading_zero(false); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::SG(), - &formatted_number); - EXPECT_EQ("9477 7892", formatted_number); - - test_number.set_country_code(54); - test_number.set_national_number(91187654321ULL); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(), - &formatted_number); - EXPECT_EQ("011 54 9 11 8765 4321", formatted_number); - - test_number.set_extension("1234"); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(), - &formatted_number); - EXPECT_EQ("011 54 9 11 8765 4321 ext. 1234", formatted_number); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::AU(), - &formatted_number); - EXPECT_EQ("0011 54 9 11 8765 4321 ext. 1234", formatted_number); - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::AR(), - &formatted_number); - EXPECT_EQ("011 15 8765-4321 ext. 1234", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatOutOfCountryWithPreferredIntlPrefix) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(39); - test_number.set_national_number(236618300ULL); - test_number.set_italian_leading_zero(true); - // This should use 0011, since that is the preferred international prefix - // (both 0011 and 0012 are accepted as possible international prefixes in our - // test metadta.) - phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::AU(), - &formatted_number); - EXPECT_EQ("0011 39 02 3661 8300", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatOutOfCountryKeepingAlphaChars) { - PhoneNumber alpha_numeric_number; - string formatted_number; - alpha_numeric_number.set_country_code(1); - alpha_numeric_number.set_national_number(8007493524ULL); - alpha_numeric_number.set_raw_input("1800 six-flag"); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - EXPECT_EQ("0011 1 800 SIX-FLAG", formatted_number); - - formatted_number.clear(); - alpha_numeric_number.set_raw_input("1-800-SIX-flag"); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - EXPECT_EQ("0011 1 800-SIX-FLAG", formatted_number); - - formatted_number.clear(); - alpha_numeric_number.set_raw_input("Call us from UK: 00 1 800 SIX-flag"); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - EXPECT_EQ("0011 1 800 SIX-FLAG", formatted_number); - - formatted_number.clear(); - alpha_numeric_number.set_raw_input("800 SIX-flag"); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - EXPECT_EQ("0011 1 800 SIX-FLAG", formatted_number); - - // Formatting from within the NANPA region. - formatted_number.clear(); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::US(), - &formatted_number); - EXPECT_EQ("1 800 SIX-FLAG", formatted_number); - formatted_number.clear(); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::BS(), - &formatted_number); - EXPECT_EQ("1 800 SIX-FLAG", formatted_number); - - // Testing that if the raw input doesn't exist, it is formatted using - // FormatOutOfCountryCallingNumber. - alpha_numeric_number.clear_raw_input(); - formatted_number.clear(); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::DE(), - &formatted_number); - EXPECT_EQ("00 1 800 749 3524", formatted_number); - - // Testing AU alpha number formatted from Australia. - alpha_numeric_number.set_country_code(61); - alpha_numeric_number.set_national_number(827493524ULL); - alpha_numeric_number.set_raw_input("+61 82749-FLAG"); - formatted_number.clear(); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - // This number should have the national prefix prefixed. - EXPECT_EQ("082749-FLAG", formatted_number); - - alpha_numeric_number.set_raw_input("082749-FLAG"); - formatted_number.clear(); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - EXPECT_EQ("082749-FLAG", formatted_number); - - alpha_numeric_number.set_national_number(18007493524ULL); - alpha_numeric_number.set_raw_input("1-800-SIX-flag"); - formatted_number.clear(); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - // This number should not have the national prefix prefixed, in accordance - // with the override for this specific formatting rule. - EXPECT_EQ("1-800-SIX-FLAG", formatted_number); - // The metadata should not be permanently changed, since we copied it before - // modifying patterns. Here we check this. - formatted_number.clear(); - alpha_numeric_number.set_national_number(1800749352ULL); - phone_util_.FormatOutOfCountryCallingNumber(alpha_numeric_number, - RegionCode::AU(), - &formatted_number); - EXPECT_EQ("1800 749 352", formatted_number); - - // Testing a country with multiple international prefixes. - formatted_number.clear(); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::SG(), - &formatted_number); - EXPECT_EQ("+61 1-800-SIX-FLAG", formatted_number); - - // Testing the case with an invalid country code. - formatted_number.clear(); - alpha_numeric_number.set_country_code(0); - alpha_numeric_number.set_national_number(18007493524ULL); - alpha_numeric_number.set_raw_input("1-800-SIX-flag"); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::DE(), - &formatted_number); - // Uses the raw input only. - EXPECT_EQ("1-800-SIX-flag", formatted_number); - - // Testing the case of an invalid alpha number. - formatted_number.clear(); - alpha_numeric_number.set_country_code(1); - alpha_numeric_number.set_national_number(80749ULL); - alpha_numeric_number.set_raw_input("180-SIX"); - phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number, - RegionCode::DE(), - &formatted_number); - // No country-code stripping can be done. - EXPECT_EQ("00 1 180-SIX", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatWithCarrierCode) { - // We only support this for AR in our test metadata. - PhoneNumber ar_number; - string formatted_number; - ar_number.set_country_code(54); - ar_number.set_national_number(91234125678ULL); - phone_util_.Format(ar_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("01234 12-5678", formatted_number); - // Test formatting with a carrier code. - phone_util_.FormatNationalNumberWithCarrierCode(ar_number, "15", - &formatted_number); - EXPECT_EQ("01234 15 12-5678", formatted_number); - phone_util_.FormatNationalNumberWithCarrierCode(ar_number, "", - &formatted_number); - EXPECT_EQ("01234 12-5678", formatted_number); - // Here the international rule is used, so no carrier code should be present. - phone_util_.Format(ar_number, PhoneNumberUtil::E164, &formatted_number); - EXPECT_EQ("+5491234125678", formatted_number); - // We don't support this for the US so there should be no change. - PhoneNumber us_number; - us_number.set_country_code(1); - us_number.set_national_number(4241231234ULL); - phone_util_.Format(us_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("424 123 1234", formatted_number); - phone_util_.FormatNationalNumberWithCarrierCode(us_number, "15", - &formatted_number); - EXPECT_EQ("424 123 1234", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatWithPreferredCarrierCode) { - // We only support this for AR in our test metadata. - PhoneNumber ar_number; - string formatted_number; - ar_number.set_country_code(54); - ar_number.set_national_number(91234125678ULL); - // Test formatting with no preferred carrier code stored in the number itself. - phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15", - &formatted_number); - EXPECT_EQ("01234 15 12-5678", formatted_number); - phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "", - &formatted_number); - EXPECT_EQ("01234 12-5678", formatted_number); - // Test formatting with preferred carrier code present. - ar_number.set_preferred_domestic_carrier_code("19"); - phone_util_.Format(ar_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("01234 12-5678", formatted_number); - phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15", - &formatted_number); - EXPECT_EQ("01234 19 12-5678", formatted_number); - phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "", - &formatted_number); - EXPECT_EQ("01234 19 12-5678", formatted_number); - // When the preferred_domestic_carrier_code is present (even when it contains - // an empty string), use it instead of the default carrier code passed in. - ar_number.set_preferred_domestic_carrier_code(""); - phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15", - &formatted_number); - EXPECT_EQ("01234 12-5678", formatted_number); - // We don't support this for the US so there should be no change. - PhoneNumber us_number; - us_number.set_country_code(1); - us_number.set_national_number(4241231234ULL); - us_number.set_preferred_domestic_carrier_code("99"); - phone_util_.Format(us_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("424 123 1234", formatted_number); - phone_util_.FormatNationalNumberWithPreferredCarrierCode(us_number, "15", - &formatted_number); - EXPECT_EQ("424 123 1234", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatByPattern) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(1); - test_number.set_national_number(6502530000ULL); - - RepeatedPtrField<NumberFormat> number_formats; - NumberFormat* number_format = number_formats.Add(); - number_format->set_pattern("(\\d{3})(\\d{3})(\\d{4})"); - number_format->set_format("($1) $2-$3"); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("(650) 253-0000", formatted_number); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("+1 (650) 253-0000", formatted_number); - - // $NP is set to '1' for the US. Here we check that for other NANPA countries - // the US rules are followed. - number_format->set_national_prefix_formatting_rule("$NP ($FG)"); - number_format->set_format("$1 $2-$3"); - test_number.set_country_code(1); - test_number.set_national_number(4168819999ULL); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("1 (416) 881-9999", formatted_number); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("+1 416 881-9999", formatted_number); - - test_number.set_country_code(39); - test_number.set_national_number(236618300ULL); - test_number.set_italian_leading_zero(true); - number_format->set_pattern("(\\d{2})(\\d{5})(\\d{3})"); - number_format->set_format("$1-$2 $3"); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("02-36618 300", formatted_number); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("+39 02-36618 300", formatted_number); - - test_number.set_country_code(44); - test_number.set_national_number(2012345678ULL); - test_number.set_italian_leading_zero(false); - number_format->set_national_prefix_formatting_rule("$NP$FG"); - number_format->set_pattern("(\\d{2})(\\d{4})(\\d{4})"); - number_format->set_format("$1 $2 $3"); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("020 1234 5678", formatted_number); - - number_format->set_national_prefix_formatting_rule("($NP$FG)"); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("(020) 1234 5678", formatted_number); - number_format->set_national_prefix_formatting_rule(""); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("20 1234 5678", formatted_number); - number_format->set_national_prefix_formatting_rule(""); - phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL, - number_formats, - &formatted_number); - EXPECT_EQ("+44 20 1234 5678", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatE164Number) { - PhoneNumber test_number; - string formatted_number; - test_number.set_country_code(1); - test_number.set_national_number(6502530000ULL); - phone_util_.Format(test_number, PhoneNumberUtil::E164, &formatted_number); - EXPECT_EQ("+16502530000", formatted_number); - - test_number.set_country_code(49); - test_number.set_national_number(301234ULL); - phone_util_.Format(test_number, PhoneNumberUtil::E164, &formatted_number); - EXPECT_EQ("+49301234", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, FormatNumberWithExtension) { - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(33316005ULL); - nz_number.set_extension("1234"); - string formatted_number; - // Uses default extension prefix: - phone_util_.Format(nz_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("03-331 6005 ext. 1234", formatted_number); - // Uses RFC 3966 syntax. - phone_util_.Format(nz_number, PhoneNumberUtil::RFC3966, &formatted_number); - EXPECT_EQ("+64-3-331-6005;ext=1234", formatted_number); - // Extension prefix overridden in the territory information for the US: - PhoneNumber us_number_with_extension; - us_number_with_extension.set_country_code(1); - us_number_with_extension.set_national_number(6502530000ULL); - us_number_with_extension.set_extension("4567"); - phone_util_.Format(us_number_with_extension, - PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("650 253 0000 extn. 4567", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, GetLengthOfGeographicalAreaCode) { - PhoneNumber number; - // Google MTV, which has area code "650". - number.set_country_code(1); - number.set_national_number(6502530000ULL); - EXPECT_EQ(3, phone_util_.GetLengthOfGeographicalAreaCode(number)); - - // A North America toll-free number, which has no area code. - number.set_country_code(1); - number.set_national_number(8002530000ULL); - EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number)); - - // An invalid US number (1 digit shorter), which has no area code. - number.set_country_code(1); - number.set_national_number(650253000ULL); - EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number)); - - // Google London, which has area code "20". - number.set_country_code(44); - number.set_national_number(2070313000ULL); - EXPECT_EQ(2, phone_util_.GetLengthOfGeographicalAreaCode(number)); - - // A UK mobile phone, which has no area code. - number.set_country_code(44); - number.set_national_number(7123456789ULL); - EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number)); - - // Google Buenos Aires, which has area code "11". - number.set_country_code(54); - number.set_national_number(1155303000ULL); - EXPECT_EQ(2, phone_util_.GetLengthOfGeographicalAreaCode(number)); - - // Google Sydney, which has area code "2". - number.set_country_code(61); - number.set_national_number(293744000ULL); - EXPECT_EQ(1, phone_util_.GetLengthOfGeographicalAreaCode(number)); - - // Google Singapore. Singapore has no area code and no national prefix. - number.set_country_code(65); - number.set_national_number(65218000ULL); - EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number)); -} - -TEST_F(PhoneNumberUtilTest, GetLengthOfNationalDestinationCode) { - PhoneNumber number; - // Google MTV, which has national destination code (NDC) "650". - number.set_country_code(1); - number.set_national_number(6502530000ULL); - EXPECT_EQ(3, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // A North America toll-free number, which has NDC "800". - number.set_country_code(1); - number.set_national_number(8002530000ULL); - EXPECT_EQ(3, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // Google London, which has NDC "20". - number.set_country_code(44); - number.set_national_number(2070313000ULL); - EXPECT_EQ(2, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // A UK mobile phone, which has NDC "7123" - number.set_country_code(44); - number.set_national_number(7123456789ULL); - EXPECT_EQ(4, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // Google Buenos Aires, which has NDC "11". - number.set_country_code(54); - number.set_national_number(1155303000ULL); - EXPECT_EQ(2, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // Google Sydney, which has NDC "2". - number.set_country_code(61); - number.set_national_number(293744000ULL); - EXPECT_EQ(1, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // Google Singapore. Singapore has NDC "6521". - number.set_country_code(65); - number.set_national_number(65218000ULL); - EXPECT_EQ(4, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // An invalid US number (1 digit shorter), which has no NDC. - number.set_country_code(1); - number.set_national_number(650253000ULL); - EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // A number containing an invalid country code, which shouldn't have any NDC. - number.set_country_code(123); - number.set_national_number(650253000ULL); - EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // A number that has only one group of digits after country code when - // formatted in the international format. - number.set_country_code(376); - number.set_national_number(12345ULL); - EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number)); - - // The same number above, but with an extension. - number.set_country_code(376); - number.set_national_number(12345ULL); - number.set_extension("321"); - EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number)); -} - -TEST_F(PhoneNumberUtilTest, ExtractPossibleNumber) { - // Removes preceding funky punctuation and letters but leaves the rest - // untouched. - string extracted_number; - ExtractPossibleNumber("Tel:0800-345-600", &extracted_number); - EXPECT_EQ("0800-345-600", extracted_number); - ExtractPossibleNumber("Tel:0800 FOR PIZZA", &extracted_number); - EXPECT_EQ("0800 FOR PIZZA", extracted_number); - - // Should not remove plus sign. - ExtractPossibleNumber("Tel:+800-345-600", &extracted_number); - EXPECT_EQ("+800-345-600", extracted_number); - // Should recognise wide digits as possible start values. - ExtractPossibleNumber("023", &extracted_number); - EXPECT_EQ("023", extracted_number); - // Dashes are not possible start values and should be removed. - ExtractPossibleNumber("Num-123", &extracted_number); - EXPECT_EQ("123", extracted_number); - // If not possible number present, return empty string. - ExtractPossibleNumber("Num-....", &extracted_number); - EXPECT_EQ("", extracted_number); - // Leading brackets are stripped - these are not used when parsing. - ExtractPossibleNumber("(650) 253-0000", &extracted_number); - EXPECT_EQ("650) 253-0000", extracted_number); - - // Trailing non-alpha-numeric characters should be removed. - ExtractPossibleNumber("(650) 253-0000..- ..", &extracted_number); - EXPECT_EQ("650) 253-0000", extracted_number); - ExtractPossibleNumber("(650) 253-0000.", &extracted_number); - EXPECT_EQ("650) 253-0000", extracted_number); - // This case has a trailing RTL char. - ExtractPossibleNumber("(650) 253-0000", &extracted_number); - EXPECT_EQ("650) 253-0000", extracted_number); -} - -TEST_F(PhoneNumberUtilTest, IsNANPACountry) { - EXPECT_TRUE(phone_util_.IsNANPACountry(RegionCode::US())); - EXPECT_TRUE(phone_util_.IsNANPACountry(RegionCode::BS())); -} - -TEST_F(PhoneNumberUtilTest, IsValidNumber) { - PhoneNumber us_number; - us_number.set_country_code(1); - us_number.set_national_number(6502530000ULL); - EXPECT_TRUE(phone_util_.IsValidNumber(us_number)); - - PhoneNumber it_number; - it_number.set_country_code(39); - it_number.set_national_number(236618300ULL); - it_number.set_italian_leading_zero(true); - EXPECT_TRUE(phone_util_.IsValidNumber(it_number)); - - PhoneNumber gb_number; - gb_number.set_country_code(44); - gb_number.set_national_number(7912345678ULL); - EXPECT_TRUE(phone_util_.IsValidNumber(gb_number)); - - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(21387835ULL); - EXPECT_TRUE(phone_util_.IsValidNumber(nz_number)); -} - -TEST_F(PhoneNumberUtilTest, IsValidForRegion) { - // This number is valid for the Bahamas, but is not a valid US number. - PhoneNumber bs_number; - bs_number.set_country_code(1); - bs_number.set_national_number(2423232345ULL); - EXPECT_TRUE(phone_util_.IsValidNumber(bs_number)); - EXPECT_TRUE(phone_util_.IsValidNumberForRegion(bs_number, RegionCode::BS())); - EXPECT_FALSE(phone_util_.IsValidNumberForRegion(bs_number, RegionCode::US())); - bs_number.set_national_number(2421232345ULL); - // This number is no longer valid. - EXPECT_FALSE(phone_util_.IsValidNumber(bs_number)); - - // La Mayotte and Réunion use 'leadingDigits' to differentiate them. - PhoneNumber re_number; - re_number.set_country_code(262); - re_number.set_national_number(262123456ULL); - EXPECT_TRUE(phone_util_.IsValidNumber(re_number)); - EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE())); - EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT())); - // Now change the number to be a number for La Mayotte. - re_number.set_national_number(269601234ULL); - EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT())); - EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE())); - // This number is no longer valid. - re_number.set_national_number(269123456ULL); - EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT())); - EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE())); - EXPECT_FALSE(phone_util_.IsValidNumber(re_number)); - // However, it should be recognised as from La Mayotte. - string region_code; - phone_util_.GetRegionCodeForNumber(re_number, ®ion_code); - EXPECT_EQ("YT", region_code); - // This number is valid in both places. - re_number.set_national_number(800123456ULL); - EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT())); - EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE())); -} - -TEST_F(PhoneNumberUtilTest, IsNotValidNumber) { - PhoneNumber us_number; - us_number.set_country_code(1); - us_number.set_national_number(2530000ULL); - EXPECT_FALSE(phone_util_.IsValidNumber(us_number)); - - PhoneNumber it_number; - it_number.set_country_code(39); - it_number.set_national_number(23661830000ULL); - it_number.set_italian_leading_zero(true); - EXPECT_FALSE(phone_util_.IsValidNumber(it_number)); - - PhoneNumber gb_number; - gb_number.set_country_code(44); - gb_number.set_national_number(791234567ULL); - EXPECT_FALSE(phone_util_.IsValidNumber(gb_number)); - - PhoneNumber de_number; - de_number.set_country_code(49); - de_number.set_national_number(1234ULL); - EXPECT_FALSE(phone_util_.IsValidNumber(de_number)); - - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(3316005ULL); - EXPECT_FALSE(phone_util_.IsValidNumber(nz_number)); -} - -TEST_F(PhoneNumberUtilTest, IsPossibleNumber) { - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(6502530000ULL); - EXPECT_TRUE(phone_util_.IsPossibleNumber(number)); - - number.set_country_code(1); - number.set_national_number(2530000ULL); - EXPECT_TRUE(phone_util_.IsPossibleNumber(number)); - - number.set_country_code(44); - number.set_national_number(2070313000ULL); - EXPECT_TRUE(phone_util_.IsPossibleNumber(number)); - - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+1 650 253 0000", - RegionCode::US())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+1 650 GOO OGLE", - RegionCode::US())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("(650) 253-0000", - RegionCode::US())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("253-0000", - RegionCode::US())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+1 650 253 0000", - RegionCode::GB())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+44 20 7031 3000", - RegionCode::GB())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("(020) 7031 3000", - RegionCode::GB())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("7031 3000", - RegionCode::GB())); - EXPECT_TRUE(phone_util_.IsPossibleNumberForString("3331 6005", - RegionCode::NZ())); -} - -TEST_F(PhoneNumberUtilTest, IsPossibleNumberWithReason) { - // FYI, national numbers for country code +1 that are within 7 to 10 digits - // are possible. - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(6502530000ULL); - EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE, - phone_util_.IsPossibleNumberWithReason(number)); - - number.set_country_code(1); - number.set_national_number(2530000ULL); - EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE, - phone_util_.IsPossibleNumberWithReason(number)); - - number.set_country_code(0); - number.set_national_number(2530000ULL); - EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE, - phone_util_.IsPossibleNumberWithReason(number)); - - number.set_country_code(1); - number.set_national_number(253000ULL); - EXPECT_EQ(PhoneNumberUtil::TOO_SHORT, - phone_util_.IsPossibleNumberWithReason(number)); - - number.set_country_code(1); - number.set_national_number(65025300000ULL); - EXPECT_EQ(PhoneNumberUtil::TOO_LONG, - phone_util_.IsPossibleNumberWithReason(number)); - - number.set_country_code(44); - number.set_national_number(2070310000ULL); - EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE, - phone_util_.IsPossibleNumberWithReason(number)); - - number.set_country_code(49); - number.set_national_number(30123456ULL); - EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE, - phone_util_.IsPossibleNumberWithReason(number)); - - number.set_country_code(65); - number.set_national_number(1234567890ULL); - EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE, - phone_util_.IsPossibleNumberWithReason(number)); - - // Try with number that we don't have metadata for. - PhoneNumber ad_number; - ad_number.set_country_code(376); - ad_number.set_national_number(12345ULL); - EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE, - phone_util_.IsPossibleNumberWithReason(ad_number)); - ad_number.set_country_code(376); - ad_number.set_national_number(13ULL); - EXPECT_EQ(PhoneNumberUtil::TOO_SHORT, - phone_util_.IsPossibleNumberWithReason(ad_number)); - ad_number.set_country_code(376); - ad_number.set_national_number(1234567890123456ULL); - EXPECT_EQ(PhoneNumberUtil::TOO_LONG, - phone_util_.IsPossibleNumberWithReason(ad_number)); -} - -TEST_F(PhoneNumberUtilTest, IsNotPossibleNumber) { - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(65025300000ULL); - EXPECT_FALSE(phone_util_.IsPossibleNumber(number)); - - number.set_country_code(1); - number.set_national_number(253000ULL); - EXPECT_FALSE(phone_util_.IsPossibleNumber(number)); - - number.set_country_code(44); - number.set_national_number(300ULL); - EXPECT_FALSE(phone_util_.IsPossibleNumber(number)); - - EXPECT_FALSE(phone_util_.IsPossibleNumberForString("+1 650 253 00000", - RegionCode::US())); - EXPECT_FALSE(phone_util_.IsPossibleNumberForString("(650) 253-00000", - RegionCode::US())); - EXPECT_FALSE(phone_util_.IsPossibleNumberForString("I want a Pizza", - RegionCode::US())); - EXPECT_FALSE(phone_util_.IsPossibleNumberForString("253-000", - RegionCode::US())); - EXPECT_FALSE(phone_util_.IsPossibleNumberForString("1 3000", - RegionCode::GB())); - EXPECT_FALSE(phone_util_.IsPossibleNumberForString("+44 300", - RegionCode::GB())); -} - -TEST_F(PhoneNumberUtilTest, TruncateTooLongNumber) { - // US number 650-253-0000, but entered with one additional digit at the end. - PhoneNumber too_long_number; - too_long_number.set_country_code(1); - too_long_number.set_national_number(65025300001ULL); - PhoneNumber valid_number; - valid_number.set_country_code(1); - valid_number.set_national_number(6502530000ULL); - EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&too_long_number)); - EXPECT_EQ(valid_number, too_long_number); - - // GB number 080 1234 5678, but entered with 4 extra digits at the end. - too_long_number.set_country_code(44); - too_long_number.set_national_number(80123456780123ULL); - valid_number.set_country_code(44); - valid_number.set_national_number(8012345678ULL); - EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&too_long_number)); - EXPECT_EQ(valid_number, too_long_number); - - // IT number 022 3456 7890, but entered with 3 extra digits at the end. - too_long_number.set_country_code(39); - too_long_number.set_national_number(2234567890123ULL); - too_long_number.set_italian_leading_zero(true); - valid_number.set_country_code(39); - valid_number.set_national_number(2234567890ULL); - valid_number.set_italian_leading_zero(true); - EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&too_long_number)); - EXPECT_EQ(valid_number, too_long_number); - - // Tests what happens when a valid number is passed in. - PhoneNumber valid_number_copy(valid_number); - EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&valid_number)); - // Tests the number is not modified. - EXPECT_EQ(valid_number_copy, valid_number); - - // Tests what happens when a number with invalid prefix is passed in. - PhoneNumber number_with_invalid_prefix; - number_with_invalid_prefix.set_country_code(1); - // The test metadata says US numbers cannot have prefix 240. - number_with_invalid_prefix.set_national_number(2401234567ULL); - PhoneNumber invalid_number_copy(number_with_invalid_prefix); - EXPECT_FALSE(phone_util_.TruncateTooLongNumber(&number_with_invalid_prefix)); - // Tests the number is not modified. - EXPECT_EQ(invalid_number_copy, number_with_invalid_prefix); - - // Tests what happens when a too short number is passed in. - PhoneNumber too_short_number; - too_short_number.set_country_code(1); - too_short_number.set_national_number(1234ULL); - PhoneNumber too_short_number_copy(too_short_number); - EXPECT_FALSE(phone_util_.TruncateTooLongNumber(&too_short_number)); - // Tests the number is not modified. - EXPECT_EQ(too_short_number_copy, too_short_number); -} - -TEST_F(PhoneNumberUtilTest, IsLeadingZeroPossible) { - EXPECT_TRUE(IsLeadingZeroPossible(39)); // Italy - EXPECT_FALSE(IsLeadingZeroPossible(1)); // USA - EXPECT_FALSE(IsLeadingZeroPossible(800)); // Not in metadata file, should - // return default value of false. -} - -TEST_F(PhoneNumberUtilTest, FormatUsingOriginalNumberFormat) { - PhoneNumber phone_number; - string formatted_number; - - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("+442087654321", RegionCode::GB(), - &phone_number)); - phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), - &formatted_number); - EXPECT_EQ("+44 20 8765 4321", formatted_number); - - phone_number.Clear(); - formatted_number.clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("02087654321", RegionCode::GB(), - &phone_number)); - phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), - &formatted_number); - EXPECT_EQ("(020) 8765 4321", formatted_number); - - phone_number.Clear(); - formatted_number.clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("011442087654321", - RegionCode::US(), &phone_number)); - phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(), - &formatted_number); - EXPECT_EQ("011 44 20 8765 4321", formatted_number); - - phone_number.Clear(); - formatted_number.clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("442087654321", RegionCode::GB(), - &phone_number)); - phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), - &formatted_number); - EXPECT_EQ("44 20 8765 4321", formatted_number); - - phone_number.Clear(); - formatted_number.clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+442087654321", RegionCode::GB(), - &phone_number)); - phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), - &formatted_number); - EXPECT_EQ("(020) 8765 4321", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, IsPremiumRate) { - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(9004433030ULL); - EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number)); - - number.set_country_code(39); - number.set_national_number(892123ULL); - EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number)); - - number.set_country_code(44); - number.set_national_number(9187654321ULL); - EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number)); - - number.set_country_code(49); - number.set_national_number(9001654321ULL); - EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number)); - - number.set_country_code(49); - number.set_national_number(90091234567ULL); - EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsTollFree) { - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(8881234567ULL); - EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number)); - - number.set_country_code(39); - number.set_national_number(803123ULL); - EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number)); - - number.set_country_code(44); - number.set_national_number(8012345678ULL); - EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number)); - - number.set_country_code(49); - number.set_national_number(8001234567ULL); - EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsMobile) { - PhoneNumber number; - // A Bahama mobile number - number.set_country_code(1); - number.set_national_number(2423570000ULL); - EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number)); - - number.set_country_code(39); - number.set_national_number(312345678ULL); - EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number)); - - number.set_country_code(44); - number.set_national_number(7912345678ULL); - EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number)); - - number.set_country_code(49); - number.set_national_number(15123456789ULL); - EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number)); - - number.set_country_code(54); - number.set_national_number(91187654321ULL); - EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsFixedLine) { - PhoneNumber number; - // A Bahama fixed-line number - number.set_country_code(1); - number.set_national_number(2423651234ULL); - EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number)); - - // An Italian fixed-line number - number.Clear(); - number.set_country_code(39); - number.set_national_number(236618300ULL); - number.set_italian_leading_zero(true); - EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number)); - - number.Clear(); - number.set_country_code(44); - number.set_national_number(2012345678ULL); - EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number)); - - number.set_country_code(49); - number.set_national_number(301234ULL); - EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsFixedLineAndMobile) { - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(6502531111ULL); - EXPECT_EQ(PhoneNumberUtil::FIXED_LINE_OR_MOBILE, - phone_util_.GetNumberType(number)); - - number.set_country_code(54); - number.set_national_number(1987654321ULL); - EXPECT_EQ(PhoneNumberUtil::FIXED_LINE_OR_MOBILE, - phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsSharedCost) { - PhoneNumber number; - number.set_country_code(44); - number.set_national_number(8431231234ULL); - EXPECT_EQ(PhoneNumberUtil::SHARED_COST, phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsVoip) { - PhoneNumber number; - number.set_country_code(44); - number.set_national_number(5631231234ULL); - EXPECT_EQ(PhoneNumberUtil::VOIP, phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsPersonalNumber) { - PhoneNumber number; - number.set_country_code(44); - number.set_national_number(7031231234ULL); - EXPECT_EQ(PhoneNumberUtil::PERSONAL_NUMBER, - phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, IsUnknown) { - PhoneNumber number; - number.set_country_code(1); - number.set_national_number(65025311111ULL); - EXPECT_EQ(PhoneNumberUtil::UNKNOWN, phone_util_.GetNumberType(number)); -} - -TEST_F(PhoneNumberUtilTest, GetCountryCodeForRegion) { - EXPECT_EQ(1, phone_util_.GetCountryCodeForRegion(RegionCode::US())); - EXPECT_EQ(64, phone_util_.GetCountryCodeForRegion(RegionCode::NZ())); - EXPECT_EQ(0, phone_util_.GetCountryCodeForRegion(RegionCode::ZZ())); - // CS is already deprecated so the library doesn't support it. - EXPECT_EQ(0, phone_util_.GetCountryCodeForRegion(RegionCode::CS())); -} - -TEST_F(PhoneNumberUtilTest, GetNationalDiallingPrefixForRegion) { - string ndd_prefix; - GetNddPrefixForRegion(RegionCode::US(), false, &ndd_prefix); - EXPECT_EQ("1", ndd_prefix); - - // Test non-main country to see it gets the national dialling prefix for the - // main country with that country calling code. - GetNddPrefixForRegion(RegionCode::BS(), false, &ndd_prefix); - EXPECT_EQ("1", ndd_prefix); - - GetNddPrefixForRegion(RegionCode::NZ(), false, &ndd_prefix); - EXPECT_EQ("0", ndd_prefix); - - // Test case with non digit in the national prefix. - GetNddPrefixForRegion(RegionCode::AO(), false, &ndd_prefix); - EXPECT_EQ("0~0", ndd_prefix); - - GetNddPrefixForRegion(RegionCode::AO(), true, &ndd_prefix); - EXPECT_EQ("00", ndd_prefix); - - // Test cases with invalid regions. - GetNddPrefixForRegion(RegionCode::ZZ(), false, &ndd_prefix); - EXPECT_EQ("", ndd_prefix); - - // CS is already deprecated so the library doesn't support it. - GetNddPrefixForRegion(RegionCode::CS(), false, &ndd_prefix); - EXPECT_EQ("", ndd_prefix); -} - -TEST_F(PhoneNumberUtilTest, IsViablePhoneNumber) { - // Only one or two digits before strange non-possible punctuation. - EXPECT_FALSE(IsViablePhoneNumber("12. March")); - EXPECT_FALSE(IsViablePhoneNumber("1+1+1")); - EXPECT_FALSE(IsViablePhoneNumber("80+0")); - EXPECT_FALSE(IsViablePhoneNumber("00")); - // Three digits is viable. - EXPECT_TRUE(IsViablePhoneNumber("111")); - // Alpha numbers. - EXPECT_TRUE(IsViablePhoneNumber("0800-4-pizza")); - EXPECT_TRUE(IsViablePhoneNumber("0800-4-PIZZA")); - // Only one or two digits before possible punctuation followed by more digits. - // The punctuation used here is the unicode character u+3000. - EXPECT_TRUE(IsViablePhoneNumber("1 34")); - EXPECT_FALSE(IsViablePhoneNumber("1 3+4")); - // Unicode variants of possible starting character and other allowed - // punctuation/digits. - EXPECT_TRUE(IsViablePhoneNumber("(1) 3456789")); - // Testing a leading + is okay. - EXPECT_TRUE(IsViablePhoneNumber("+1) 3456789")); -} - -TEST_F(PhoneNumberUtilTest, NormaliseRemovePunctuation) { - string input_number("034-56&+#234"); - Normalize(&input_number); - static const string kExpectedOutput("03456234"); - EXPECT_EQ(kExpectedOutput, input_number) - << "Conversion did not correctly remove punctuation"; -} - -TEST_F(PhoneNumberUtilTest, NormaliseReplaceAlphaCharacters) { - string input_number("034-I-am-HUNGRY"); - Normalize(&input_number); - static const string kExpectedOutput("034426486479"); - EXPECT_EQ(kExpectedOutput, input_number) - << "Conversion did not correctly replace alpha characters"; -} - -TEST_F(PhoneNumberUtilTest, NormaliseOtherDigits) { - // The first digit is a full-width 2, the last digit is an Arabic-indic digit - // 5. - string input_number("25٥"); - Normalize(&input_number); - static const string kExpectedOutput("255"); - EXPECT_EQ(kExpectedOutput, input_number) - << "Conversion did not correctly replace non-latin digits"; - // The first digit is an Eastern-Arabic 5, the latter an Eastern-Arabic 0. - string eastern_arabic_input_number("۵2۰"); - Normalize(&eastern_arabic_input_number); - static const string kExpectedOutput2("520"); - EXPECT_EQ(kExpectedOutput2, eastern_arabic_input_number) - << "Conversion did not correctly replace non-latin digits"; -} - -TEST_F(PhoneNumberUtilTest, NormaliseStripAlphaCharacters) { - string input_number("034-56&+a#234"); - phone_util_.NormalizeDigitsOnly(&input_number); - static const string kExpectedOutput("03456234"); - EXPECT_EQ(kExpectedOutput, input_number) - << "Conversion did not correctly remove alpha characters"; -} - -TEST_F(PhoneNumberUtilTest, MaybeStripInternationalPrefix) { - string international_prefix("00[39]"); - string number_to_strip("0034567700-3898003"); - // Note the dash is removed as part of the normalization. - string stripped_number("45677003898003"); - EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); - EXPECT_EQ(stripped_number, number_to_strip) - << "The number was not stripped of its international prefix."; - - // Now the number no longer starts with an IDD prefix, so it should now report - // FROM_DEFAULT_COUNTRY. - EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); - - number_to_strip.assign("00945677003898003"); - EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); - EXPECT_EQ(stripped_number, number_to_strip) - << "The number was not stripped of its international prefix."; - - // Test it works when the international prefix is broken up by spaces. - number_to_strip.assign("00 9 45677003898003"); - EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); - EXPECT_EQ(stripped_number, number_to_strip) - << "The number was not stripped of its international prefix."; - // Now the number no longer starts with an IDD prefix, so it should now report - // FROM_DEFAULT_COUNTRY. - EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); - - // Test the + symbol is also recognised and stripped. - number_to_strip.assign("+45677003898003"); - stripped_number.assign("45677003898003"); - EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); - EXPECT_EQ(stripped_number, number_to_strip) - << "The number supplied was not stripped of the plus symbol."; - - // If the number afterwards is a zero, we should not strip this - no country - // code begins with 0. - number_to_strip.assign("0090112-3123"); - stripped_number.assign("00901123123"); - EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); - EXPECT_EQ(stripped_number, number_to_strip) - << "The number had a 0 after the match so shouldn't be stripped."; - // Here the 0 is separated by a space from the IDD. - number_to_strip.assign("009 0-112-3123"); - EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, - MaybeStripInternationalPrefixAndNormalize(international_prefix, - &number_to_strip)); -} - -TEST_F(PhoneNumberUtilTest, MaybeStripNationalPrefixAndCarrierCode) { - PhoneMetadata metadata; - metadata.set_national_prefix_for_parsing("34"); - metadata.mutable_general_desc()->set_national_number_pattern("\\d{4,8}"); - string number_to_strip("34356778"); - string stripped_number("356778"); - string carrier_code; - MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip, - &carrier_code); - EXPECT_EQ(stripped_number, number_to_strip) - << "Should have had national prefix stripped."; - EXPECT_EQ("", carrier_code) << "Should have had no carrier code stripped."; - // Retry stripping - now the number should not start with the national prefix, - // so no more stripping should occur. - MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip, - &carrier_code); - EXPECT_EQ(stripped_number, number_to_strip) - << "Should have had no change - no national prefix present."; - // Some countries have no national prefix. Repeat test with none specified. - metadata.clear_national_prefix_for_parsing(); - MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip, - &carrier_code); - EXPECT_EQ(stripped_number, number_to_strip) - << "Should have had no change - empty national prefix."; - // If the resultant number doesn't match the national rule, it shouldn't be - // stripped. - metadata.set_national_prefix_for_parsing("3"); - number_to_strip.assign("3123"); - stripped_number.assign("3123"); - MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip, - &carrier_code); - EXPECT_EQ(stripped_number, number_to_strip) - << "Should have had no change - after stripping, it wouldn't have " - << "matched the national rule."; - // Test extracting carrier selection code. - metadata.set_national_prefix_for_parsing("0(81)?"); - number_to_strip.assign("08122123456"); - stripped_number.assign("22123456"); - MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip, - &carrier_code); - EXPECT_EQ("81", carrier_code) << "Should have had carrier code stripped."; - EXPECT_EQ(stripped_number, number_to_strip) - << "Should have had national prefix and carrier code stripped."; - // If there was a transform rule, check it was applied. - metadata.set_national_prefix_transform_rule("5$15"); - // Note that a capturing group is present here. - metadata.set_national_prefix_for_parsing("0(\\d{2})"); - number_to_strip.assign("031123"); - string transformed_number("5315123"); - MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip, - &carrier_code); - EXPECT_EQ(transformed_number, number_to_strip) - << "Was not successfully transformed."; -} - -TEST_F(PhoneNumberUtilTest, MaybeStripExtension) { - // One with extension. - string number("1234576 ext. 1234"); - string extension; - string expected_extension("1234"); - string stripped_number("1234576"); - EXPECT_TRUE(MaybeStripExtension(&number, &extension)); - EXPECT_EQ(stripped_number, number); - EXPECT_EQ(expected_extension, extension); - - // One without extension. - number.assign("1234-576"); - extension.clear(); - stripped_number.assign("1234-576"); - EXPECT_FALSE(MaybeStripExtension(&number, &extension)); - EXPECT_EQ(stripped_number, number); - EXPECT_TRUE(extension.empty()); - - // One with an extension caught by the second capturing group in - // kKnownExtnPatterns. - number.assign("1234576-123#"); - extension.clear(); - expected_extension.assign("123"); - stripped_number.assign("1234576"); - EXPECT_TRUE(MaybeStripExtension(&number, &extension)); - EXPECT_EQ(stripped_number, number); - EXPECT_EQ(expected_extension, extension); - - number.assign("1234576 ext.123#"); - extension.clear(); - EXPECT_TRUE(MaybeStripExtension(&number, &extension)); - EXPECT_EQ(stripped_number, number); - EXPECT_EQ(expected_extension, extension); -} - -TEST_F(PhoneNumberUtilTest, MaybeExtractCountryCode) { - PhoneNumber number; - const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::US()); - // Note that for the US, the IDD is 011. - string phone_number("011112-3456789"); - string stripped_number("123456789"); - int expected_country_code = 1; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - MaybeExtractCountryCode(metadata, true, &phone_number, &number)); - EXPECT_EQ(expected_country_code, number.country_code()); - EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD, number.country_code_source()); - EXPECT_EQ(stripped_number, phone_number); - - number.Clear(); - phone_number.assign("+6423456789"); - stripped_number.assign("23456789"); - expected_country_code = 64; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - MaybeExtractCountryCode(metadata, true, &phone_number, &number)); - EXPECT_EQ(expected_country_code, number.country_code()); - EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN, - number.country_code_source()); - EXPECT_EQ(stripped_number, phone_number); - - // Should not have extracted a country code - no international prefix present. - number.Clear(); - expected_country_code = 0; - phone_number.assign("2345-6789"); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - MaybeExtractCountryCode(metadata, true, &phone_number, &number)); - EXPECT_EQ(expected_country_code, number.country_code()); - EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, number.country_code_source()); - EXPECT_EQ(stripped_number, phone_number); - - expected_country_code = 0; - phone_number.assign("0119991123456789"); - stripped_number.assign(phone_number); - EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR, - MaybeExtractCountryCode(metadata, true, &phone_number, &number)); - - number.Clear(); - phone_number.assign("(1 610) 619 4466"); - stripped_number.assign("6106194466"); - expected_country_code = 1; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - MaybeExtractCountryCode(metadata, true, &phone_number, &number)); - EXPECT_EQ(expected_country_code, number.country_code()); - EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN, - number.country_code_source()); - EXPECT_EQ(stripped_number, phone_number); - - number.Clear(); - phone_number.assign("(1 610) 619 4466"); - stripped_number.assign("6106194466"); - expected_country_code = 1; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - MaybeExtractCountryCode(metadata, false, &phone_number, &number)); - EXPECT_EQ(expected_country_code, number.country_code()); - EXPECT_FALSE(number.has_country_code_source()); - EXPECT_EQ(stripped_number, phone_number); - - // Should not have extracted a country code - invalid number after extraction - // of uncertain country code. - number.Clear(); - phone_number.assign("(1 610) 619 446"); - stripped_number.assign("1610619446"); - expected_country_code = 0; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - MaybeExtractCountryCode(metadata, false, &phone_number, &number)); - EXPECT_EQ(expected_country_code, number.country_code()); - EXPECT_FALSE(number.has_country_code_source()); - EXPECT_EQ(stripped_number, phone_number); - - number.Clear(); - phone_number.assign("(1 610) 619"); - stripped_number.assign("1610619"); - expected_country_code = 0; - // Should not have extracted a country code - invalid number both before and - // after extraction of uncertain country code. - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - MaybeExtractCountryCode(metadata, true, &phone_number, &number)); - EXPECT_EQ(expected_country_code, number.country_code()); - EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, number.country_code_source()); - EXPECT_EQ(stripped_number, phone_number); -} - -TEST_F(PhoneNumberUtilTest, CountryWithNoNumberDesc) { - string formatted_number; - // Andorra is a country where we don't have PhoneNumberDesc info in the - // metadata. - PhoneNumber ad_number; - ad_number.set_country_code(376); - ad_number.set_national_number(12345ULL); - phone_util_.Format(ad_number, PhoneNumberUtil::INTERNATIONAL, - &formatted_number); - EXPECT_EQ("+376 12345", formatted_number); - phone_util_.Format(ad_number, PhoneNumberUtil::E164, &formatted_number); - EXPECT_EQ("+37612345", formatted_number); - phone_util_.Format(ad_number, PhoneNumberUtil::NATIONAL, &formatted_number); - EXPECT_EQ("12345", formatted_number); - EXPECT_EQ(PhoneNumberUtil::UNKNOWN, phone_util_.GetNumberType(ad_number)); - EXPECT_TRUE(phone_util_.IsValidNumber(ad_number)); - - // Test dialing a US number from within Andorra. - PhoneNumber us_number; - us_number.set_country_code(1); - us_number.set_national_number(6502530000ULL); - phone_util_.FormatOutOfCountryCallingNumber(us_number, RegionCode::AD(), - &formatted_number); - EXPECT_EQ("00 1 650 253 0000", formatted_number); -} - -TEST_F(PhoneNumberUtilTest, UnknownCountryCallingCodeForValidation) { - PhoneNumber invalid_number; - invalid_number.set_country_code(0); - invalid_number.set_national_number(1234ULL); - EXPECT_FALSE(phone_util_.IsValidNumber(invalid_number)); -} - -TEST_F(PhoneNumberUtilTest, IsNumberMatchMatches) { - // Test simple matches where formatting is different, or leading zeroes, or - // country code has been specified. - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331 6005", - "+64 03 331 6005")); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 03 331-6005", - "+64 03331 6005")); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+643 331-6005", - "+64033316005")); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+643 331-6005", - "+6433316005")); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005", - "+6433316005")); - // Test alpha numbers. - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+1800 siX-Flags", - "+1 800 7493 5247")); - // Test numbers with extensions. - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005 extn 1234", - "+6433316005#1234")); - // Test proto buffers. - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(33316005ULL); - nz_number.set_extension("3456"); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithOneString(nz_number, - "+643 331 6005 ext 3456")); - nz_number.clear_extension(); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithOneString(nz_number, - "+643 331 6005")); - // Check empty extensions are ignored. - nz_number.set_extension(""); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatchWithOneString(nz_number, - "+643 331 6005")); - // Check variant with two proto buffers. - PhoneNumber nz_number_2; - nz_number_2.set_country_code(64); - nz_number_2.set_national_number(33316005ULL); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatch(nz_number, nz_number_2)); - - // Check raw_input, country_code_source and preferred_domestic_carrier_code - // are ignored. - PhoneNumber br_number_1; - PhoneNumber br_number_2; - br_number_1.set_country_code(55); - br_number_1.set_national_number(3121286979ULL); - br_number_1.set_country_code_source(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN); - br_number_1.set_preferred_domestic_carrier_code("12"); - br_number_1.set_raw_input("012 3121286979"); - br_number_2.set_country_code(55); - br_number_2.set_national_number(3121286979ULL); - br_number_2.set_country_code_source(PhoneNumber::FROM_DEFAULT_COUNTRY); - br_number_2.set_preferred_domestic_carrier_code("14"); - br_number_2.set_raw_input("143121286979"); - EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH, - phone_util_.IsNumberMatch(br_number_1, br_number_2)); -} - -TEST_F(PhoneNumberUtilTest, IsNumberMatchNonMetches) { - // NSN matches. - EXPECT_EQ(PhoneNumberUtil::NO_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("03 331 6005", - "03 331 6006")); - // Different country code, partial number match. - EXPECT_EQ(PhoneNumberUtil::NO_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005", - "+16433316005")); - // Different country code, same number. - EXPECT_EQ(PhoneNumberUtil::NO_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005", - "+6133316005")); - // Extension different, all else the same. - EXPECT_EQ(PhoneNumberUtil::NO_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005 extn 1234", - "+0116433316005#1235")); - // NSN matches, but extension is different - not the same number. - EXPECT_EQ(PhoneNumberUtil::NO_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005 ext.1235", - "3 331 6005#1234")); - // Invalid numbers that can't be parsed. - EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER, - phone_util_.IsNumberMatchWithTwoStrings("43", "3 331 6043")); - // Invalid numbers that can't be parsed. - EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER, - phone_util_.IsNumberMatchWithTwoStrings("+43", "+64 3 331 6005")); - EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER, - phone_util_.IsNumberMatchWithTwoStrings("+43", "64 3 331 6005")); - EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER, - phone_util_.IsNumberMatchWithTwoStrings("Dog", "64 3 331 6005")); -} - -TEST_F(PhoneNumberUtilTest, IsNumberMatchNsnMatches) { - // NSN matches. - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005", - "03 331 6005")); - - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("3 331-6005", - "03 331 6005")); - - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(33316005ULL); - nz_number.set_extension(""); - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithOneString(nz_number, "03 331 6005")); - // Here the second number possibly starts with the country code for New - // Zealand, although we are unsure. - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithOneString(nz_number, - "(64-3) 331 6005")); - - // Here, the 1 might be a national prefix, if we compare it to the US number, - // so the resultant match is an NSN match. - PhoneNumber us_number; - us_number.set_country_code(1); - us_number.set_national_number(2345678901ULL); - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithOneString(us_number, - "1-234-567-8901")); - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithOneString(us_number, "2345678901")); - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+1 234-567 8901", - "1 234 567 8901")); - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("1 234-567 8901", - "1 234 567 8901")); - EXPECT_EQ(PhoneNumberUtil::NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("1 234-567 8901", - "+1 234 567 8901")); - // For this case, the match will be a short NSN match, because we cannot - // assume that the 1 might be a national prefix, so don't remove it when - // parsing. - PhoneNumber random_number; - random_number.set_country_code(41); - random_number.set_national_number(2345678901ULL); - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithOneString(random_number, - "1-234-567-8901")); -} - -TEST_F(PhoneNumberUtilTest, IsNumberMatchShortNsnMatches) { - // Short NSN matches with the country not specified for either one or both - // numbers. - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005", - "331 6005")); - - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("3 331-6005", - "331 6005")); - - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("3 331-6005", - "+64 331 6005")); - - // Short NSN match with the country specified. - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("03 331-6005", - "331 6005")); - - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("1 234 345 6789", - "345 6789")); - - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+1 (234) 345 6789", - "345 6789")); - - // NSN matches, country code omitted for one number, extension missing for - // one. - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005", - "3 331 6005#1234")); - - // One has Italian leading zero, one does not. - PhoneNumber it_number_1, it_number_2; - it_number_1.set_country_code(39); - it_number_1.set_national_number(1234ULL); - it_number_1.set_italian_leading_zero(true); - it_number_2.set_country_code(39); - it_number_2.set_national_number(1234ULL); - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatch(it_number_1, it_number_2)); - - // One has an extension, the other has an extension of "". - it_number_1.set_extension("1234"); - it_number_1.clear_italian_leading_zero(); - it_number_2.set_extension(""); - EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH, - phone_util_.IsNumberMatch(it_number_1, it_number_2)); -} - -TEST_F(PhoneNumberUtilTest, ParseNationalNumber) { - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(33316005ULL); - PhoneNumber test_number; - // National prefix attached. - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("033316005", RegionCode::NZ(), &test_number)); - EXPECT_EQ(nz_number, test_number); - // National prefix missing. - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("33316005", RegionCode::NZ(), &test_number)); - EXPECT_EQ(nz_number, test_number); - // National prefix attached and some formatting present. - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03-331 6005", RegionCode::NZ(), &test_number)); - EXPECT_EQ(nz_number, test_number); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03 331 6005", RegionCode::NZ(), &test_number)); - EXPECT_EQ(nz_number, test_number); - - // Testing international prefixes. - // Should strip country code. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0064 3 331 6005", - RegionCode::NZ(), &test_number)); - EXPECT_EQ(nz_number, test_number); - // Try again, but this time we have an international number with Region Code - // US. It should recognise the country code and parse accordingly. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("01164 3 331 6005", - RegionCode::US(), &test_number)); - EXPECT_EQ(nz_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+64 3 331 6005", - RegionCode::US(), &test_number)); - EXPECT_EQ(nz_number, test_number); - - // Test for http://b/issue?id=2247493 - nz_number.Clear(); - nz_number.set_country_code(64); - nz_number.set_national_number(64123456ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+64(0)64123456", - RegionCode::US(), &test_number)); - EXPECT_EQ(nz_number, test_number); - - // Check that using a "/" is fine in a phone number. - PhoneNumber de_number; - de_number.set_country_code(49); - de_number.set_national_number(12345678ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("123/45678", RegionCode::DE(), &test_number)); - EXPECT_EQ(de_number, test_number); - - PhoneNumber us_number; - us_number.set_country_code(1); - // Check it doesn't use the '1' as a country code when parsing if the phone - // number was already possible. - us_number.set_national_number(1234567890ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("123-456-7890", RegionCode::US(), &test_number)); - EXPECT_EQ(us_number, test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseNumberWithAlphaCharacters) { - // Test case with alpha characters. - PhoneNumber test_number; - PhoneNumber tollfree_number; - tollfree_number.set_country_code(64); - tollfree_number.set_national_number(800332005ULL); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0800 DDA 005", RegionCode::NZ(), &test_number)); - EXPECT_EQ(tollfree_number, test_number); - - test_number.Clear(); - PhoneNumber premium_number; - premium_number.set_country_code(64); - premium_number.set_national_number(9003326005ULL); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0900 DDA 6005", RegionCode::NZ(), &test_number)); - EXPECT_EQ(premium_number, test_number); - - // Not enough alpha characters for them to be considered intentional, so they - // are stripped. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0900 332 6005a", - RegionCode::NZ(), &test_number)); - EXPECT_EQ(premium_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0900 332 600a5", - RegionCode::NZ(), &test_number)); - EXPECT_EQ(premium_number, test_number); - - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0900 332 600A5", - RegionCode::NZ(), &test_number)); - EXPECT_EQ(premium_number, test_number); - - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0900 a332 600A5", - RegionCode::NZ(), &test_number)); - EXPECT_EQ(premium_number, test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseWithInternationalPrefixes) { - PhoneNumber us_number; - us_number.set_country_code(1); - us_number.set_national_number(6503336000ULL); - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+1 (650) 333-6000", - RegionCode::US(), &test_number)); - EXPECT_EQ(us_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+1-650-333-6000", - RegionCode::US(), &test_number)); - EXPECT_EQ(us_number, test_number); - - // Calling the US number from Singapore by using different service providers - // 1st test: calling using SingTel IDD service (IDD is 001) - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0011-650-333-6000", - RegionCode::SG(), &test_number)); - EXPECT_EQ(us_number, test_number); - // 2nd test: calling using StarHub IDD service (IDD is 008) - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0081-650-333-6000", - RegionCode::SG(), &test_number)); - EXPECT_EQ(us_number, test_number); - // 3rd test: calling using SingTel V019 service (IDD is 019) - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0191-650-333-6000", - RegionCode::SG(), &test_number)); - EXPECT_EQ(us_number, test_number); - // Calling the US number from Poland - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0~01-650-333-6000", - RegionCode::PL(), &test_number)); - EXPECT_EQ(us_number, test_number); - - // Using "++" at the start. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("++1 (650) 333-6000", - RegionCode::PL(), &test_number)); - EXPECT_EQ(us_number, test_number); - // Using a full-width plus sign. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+1 (650) 333-6000", - RegionCode::SG(), &test_number)); - EXPECT_EQ(us_number, test_number); - // The whole number, including punctuation, is here represented in full-width - // form. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+1 (650) 333-6000", - RegionCode::SG(), &test_number)); - EXPECT_EQ(us_number, test_number); - - // Using the U+30FC dash. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+1 (650) 333ー6000", - RegionCode::SG(), &test_number)); - EXPECT_EQ(us_number, test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseWithLeadingZero) { - PhoneNumber it_number; - it_number.set_country_code(39); - it_number.set_national_number(236618300ULL); - it_number.set_italian_leading_zero(true); - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+39 02-36618 300", - RegionCode::NZ(), &test_number)); - EXPECT_EQ(it_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("02-36618 300", RegionCode::IT(), &test_number)); - EXPECT_EQ(it_number, test_number); - - it_number.Clear(); - it_number.set_country_code(39); - it_number.set_national_number(312345678ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("312 345 678", RegionCode::IT(), &test_number)); - EXPECT_EQ(it_number, test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseNationalNumberArgentina) { - // Test parsing mobile numbers of Argentina. - PhoneNumber ar_number; - ar_number.set_country_code(54); - ar_number.set_national_number(93435551212ULL); - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+54 9 343 555 1212", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0343 15 555 1212", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - - ar_number.set_national_number(93715654320ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+54 9 3715 65 4320", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03715 15 65 4320", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - - // Test parsing fixed-line numbers of Argentina. - ar_number.set_national_number(1137970000ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+54 11 3797 0000", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("011 3797 0000", RegionCode::AR(), &test_number)); - EXPECT_EQ(ar_number, test_number); - - ar_number.set_national_number(3715654321ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+54 3715 65 4321", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03715 65 4321", RegionCode::AR(), &test_number)); - EXPECT_EQ(ar_number, test_number); - - ar_number.set_national_number(2312340000ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+54 23 1234 0000", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("023 1234 0000", RegionCode::AR(), &test_number)); - EXPECT_EQ(ar_number, test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseWithXInNumber) { - // Test that having an 'x' in the phone number at the start is ok and that it - // just gets removed. - PhoneNumber ar_number; - ar_number.set_country_code(54); - ar_number.set_national_number(123456789ULL); - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0123456789", RegionCode::AR(), &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(0) 123456789", RegionCode::AR(), &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0 123456789", RegionCode::AR(), &test_number)); - EXPECT_EQ(ar_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(0xx) 123456789", RegionCode::AR(), - &test_number)); - EXPECT_EQ(ar_number, test_number); - - PhoneNumber ar_from_us; - ar_from_us.set_country_code(54); - ar_from_us.set_national_number(81429712ULL); - // This test is intentionally constructed such that the number of digit after - // xx is larger than 7, so that the number won't be mistakenly treated as an - // extension, as we allow extensions up to 7 digits. This assumption is okay - // for now as all the countries where a carrier selection code is written in - // the form of xx have a national significant number of length larger than 7. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("011xx5481429712", RegionCode::US(), - &test_number)); - EXPECT_EQ(ar_from_us, test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseNumbersMexico) { - // Test parsing fixed-line numbers of Mexico. - PhoneNumber mx_number; - - mx_number.set_country_code(52); - mx_number.set_national_number(4499780001ULL); - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+52 (449)978-0001", RegionCode::MX(), - &test_number)); - EXPECT_EQ(mx_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("01 (449)978-0001", RegionCode::MX(), - &test_number)); - EXPECT_EQ(mx_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(449)978-0001", RegionCode::MX(), - &test_number)); - EXPECT_EQ(mx_number, test_number); - - // Test parsing mobile numbers of Mexico. - mx_number.Clear(); - mx_number.set_country_code(52); - mx_number.set_national_number(13312345678ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+52 1 33 1234-5678", RegionCode::MX(), - &test_number)); - EXPECT_EQ(mx_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("044 (33) 1234-5678", RegionCode::MX(), - &test_number)); - EXPECT_EQ(mx_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("045 33 1234-5678", RegionCode::MX(), - &test_number)); - EXPECT_EQ(mx_number, test_number); -} - -TEST_F(PhoneNumberUtilTest, FailedParseOnInvalidNumbers) { - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NOT_A_NUMBER, - phone_util_.Parse("This is not a phone number", RegionCode::NZ(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - EXPECT_EQ(PhoneNumberUtil::TOO_LONG_NSN, - phone_util_.Parse("01495 72553301873 810104", RegionCode::GB(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_NSN, - phone_util_.Parse("+49 0", RegionCode::DE(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR, - phone_util_.Parse("+210 3456 56789", RegionCode::NZ(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR, - phone_util_.Parse("123 456 7890", RegionCode::ZZ(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR, - phone_util_.Parse("123 456 7890", RegionCode::CS(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD, - phone_util_.Parse("0044-----", RegionCode::GB(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD, - phone_util_.Parse("0044", RegionCode::GB(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD, - phone_util_.Parse("011", RegionCode::US(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD, - phone_util_.Parse("0119", RegionCode::US(), - &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseNumbersWithPlusWithNoRegion) { - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(33316005ULL); - // "ZZ" is allowed only if the number starts with a '+' - then - // the country code can be calculated. - PhoneNumber result_proto; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+64 3 331 6005", RegionCode::ZZ(), - &result_proto)); - EXPECT_EQ(nz_number, result_proto); - - // Test with full-width plus. - result_proto.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+64 3 331 6005", RegionCode::ZZ(), - &result_proto)); - EXPECT_EQ(nz_number, result_proto); - // Test with normal plus but leading characters that need to be stripped. - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse(" +64 3 331 6005", RegionCode::ZZ(), - &result_proto)); - EXPECT_EQ(nz_number, result_proto); - - nz_number.set_raw_input("+64 3 331 6005"); - nz_number.set_country_code_source(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN); - // It is important that we set this to an empty string, since we used - // ParseAndKeepRawInput and no carrrier code was found. - nz_number.set_preferred_domestic_carrier_code(""); - result_proto.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("+64 3 331 6005", RegionCode::ZZ(), - &result_proto)); - EXPECT_EQ(nz_number, result_proto); -} - -TEST_F(PhoneNumberUtilTest, ParseExtensions) { - PhoneNumber nz_number; - nz_number.set_country_code(64); - nz_number.set_national_number(33316005ULL); - nz_number.set_extension("3456"); - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03 331 6005 ext 3456", RegionCode::NZ(), - &test_number)); - EXPECT_EQ(nz_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03 331 6005x3456", RegionCode::NZ(), - &test_number)); - EXPECT_EQ(nz_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03-331 6005 int.3456", RegionCode::NZ(), - &test_number)); - EXPECT_EQ(nz_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("03 331 6005 #3456", RegionCode::NZ(), - &test_number)); - EXPECT_EQ(nz_number, test_number); - - // Test the following do not extract extensions: - PhoneNumber non_extn_number; - non_extn_number.set_country_code(1); - non_extn_number.set_national_number(80074935247ULL); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("1800 six-flags", RegionCode::US(), - &test_number)); - EXPECT_EQ(non_extn_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("1800 SIX-FLAGS", RegionCode::US(), - &test_number)); - EXPECT_EQ(non_extn_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0~0 1800 7493 5247", RegionCode::PL(), - &test_number)); - EXPECT_EQ(non_extn_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(1800) 7493.5247", RegionCode::US(), - &test_number)); - EXPECT_EQ(non_extn_number, test_number); - - // Check that the last instance of an extension token is matched. - PhoneNumber extn_number; - extn_number.set_country_code(1); - extn_number.set_national_number(80074935247ULL); - extn_number.set_extension("1234"); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("0~0 1800 7493 5247 ~1234", RegionCode::PL(), - &test_number)); - EXPECT_EQ(extn_number, test_number); - - // Verifying bug-fix where the last digit of a number was previously omitted - // if it was a 0 when extracting the extension. Also verifying a few different - // cases of extensions. - PhoneNumber uk_number; - uk_number.set_country_code(44); - uk_number.set_national_number(2034567890ULL); - uk_number.set_extension("456"); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890x456", RegionCode::NZ(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890x456", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890 x456", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890 X456", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890 X 456", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890 X 456", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890 x 456 ", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44 2034567890 X 456", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+44-2034567890;ext=456", RegionCode::GB(), - &test_number)); - EXPECT_EQ(uk_number, test_number); - - PhoneNumber us_with_extension; - us_with_extension.set_country_code(1); - us_with_extension.set_national_number(8009013355ULL); - us_with_extension.set_extension("7246433"); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(800) 901-3355 x 7246433", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(800) 901-3355 , ext 7246433", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(800) 901-3355 ,extension 7246433", - RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(800) 901-3355 ,extensión 7246433", - RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); - test_number.Clear(); - // Repeat with the small letter o with acute accent created by combining - // characters. - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(800) 901-3355 ,extensión 7246433", - RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(800) 901-3355 , 7246433", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(800) 901-3355 ext: 7246433", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); - - // Test that if a number has two extensions specified, we ignore the second. - PhoneNumber us_with_two_extensions_number; - us_with_two_extensions_number.set_country_code(1); - us_with_two_extensions_number.set_national_number(2121231234ULL); - us_with_two_extensions_number.set_extension("508"); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(212)123-1234 x508/x1234", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_two_extensions_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(212)123-1234 x508/ x1234", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_two_extensions_number, test_number); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("(212)123-1234 x508\\x1234", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_two_extensions_number, test_number); - - // Test parsing numbers in the form (645) 123-1234-910# works, where the last - // 3 digits before the # are an extension. - us_with_extension.Clear(); - us_with_extension.set_country_code(1); - us_with_extension.set_national_number(6451231234ULL); - us_with_extension.set_extension("910"); - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.Parse("+1 (645) 123 1234-910#", RegionCode::US(), - &test_number)); - EXPECT_EQ(us_with_extension, test_number); -} - -TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) { - PhoneNumber alpha_numeric_number; - alpha_numeric_number.set_country_code(1); - alpha_numeric_number.set_national_number(80074935247ULL); - alpha_numeric_number.set_raw_input("800 six-flags"); - alpha_numeric_number.set_country_code_source( - PhoneNumber::FROM_DEFAULT_COUNTRY); - alpha_numeric_number.set_preferred_domestic_carrier_code(""); - - PhoneNumber test_number; - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("800 six-flags", RegionCode::US(), - &test_number)); - EXPECT_EQ(alpha_numeric_number, test_number); - - alpha_numeric_number.set_national_number(8007493524ULL); - alpha_numeric_number.set_raw_input("1800 six-flag"); - alpha_numeric_number.set_country_code_source( - PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("1800 six-flag", RegionCode::US(), - &test_number)); - EXPECT_EQ(alpha_numeric_number, test_number); - - alpha_numeric_number.set_raw_input("+1800 six-flag"); - alpha_numeric_number.set_country_code_source( - PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("+1800 six-flag", RegionCode::CN(), - &test_number)); - EXPECT_EQ(alpha_numeric_number, test_number); - - alpha_numeric_number.set_raw_input("001800 six-flag"); - alpha_numeric_number.set_country_code_source( - PhoneNumber::FROM_NUMBER_WITH_IDD); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("001800 six-flag", - RegionCode::NZ(), - &test_number)); - EXPECT_EQ(alpha_numeric_number, test_number); - - // Try with invalid region - expect failure. - test_number.Clear(); - EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR, - phone_util_.Parse("123 456 7890", RegionCode::CS(), &test_number)); - EXPECT_EQ(PhoneNumber::default_instance(), test_number); - - PhoneNumber korean_number; - korean_number.set_country_code(82); - korean_number.set_national_number(22123456); - korean_number.set_raw_input("08122123456"); - korean_number.set_country_code_source(PhoneNumber::FROM_DEFAULT_COUNTRY); - korean_number.set_preferred_domestic_carrier_code("81"); - EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("08122123456", - RegionCode::KR(), - &test_number)); - EXPECT_EQ(korean_number, test_number); -} - -TEST_F(PhoneNumberUtilTest, IsAlphaNumber) { - static const string kAlphaNumber("1800 six-flags"); - EXPECT_TRUE(phone_util_.IsAlphaNumber(kAlphaNumber)); - static const string kAlphaNumberWithExtension = "1800 six-flags ext. 1234"; - EXPECT_TRUE(phone_util_.IsAlphaNumber(kAlphaNumberWithExtension)); - static const string kNonAlphaNumber("1800 123-1234"); - EXPECT_FALSE(phone_util_.IsAlphaNumber(kNonAlphaNumber)); - static const string kNonAlphaNumberWithExtension( - "1800 123-1234 extension: 1234"); - EXPECT_FALSE(phone_util_.IsAlphaNumber(kNonAlphaNumberWithExtension)); -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/re2_cache.cc b/third_party/libphonenumber/cpp/src/re2_cache.cc deleted file mode 100644 index 1abf95e..0000000 --- a/third_party/libphonenumber/cpp/src/re2_cache.cc +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Fredrik Roubert <roubert@google.com> - -#include "re2_cache.h" - -#include <cstddef> -#include <string> -#include <utility> - -#include <re2/re2.h> - -#include "base/logging.h" -#include "base/synchronization/lock.h" - -using std::string; - -// A basic text book string hash function implementation, this one taken from -// The Practice of Programming (Kernighan and Pike 1999). It could be a good -// idea in the future to evaluate how well it actually performs and possibly -// switch to another hash function better suited to this particular use case. -namespace __gnu_cxx { -template<> struct hash<string> { - enum { MULTIPLIER = 31 }; - size_t operator()(const string& key) const { - size_t h = 0; - for (const char* p = key.c_str(); *p != '\0'; ++p) { - h *= MULTIPLIER; - h += *p; - } - return h; - } -}; -} // namespace __gnu_cxx - -namespace i18n { -namespace phonenumbers { - -RE2Cache::RE2Cache(size_t min_items) : cache_impl_(new CacheImpl(min_items)) {} -RE2Cache::~RE2Cache() { - base::AutoLock l(lock_); - LOG(2) << "Cache entries upon destruction: " << cache_impl_->size(); - for (CacheImpl::const_iterator - it = cache_impl_->begin(); it != cache_impl_->end(); ++it) { - delete it->second; - } -} - -RE2Cache::ScopedAccess::ScopedAccess(RE2Cache* cache, const string& pattern) { - DCHECK(cache); - base::AutoLock l(cache->lock_); - CacheImpl* const cache_impl = cache->cache_impl_.get(); - CacheImpl::const_iterator it = cache_impl->find(pattern); - if (it != cache_impl->end()) { - regexp_ = it->second; - } else { - regexp_ = new RE2(pattern); - cache_impl->insert(make_pair(pattern, regexp_)); - } -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/re2_cache.h b/third_party/libphonenumber/cpp/src/re2_cache.h deleted file mode 100644 index ab2e9bb..0000000 --- a/third_party/libphonenumber/cpp/src/re2_cache.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Fredrik Roubert <roubert@google.com> - -// RE2Cache is a simple wrapper around hash_map<> to store RE2 objects. -// -// To get a cached RE2 object for a regexp pattern string, create a ScopedAccess -// object with a pointer to the cache object and the pattern string itself as -// constructor parameters. If an RE2 object corresponding to the pattern string -// doesn't already exist, it will be created by the access object constructor. -// The access object implements operator const RE& and can therefore be passed -// as an argument to any function that expects an RE2 object. -// -// RE2Cache cache; -// RE2Cache::ScopedAccess foo(&cache, "foo"); -// bool match = RE2::FullMatch("foobar", foo); - -#ifndef I18N_PHONENUMBERS_RE2_CACHE_H_ -#define I18N_PHONENUMBERS_RE2_CACHE_H_ - -#ifdef __DEPRECATED -#undef __DEPRECATED // Don't warn for using <hash_map>. -#endif - -#include <cstddef> -#include <hash_map> -#include <string> - -#include "base/scoped_ptr.h" -#include "base/synchronization/lock.h" - -namespace re2 { -class RE2; -} // namespace re2 - -namespace i18n { -namespace phonenumbers { - -using re2::RE2; -using std::string; -using __gnu_cxx::hash_map; - -class RE2Cache { - private: - typedef hash_map<string, const RE2*> CacheImpl; - - public: - explicit RE2Cache(size_t min_items); - ~RE2Cache(); - - class ScopedAccess { - public: - ScopedAccess(RE2Cache* cache, const string& pattern); - operator const RE2&() const { return *regexp_; } - - private: - const RE2* regexp_; - friend class RE2CacheTest_AccessConstructor_Test; - }; - - private: - base::Lock lock_; // protects cache_impl_ - scoped_ptr<CacheImpl> cache_impl_; // protected by lock_ - friend class RE2CacheTest_CacheConstructor_Test; - friend class RE2CacheTest_AccessConstructor_Test; -}; - -} // namespace phonenumbers -} // namespace i18n - -#endif // I18N_PHONENUMBERS_RE2_CACHE_H_ diff --git a/third_party/libphonenumber/cpp/src/re2_cache_test.cc b/third_party/libphonenumber/cpp/src/re2_cache_test.cc deleted file mode 100644 index 70f6c44..0000000 --- a/third_party/libphonenumber/cpp/src/re2_cache_test.cc +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Fredrik Roubert <roubert@google.com> - -#include <cstddef> -#include <string> - -#include <gtest/gtest.h> -#include <re2/re2.h> - -#include "re2_cache.h" - -namespace i18n { -namespace phonenumbers { - -using std::string; - -class RE2CacheTest : public testing::Test { - protected: - static const size_t min_items_ = 2; - - RE2CacheTest() : cache_(min_items_) {} - virtual ~RE2CacheTest() {} - - RE2Cache cache_; -}; - -TEST_F(RE2CacheTest, CacheConstructor) { - ASSERT_TRUE(cache_.cache_impl_ != NULL); - EXPECT_TRUE(cache_.cache_impl_->empty()); -} - -TEST_F(RE2CacheTest, AccessConstructor) { - static const string foo("foo"); - RE2Cache::ScopedAccess access(&cache_, foo); - - EXPECT_TRUE(access.regexp_ != NULL); - ASSERT_TRUE(cache_.cache_impl_ != NULL); - EXPECT_EQ(1, cache_.cache_impl_->size()); -} - -TEST_F(RE2CacheTest, OperatorRE2) { - static const string foo("foo"); - RE2Cache::ScopedAccess access(&cache_, foo); - - const RE2& regexp = access; - EXPECT_EQ(foo, regexp.pattern()); -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/regexp_adapter.h b/third_party/libphonenumber/cpp/src/regexp_adapter.h deleted file mode 100644 index 233adbe..0000000 --- a/third_party/libphonenumber/cpp/src/regexp_adapter.h +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: George Yakovlev - -#ifndef I18N_PHONENUMBERS_REGEXP_ADAPTER_H_ -#define I18N_PHONENUMBERS_REGEXP_ADAPTER_H_ - -#include <string> - -// Regexp adapter to allow pluggable regexp engine, as it is external to -// libphonenumber. - -namespace reg_exp { - -// The reg exp input class. -// It supports only functions used in phonelibrary. -class RegularExpressionInput { - public: - virtual ~RegularExpressionInput() {}; - - // Matches string to regular expression, returns true if expression was - // matched, false otherwise, advances position in the match. - // |reg_exp| - expression to be matched. - // |beginning_only| - if true match would be successfull only if appears at - // the beginning of the tested region of the string. - // |matched_string1| - successfully matched first string. Can be NULL. - // |matched_string2| - successfully matched second string. Can be NULL. - virtual bool ConsumeRegExp(std::string const& reg_exp, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2) = 0; - // Convert unmatched input to a string. - virtual std::string ToString() const = 0; -}; - -// The regular expression class. -// It supports only functions used in phonelibrary. -class RegularExpression { - public: - RegularExpression() {} - virtual ~RegularExpression() {} - - // Matches string to regular expression, returns true if expression was - // matched, false otherwise, advances position in the match. - // |input_string| - string to be searched. - // |beginning_only| - if true match would be successfull only if appears at - // the beginning of the tested region of the string. - // |matched_string1| - successfully matched first string. Can be NULL. - // |matched_string2| - successfully matched second string. Can be NULL. - // |matched_string3| - successfully matched third string. Can be NULL. - virtual bool Consume(RegularExpressionInput* input_string, - bool beginning_only, - std::string* matched_string1 = NULL, - std::string* matched_string2 = NULL, - std::string* matched_string3 = NULL) const = 0; - - - // Matches string to regular expression, returns true if expression was - // matched, false otherwise. - // |input_string| - string to be searched. - // |full_match| - if true match would be successfull only if it matches the - // complete string. - // |matched_string| - successfully matched string. Can be NULL. - virtual bool Match(const char* input_string, - bool full_match, - std::string* matched_string) const = 0; - - // Replaces match(es) in the |string_to_process|. if |global| is true, - // replaces all the matches, only the first match otherwise. - // |replacement_string| - text the matches are replaced with. - // Returns true if expression successfully processed through the string, - // even if no actual replacements were made. Returns false in case of an - // error. - virtual bool Replace(std::string* string_to_process, - bool global, - const char* replacement_string) const = 0; -}; - -RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input); -RegularExpression* CreateRegularExpression(const char* utf8_regexp); - -} // namespace reg_exp - -#endif // I18N_PHONENUMBERS_REGEXP_ADAPTER_H_ diff --git a/third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc b/third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc deleted file mode 100644 index f7a230c..0000000 --- a/third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: George Yakovlev -#include "regexp_adapter.h" - -#include <re2/re2.h> -#include <re2/stringpiece.h> -#include <re2/re2.h> - -namespace { -scoped_ptr<RE2Cache> re2_cache; -} // namespace - -class RE2RegularExpressionInput : public RegularExpressionInput { - public: - RE2RegularExpressionInput(const char* utf8_input); - - virtual bool ConsumeRegExp(std::string const& reg_exp, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2); - virtual std::string ToString() const; - private: - StringPiece utf8_input_; -}; - - -class RE2RegularExpression : public reg_exp::RegularExpression { - public: - RE2RegularExpression(const char* utf8_regexp); - - virtual bool Consume(reg_exp::RegularExpressionInput* input_string, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2, - std::string* matched_string3) const; - - virtual bool Match(const char* input_string, - bool full_match, - std::string* matched_string) const; - - virtual bool Replace(std::string* string_to_process, - bool global, - const char* replacement_string) const; - private: - RE2 utf8_regexp_; -}; - -RE2RegularExpressionInput::RE2RegularExpressionInput(const char* utf8_input) - : utf8_input_(utf8_input) { - DCHECK(utf8_input); -} - -bool RE2RegularExpressionInput::ConsumeRegExp(std::string const& reg_exp, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2) { - if (beginning_only) { - if (matched_string2) - return RE2::Consume(&utf8_input_, - RE2Cache::ScopedAccess(re2_cache.get(), reg_exp), - matched_string1, matched_string2); - else if (matched_string1) - return RE2::Consume(&utf8_input_, - RE2Cache::ScopedAccess(re2_cache.get(), reg_exp), - matched_string1); - else - return RE2::Consume(&utf8_input_, - RE2Cache::ScopedAccess(re2_cache.get(), reg_exp)); - } else { - if (matched_string2) - return RE2::FindAndConsume(&utf8_input_, - RE2Cache::ScopedAccess(re2_cache.get(), - reg_exp), - matched_string1, matched_string2); - else if (matched_string1) - return RE2::FindAndConsume(&utf8_input_, - RE2Cache::ScopedAccess(re2_cache.get(), - reg_exp), - matched_string1); - else - return RE2::FindAndConsume(&utf8_input_, - RE2Cache::ScopedAccess(re2_cache.get(), - reg_exp)); - } -} - -std::string RE2RegularExpressionInput::ToString() const { - utf8_input_.ToString(); -} - -RE2RegularExpression::RE2RegularExpression(const char* utf8_regexp) - : utf8_regexp_(utf8_regexp) { - DCHECK(utf8_regexp); -} - -bool RE2RegularExpression::Consume(RegularExpressionInput* input_string, - bool beginning_only, - std::string* matched_string1, - std::string* matched_string2, - std::string* matched_string3) const { - DCHECK(input_string); - // matched_string1 may be NULL - // matched_string2 may be NULL - if (beginning_only) { - if (matched_string3) { - return RE2::Consume(input_string, utf8_regexp_, - matched_string1, matched_string2, matched_string3); - } else if (matched_string2) { - return RE2::Consume(input_string, utf8_regexp_, - matched_string1, matched_string2); - } else if (matched_string1) { - return RE2::Consume(input_string, utf8_regexp_, matched_string1); - } else { - return RE2::Consume(input_string, utf8_regexp_); - } - } else { - if (matched_string3) { - return RE2::FindAndConsume(input_string, utf8_regexp_, - matched_string1, matched_string2, - matched_string3); - } else if (matched_string2) { - return RE2::FindAndConsume(input_string, utf8_regexp_, - matched_string1, matched_string2); - } else if (matched_string1) { - return RE2::FindAndConsume(input_string, utf8_regexp_, matched_string1); - } else { - return RE2::FindAndConsume(input_string, utf8_regexp_); - } - } -} - -bool RE2RegularExpression::Match(const char* input_string, - bool full_match, - std::string* matched_string) const { - DCHECK(input_string); - // matched_string may be NULL - if (full_match) { - if (matched_string) - return RE2::FullMatch(input_string, matched_string); - else - return RE2::FullMatch(input_string); - } else { - if (matched_string) - return RE2::PartialMatch(input_string, matched_string); - else - return RE2::PartialMatch(input_string); - } -} - -bool RE2RegularExpression::Replace(std::string* string_to_process, - bool global, - const char* replacement_string) const { - DCHECK(string_to_process); - DCHECK(replacement_string); - if (global) { - StringPiece str(replacement_string); - return RE2::GlobalReplace(string_to_process, str); - } else { - return RE2::Replace(string_to_process, replacement_string); - } -} - - -namespace reg_exp { - -RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input) { - if (!re2_cache.get()) - re2_cache.reset(new RE2Cache(64)); - return new RE2RegularExpressionInput(utf8_input); -} - -RegularExpression* CreateRegularExpression(const char* utf8_regexp) { - if (!re2_cache.get()) - re2_cache.reset(new RE2Cache(64)); - return new RE2RegularExpression(utf8_regexp); -} - -} // namespace reg_exp - diff --git a/third_party/libphonenumber/cpp/src/regexp_adapter_unittest.cc b/third_party/libphonenumber/cpp/src/regexp_adapter_unittest.cc deleted file mode 100644 index 446f83c..0000000 --- a/third_party/libphonenumber/cpp/src/regexp_adapter_unittest.cc +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: George Yakovlev -#include <gtest/gtest.h> - -#include "base/scoped_ptr.h" -#include "regexp_adapter.h" - -namespace reg_exp { - -TEST(RegExpAdapter, TestConsumeRegExp) { - scoped_ptr<const reg_exp::RegularExpression> reg_exp1( - reg_exp::CreateRegularExpression("[0-9a-z]+")); - scoped_ptr<const reg_exp::RegularExpression> reg_exp2( - reg_exp::CreateRegularExpression(" \\(([0-9a-z]+)\\)")); - scoped_ptr<const reg_exp::RegularExpression> reg_exp3( - reg_exp::CreateRegularExpression("([0-9a-z]+)-([0-9a-z]+)")); - - scoped_ptr<reg_exp::RegularExpressionInput> reg_input1( - reg_exp::CreateRegularExpressionInput("+1-123-456-789")); - scoped_ptr<reg_exp::RegularExpressionInput> reg_input2( - reg_exp::CreateRegularExpressionInput("1 (123)456-789")); - - EXPECT_FALSE(reg_exp1->Consume(reg_input1.get(), true, NULL, NULL)); - EXPECT_EQ(reg_input1->ToString(), "+1-123-456-789"); - EXPECT_TRUE(reg_exp1->Consume(reg_input1.get(), false, NULL, NULL)); - EXPECT_EQ(reg_input1->ToString(), "-123-456-789"); - std::string res1, res2; - EXPECT_FALSE(reg_exp2->Consume(reg_input1.get(), true, &res1, NULL)); - EXPECT_FALSE(reg_exp3->Consume(reg_input1.get(), true, &res1, &res2)); - EXPECT_TRUE(reg_exp3->Consume(reg_input1.get(), false, &res1, &res2)); - EXPECT_EQ(reg_input1->ToString(), "-789"); - EXPECT_EQ(res1, "123"); - EXPECT_EQ(res2, "456"); - - EXPECT_EQ(reg_input2->ToString(), "1 (123)456-789"); - EXPECT_TRUE(reg_exp1->Consume(reg_input2.get(), true, NULL, NULL)); - EXPECT_EQ(reg_input2->ToString(), " (123)456-789"); - EXPECT_TRUE(reg_exp2->Consume(reg_input2.get(), true, &res1, NULL)); - EXPECT_EQ(reg_input2->ToString(), "456-789"); - EXPECT_EQ(res1, "123"); - EXPECT_TRUE(reg_exp3->Consume(reg_input2.get(), true, &res1, &res2)); - EXPECT_EQ(reg_input2->ToString(), ""); - EXPECT_EQ(res1, "456"); - EXPECT_EQ(res2, "789"); -} - -TEST(RegExpAdapter, TestConsumeInput) { - scoped_ptr<reg_exp::RegularExpressionInput> reg_input( - reg_exp::CreateRegularExpressionInput("1 (123)456-789")); - std::string res1, res2; - EXPECT_EQ(reg_input->ToString(), "1 (123)456-789"); - EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("\\[1\\]"), - true, - &res1, - &res2)); - EXPECT_EQ(reg_input->ToString(), "1 (123)456-789"); - EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\([0-9]+\\)"), - true, - &res1, - &res2)); - EXPECT_EQ(reg_input->ToString(), "1 (123)456-789"); - EXPECT_TRUE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\(([0-9]+)\\)"), - true, - &res1, - &res2)); - EXPECT_EQ(reg_input->ToString(), "456-789"); - EXPECT_EQ(res1, "1"); - EXPECT_EQ(res2, "123"); -} - -TEST(RegExpAdapter, TestMatch) { - scoped_ptr<const reg_exp::RegularExpression> reg_exp( - reg_exp::CreateRegularExpression("([0-9a-z]+)")); - std::string matched; - EXPECT_TRUE(reg_exp->Match("12345af", true, &matched)); - EXPECT_EQ(matched, "12345af"); - EXPECT_TRUE(reg_exp->Match("12345af", false, &matched)); - EXPECT_EQ(matched, "12345af"); - EXPECT_TRUE(reg_exp->Match("12345af", false, NULL)); - EXPECT_TRUE(reg_exp->Match("12345af", true, NULL)); - - EXPECT_FALSE(reg_exp->Match("[12]", true, &matched)); - EXPECT_TRUE(reg_exp->Match("[12]", false, &matched)); - EXPECT_EQ(matched, "12"); - - EXPECT_FALSE(reg_exp->Match("[]", true, &matched)); - EXPECT_FALSE(reg_exp->Match("[]", false, &matched)); -} - -TEST(RegExpAdapter, TestReplace) { - scoped_ptr<const reg_exp::RegularExpression> reg_exp( - reg_exp::CreateRegularExpression("[0-9]")); - - std::string s("123-4567 "); - EXPECT_TRUE(reg_exp->Replace(&s, false, "+")); - EXPECT_EQ(s, "+23-4567 "); - EXPECT_TRUE(reg_exp->Replace(&s, false, "+")); - EXPECT_EQ(s, "++3-4567 "); - EXPECT_TRUE(reg_exp->Replace(&s, true, "*")); - EXPECT_EQ(s, "++*-**** "); - EXPECT_TRUE(reg_exp->Replace(&s, true, "*")); - EXPECT_EQ(s, "++*-**** "); - - scoped_ptr<const reg_exp::RegularExpression> full_number_expr( - reg_exp::CreateRegularExpression("(\\d{3})(\\d{3})(\\d{4})")); - s = "1234567890:0987654321"; - EXPECT_TRUE(full_number_expr->Replace(&s, true, "(\\1) \\2-\\3$1")); - EXPECT_EQ(s, "(123) 456-7890$1:(098) 765-4321$1"); -} - -TEST(RegExpAdapter, TestUtf8) { - // Expression: <tel symbol><opening square bracket>[<alpha>-<omega>]* - // <closing square bracket> - scoped_ptr<const reg_exp::RegularExpression> reg_exp( - reg_exp::CreateRegularExpression( - "\xe2\x84\xa1\xe2\x8a\x8f([\xce\xb1-\xcf\x89]*)\xe2\x8a\x90")); - std::string matched; - // The string is split to avoid problem with MSVC compiler when it thinks - // 123 is a part of character code. - EXPECT_FALSE(reg_exp->Match("\xe2\x84\xa1\xe2\x8a\x8f" "123\xe2\x8a\x90", - true, &matched)); - EXPECT_TRUE(reg_exp->Match( - "\xe2\x84\xa1\xe2\x8a\x8f\xce\xb1\xce\xb2\xe2\x8a\x90", true, &matched)); - // <alpha><betha> - EXPECT_EQ(matched, "\xce\xb1\xce\xb2"); -} - -} // namespace reg_exp - diff --git a/third_party/libphonenumber/cpp/src/run_tests.cc b/third_party/libphonenumber/cpp/src/run_tests.cc deleted file mode 100644 index b38e7bc..0000000 --- a/third_party/libphonenumber/cpp/src/run_tests.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include <gtest/gtest.h> - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - - return RUN_ALL_TESTS(); -} diff --git a/third_party/libphonenumber/cpp/src/stringutil.cc b/third_party/libphonenumber/cpp/src/stringutil.cc deleted file mode 100644 index 70ec010..0000000 --- a/third_party/libphonenumber/cpp/src/stringutil.cc +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#include <cassert> -#include <cstring> -#include <sstream> - -#include "stringutil.h" - -namespace i18n { -namespace phonenumbers { - -using std::stringstream; - -string operator+(const string& s, int n) { - stringstream stream; - - stream << s << n; - string result; - stream >> result; - - return result; -} - -template <typename T> -string GenericSimpleItoa(const T& n) { - stringstream stream; - - stream << n; - string result; - stream >> result; - - return result; -} - -string SimpleItoa(int n) { - return GenericSimpleItoa(n); -} - -string SimpleItoa(uint64 n) { - return GenericSimpleItoa(n); -} - -void StripString(string* s, const char* remove, char replacewith) { - const char* str_start = s->c_str(); - const char* str = str_start; - for (str = strpbrk(str, remove); - str != NULL; - str = strpbrk(str + 1, remove)) { - (*s)[str - str_start] = replacewith; - } -} - -bool TryStripPrefixString(const string& in, const string& prefix, string* out) { - assert(out); - const bool has_prefix = in.compare(0, prefix.length(), prefix) == 0; - out->assign(has_prefix ? in.substr(prefix.length()) : in); - - return has_prefix; -} - -bool HasSuffixString(const string& s, const string& suffix) { - if (s.length() < suffix.length()) { - return false; - } - return s.compare(s.length() - suffix.length(), suffix.length(), suffix) == 0; -} - -template <typename T> -void GenericAtoi(const string& s, T* out) { - stringstream stream; - stream << s; - stream >> *out; -} - -void safe_strto32(const string& s, int32 *n) { - GenericAtoi(s, n); -} - -void safe_strtou64(const string& s, uint64 *n) { - GenericAtoi(s, n); -} - -void strrmm(string* s, const string& chars) { - for (string::iterator it = s->begin(); it != s->end(); ) { - const char current_char = *it; - if (chars.find(current_char) != string::npos) { - it = s->erase(it); - } else { - ++it; - } - } -} - -// StringHolder class - -StringHolder::StringHolder(const string& s) : - string_(&s), - cstring_(NULL), - len_(s.size()) -{} - -StringHolder::StringHolder(const char* s) : - string_(NULL), - cstring_(s), - len_(std::strlen(s)) -{} - -StringHolder::StringHolder(uint64 n) : - converted_string_(SimpleItoa(n)), - string_(&converted_string_), - cstring_(NULL), - len_(converted_string_.length()) -{} - -StringHolder::~StringHolder() {} - -// StrCat - -// Implements s += sh; (s: string, sh: StringHolder) -string& operator+=(string& lhs, const StringHolder& rhs) { - const string* const s = rhs.GetString(); - if (s) { - lhs += *s; - } else { - const char* const cs = rhs.GetCString(); - if (cs) - lhs.append(cs, rhs.Length()); - } - return lhs; -} - -string StrCat(const StringHolder& s1, const StringHolder& s2) { - string result; - result.reserve(s1.Length() + s2.Length() + 1); - - result += s1; - result += s2; - - return result; -} - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3) { - string result; - result.reserve(s1.Length() + s2.Length() + s3.Length() + 1); - - result += s1; - result += s2; - result += s3; - - return result; -} - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4) { - string result; - result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() + 1); - - result += s1; - result += s2; - result += s3; - result += s4; - - return result; -} - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5) { - string result; - result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() + - s5.Length() + 1); - result += s1; - result += s2; - result += s3; - result += s4; - result += s5; - - return result; -} - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5, const StringHolder& s6) { - string result; - result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() + - s5.Length() + s6.Length() + 1); - result += s1; - result += s2; - result += s3; - result += s4; - result += s5; - result += s6; - - return result; -} - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5, const StringHolder& s6, - const StringHolder& s7) { - string result; - result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() + - s5.Length() + s6.Length() + s7.Length() + 1); - result += s1; - result += s2; - result += s3; - result += s4; - result += s5; - result += s6; - result += s7; - - return result; -} - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5, const StringHolder& s6, - const StringHolder& s7, const StringHolder& s8, - const StringHolder& s9, const StringHolder& s10, - const StringHolder& s11) { - string result; - result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() + - s5.Length() + s6.Length() + s7.Length() + s8.Length() + - s9.Length() + s10.Length() + s11.Length()); - result += s1; - result += s2; - result += s3; - result += s4; - result += s5; - result += s6; - result += s7; - result += s8; - result += s9; - result += s10; - result += s11; - - return result; -} - -// StrAppend - -void StrAppend(string* dest, const StringHolder& s1) { - assert(dest); - - dest->reserve(dest->length() + s1.Length() + 1); - *dest += s1; -} - -void StrAppend(string* dest, const StringHolder& s1, const StringHolder& s2) { - assert(dest); - - dest->reserve(dest->length() + s1.Length() + s2.Length() + 1); - *dest += s1; - *dest += s2; -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/stringutil.h b/third_party/libphonenumber/cpp/src/stringutil.h deleted file mode 100644 index a9ba6fc..0000000 --- a/third_party/libphonenumber/cpp/src/stringutil.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#ifndef I18N_PHONENUMBERS_STRINGUTIL_H_ -#define I18N_PHONENUMBERS_STRINGUTIL_H_ - -#include <cstddef> -#include <string> - -#include "base/basictypes.h" - -namespace i18n { -namespace phonenumbers { - -using std::string; - -// Supports string("hello") + 10. -string operator+(const string& s, int n); - -// Converts integer to string. -string SimpleItoa(uint64 n); -string SimpleItoa(int n); - -// Replaces any occurrence of the character 'remove' (or the characters -// in 'remove') with the character 'replacewith'. -void StripString(string* s, const char* remove, char replacewith); - -// Returns true if 'in' starts with 'prefix' and writes 'in' minus 'prefix' into -// 'out'. -bool TryStripPrefixString(const string& in, const string& prefix, string* out); - -// Returns true if 's' ends with 'suffix'. -bool HasSuffixString(const string& s, const string& suffix); - -// Converts string to int32. -void safe_strto32(const string& s, int32 *n); - -// Converts string to uint64. -void safe_strtou64(const string& s, uint64 *n); - -// Remove all occurrences of a given set of characters from a string. -void strrmm(string* s, const string& chars); - -// Holds a reference to a std::string or C string. It can also be constructed -// from an integer which is converted to a string. -class StringHolder { -public: - // Don't make the constructors explicit to make the StrCat usage convenient. - StringHolder(const string& s); - StringHolder(const char* s); - StringHolder(uint64 n); - ~StringHolder(); - - const string* GetString() const { - return string_; - } - - const char* GetCString() const { - return cstring_; - } - - size_t Length() const { - return len_; - } - -private: - const string converted_string_; // Stores the string converted from integer. - const string* const string_; - const char* const cstring_; - const size_t len_; -}; - -string& operator+=(string& lhs, const StringHolder& rhs); - -// Efficient string concatenation. - -string StrCat(const StringHolder& s1, const StringHolder& s2); - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3); - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4); - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5); - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5, const StringHolder& s6); - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5, const StringHolder& s6, - const StringHolder& s7); - -string StrCat(const StringHolder& s1, const StringHolder& s2, - const StringHolder& s3, const StringHolder& s4, - const StringHolder& s5, const StringHolder& s6, - const StringHolder& s7, const StringHolder& s8, - const StringHolder& s9, const StringHolder& s10, - const StringHolder& s11); - -void StrAppend(string* dest, const StringHolder& s1); - -void StrAppend(string* dest, const StringHolder& s1, const StringHolder& s2); - -} // namespace phonenumbers -} // namespace i18n - -#endif // I18N_PHONENUMBERS_STRINGUTIL_H_ diff --git a/third_party/libphonenumber/cpp/src/stringutil_test.cc b/third_party/libphonenumber/cpp/src/stringutil_test.cc deleted file mode 100644 index 3d665e2..0000000 --- a/third_party/libphonenumber/cpp/src/stringutil_test.cc +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright (C) 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Philippe Liard - -#include <gtest/gtest.h> - -#include "stringutil.h" - -namespace i18n { -namespace phonenumbers { - -// Test operator+(const string&, int). -TEST(StringUtilTest, OperatorPlus) { - EXPECT_EQ("hello10", string("hello") + 10); -} - -// Test SimpleItoa implementation. -TEST(StringUtilTest, SimpleItoa) { - EXPECT_EQ("10", SimpleItoa(10)); -} - -// Test TryStripPrefixString. -TEST(StringUtilTest, TryStripPrefixString) { - string s; - - EXPECT_TRUE(TryStripPrefixString("hello world", "hello", &s)); - EXPECT_EQ(" world", s); - s.clear(); - - EXPECT_FALSE(TryStripPrefixString("hello world", "helloa", &s)); - s.clear(); - - EXPECT_TRUE(TryStripPrefixString("hello world", "", &s)); - EXPECT_EQ("hello world", s); - s.clear(); - - EXPECT_FALSE(TryStripPrefixString("", "hello", &s)); - s.clear(); -} - -// Test HasSuffixString. -TEST(StringUtilTest, HasSuffixString) { - EXPECT_TRUE(HasSuffixString("hello world", "hello world")); - EXPECT_TRUE(HasSuffixString("hello world", "world")); - EXPECT_FALSE(HasSuffixString("hello world", "world!")); - EXPECT_TRUE(HasSuffixString("hello world", "")); - EXPECT_FALSE(HasSuffixString("", "hello")); -} - -// Test safe_strto32. -TEST(StringUtilTest, safe_strto32) { - int32 n; - - safe_strto32("0", &n); - EXPECT_EQ(0, n); - - safe_strto32("16", &n); - EXPECT_EQ(16, n); - - safe_strto32("2147483647", &n); - EXPECT_EQ(2147483647, n); - - safe_strto32("-2147483648", &n); - EXPECT_EQ(-2147483648, n); -} - -// Test safe_strtou64. -TEST(StringUtilTest, safe_strtou64) { - uint64 n; - - safe_strtou64("0", &n); - EXPECT_EQ(0, n); - - safe_strtou64("16", &n); - EXPECT_EQ(16, n); - - safe_strtou64("18446744073709551615UL", &n); - EXPECT_EQ(18446744073709551615ULL, n); -} - -// Test strrmm. -TEST(StringUtilTest, strrmm) { - string input("hello"); - - strrmm(&input, ""); - EXPECT_EQ(input, input); - - string empty; - strrmm(&empty, ""); - EXPECT_EQ("", empty); - - strrmm(&empty, "aa"); - EXPECT_EQ("", empty); - - strrmm(&input, "h"); - EXPECT_EQ("ello", input); - - strrmm(&input, "el"); - EXPECT_EQ("o", input); -} - -// Test the StringHolder class. -TEST(StringUtilTest, StringHolder) { - // Test with C string. - static const char cstring[] = "aaa"; - StringHolder sh1(cstring); - EXPECT_EQ(cstring, sh1.GetCString()); - EXPECT_EQ(NULL, sh1.GetString()); - - // Test with std::string. - string s = "bbb"; - StringHolder sh2(s); - EXPECT_EQ(NULL, sh2.GetCString()); - EXPECT_EQ(&s, sh2.GetString()); - - // Test GetLength(). - string s2 = "hello"; - StringHolder sh3(s2); - EXPECT_EQ(5, sh3.Length()); - - // Test with uint64. - StringHolder sh4(42); - EXPECT_TRUE(sh4.GetCString() == NULL); - EXPECT_EQ(2, sh4.Length()); - EXPECT_EQ("42", *sh4.GetString()); -} - -// Test the operator+=(string& lhs, const StringHolder& rhs) implementation. -TEST(StringUtilTest, OperatorPlusEquals) { - // Test with a const char* string to append. - string s = "h"; - static const char append1[] = "ello"; - s += StringHolder(append1); // force StringHolder usage - - EXPECT_EQ("hello", s); - - // Test with a std::string to append. - s = "h"; - string append2 = "ello"; - s += StringHolder(append2); // force StringHolder usage - - EXPECT_EQ("hello", s); -} - -// Test the StrCat implementations -TEST(StringUtilTest, StrCat) { - string s; - - // Test with 2 arguments. - s = StrCat("a", "b"); - EXPECT_EQ("ab", s); - - // Test with 3 arguments. - s = StrCat("a", "b", "c"); - EXPECT_EQ("abc", s); - - // Test with 4 arguments. - s = StrCat("a", "b", "c", "d"); - EXPECT_EQ("abcd", s); - - // Test with 5 arguments. - s = StrCat("a", "b", "c", "d", "e"); - EXPECT_EQ("abcde", s); - - // Test with 6 arguments. - s = StrCat("a", "b", "c", "d", "e", "f"); - EXPECT_EQ("abcdef", s); - - // Test with 7 arguments. - s = StrCat("a", "b", "c", "d", "e", "f", "g"); - EXPECT_EQ("abcdefg", s); - - // Test with 11 arguments. - s = StrCat("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"); - EXPECT_EQ("abcdefghijk", s); -} - -// Test the StrAppend implementations. -TEST(StringUtilTest, StrAppend) { - string s; - - // Test with 1 argument. - StrAppend(&s, "a"); - EXPECT_EQ("a", s); - - // Test with 2 arguments. - StrAppend(&s, "b", "c"); - EXPECT_EQ("abc", s); - - // Test with int argument. - StrAppend(&s, 42); - EXPECT_EQ("abc42", s); -} - -} // namespace phonenumbers -} // namespace i18n diff --git a/third_party/libphonenumber/cpp/src/test_metadata.cc b/third_party/libphonenumber/cpp/src/test_metadata.cc deleted file mode 100644 index 6c1d409..0000000 --- a/third_party/libphonenumber/cpp/src/test_metadata.cc +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "test_metadata.h" - -static const unsigned char test_metadata_data[] = { 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x44, 0x50, 0xF8, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF8, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x31, 0x12, 0x1D, 0x32, 0x5C, 0x64, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5C, 0x64, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1F, 0x12, 0x0B, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4F, 0x50, 0xF4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x03, 0x30, 0x7E, 0x30, 0x7A, 0x03, 0x30, 0x7E, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF4, 0x05, 0x0A, 0x1C, 0x12, 0x10, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x16, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x1F, 0x12, 0x12, 0x39, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x22, 0x11, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x18, 0x12, 0x0E, 0x36, 0x28, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x52, 0x50, 0x36, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x15, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x31, 0x31, 0x7C, 0x33, 0x34, 0x33, 0x7C, 0x33, 0x37, 0x31, 0x35, 0x29, 0x31, 0x35, 0x29, 0x3F, 0x82, 0x01, 0x03, 0x39, 0x24, 0x31, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x13, 0x39, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x39, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x43, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x11, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x31, 0x20, 0x24, 0x43, 0x43, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x31, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x39, 0x29, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x39, 0x31, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x3C, 0x0A, 0x18, 0x28, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x11, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x29, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAF, 0x02, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x35, 0x7D, 0x12, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x12, 0x06, 0x34, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x22, 0x13, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x18, 0x12, 0x0E, 0x31, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x55, 0x50, 0x3D, 0x5A, 0x07, 0x30, 0x30, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x04, 0x30, 0x30, 0x31, 0x31, 0x9A, 0x01, 0x2A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC1, 0x02, 0x0A, 0x29, 0x12, 0x1D, 0x28, 0x32, 0x34, 0x32, 0x7C, 0x38, 0x28, 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x39, 0x30, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x6C, 0x12, 0x60, 0x32, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x37, 0x29, 0x7C, 0x35, 0x30, 0x32, 0x7C, 0x36, 0x33, 0x36, 0x7C, 0x37, 0x30, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x23, 0x12, 0x19, 0x32, 0x34, 0x32, 0x28, 0x33, 0x35, 0x37, 0x7C, 0x33, 0x35, 0x39, 0x7C, 0x34, 0x35, 0x37, 0x7C, 0x35, 0x35, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x22, 0x1D, 0x12, 0x13, 0x38, 0x28, 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x12, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x05, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x12, 0x4E, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x30, 0x12, 0x23, 0x31, 0x28, 0x35, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x36, 0x33, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x22, 0x12, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x23, 0x12, 0x16, 0x39, 0x30, 0x30, 0x28, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x45, 0x50, 0x31, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x18, 0x32, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x30, 0x36, 0x7C, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x34, 0x5D, 0x30, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x47, 0x0A, 0x10, 0x28, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x1A, 0x1E, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4C, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x1A, 0x1E, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x39, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC8, 0x03, 0x0A, 0x12, 0x12, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x16, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x18, 0x12, 0x0E, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x22, 0x11, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x15, 0x12, 0x0B, 0x39, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x21, 0x12, 0x17, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x3A, 0x11, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x42, 0x11, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x4A, 0x02, 0x47, 0x42, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x36, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x35, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x38, 0x5B, 0x34, 0x37, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8B, 0x03, 0x0A, 0x1A, 0x12, 0x0E, 0x5B, 0x30, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x16, 0x12, 0x09, 0x30, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x14, 0x12, 0x08, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x22, 0x1E, 0x12, 0x13, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x2A, 0x1E, 0x12, 0x13, 0x38, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x54, 0x50, 0x27, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x96, 0x03, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4A, 0x50, 0x50, 0x51, 0x5A, 0x03, 0x30, 0x31, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x1A, 0x0C, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x29, 0x31, 0x1A, 0x0D, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x29, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x52, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x1A, 0x09, 0x32, 0x32, 0x32, 0x31, 0x7C, 0x33, 0x33, 0x33, 0x32, 0x1A, 0x0A, 0x32, 0x32, 0x32, 0x31, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x32, 0x1A, 0x0B, 0x32, 0x32, 0x32, 0x31, 0x32, 0x30, 0x7C, 0x33, 0x33, 0x33, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x03, 0x2A, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBD, 0x0B, 0x0A, 0x20, 0x12, 0x14, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4C, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x10, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0C, 0x36, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1D, 0x12, 0x07, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4B, 0x52, 0x50, 0x52, 0x5A, 0x18, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x15, 0x30, 0x28, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x9A, 0x01, 0x70, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x1A, 0x25, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x39, 0x7C, 0x38, 0x29, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x98, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x3B, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x04, 0x31, 0x33, 0x31, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x09, 0x31, 0x33, 0x31, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x02, 0x33, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6C, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x1A, 0x31, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x88, 0x01, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x1A, 0x49, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x47, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0A, 0x32, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x1A, 0x1E, 0x32, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x06, 0x32, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x1A, 0x18, 0x32, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6D, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x1A, 0x17, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x1A, 0x27, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5F, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x1A, 0x0F, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x1A, 0x21, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDC, 0x06, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x16, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x11, 0x12, 0x07, 0x31, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x22, 0x12, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x12, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x58, 0x50, 0x34, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x02, 0x30, 0x31, 0x7A, 0x11, 0x30, 0x31, 0x7C, 0x30, 0x34, 0x5B, 0x34, 0x35, 0x5D, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x29, 0x82, 0x01, 0x03, 0x31, 0x24, 0x31, 0x9A, 0x01, 0x2D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x4F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x16, 0x31, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x55, 0x0A, 0x16, 0x31, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x2D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x4D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x38, 0x0A, 0x18, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x54, 0x0A, 0x18, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x03, 0x0A, 0x23, 0x12, 0x17, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x3C, 0x12, 0x31, 0x32, 0x34, 0x30, 0x39, 0x39, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x5E, 0x12, 0x52, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x22, 0x16, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x2A, 0x16, 0x12, 0x0A, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x5A, 0x50, 0x40, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x32, 0x34, 0x7C, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x14, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFE, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x28, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x22, 0x11, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x2A, 0x10, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x4C, 0x50, 0x30, 0x5A, 0x03, 0x30, 0x7E, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1C, 0x12, 0x08, 0x32, 0x36, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x32, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x26, 0x12, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x38, 0x12, 0x24, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x45, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x21, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x13, 0x32, 0x36, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD4, 0x02, 0x0A, 0x22, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x12, 0x12, 0x09, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x22, 0x17, 0x12, 0x0A, 0x31, 0x3F, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x2A, 0x13, 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x47, 0x50, 0x41, 0x5A, 0x0B, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x9A, 0x01, 0x29, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDF, 0x03, 0x0A, 0x39, 0x12, 0x1A, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x12, 0x39, 0x12, 0x1A, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x39, 0x12, 0x1A, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x22, 0x2B, 0x12, 0x15, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x6A, 0x07, 0x20, 0x65, 0x78, 0x74, 0x6E, 0x2E, 0x20, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x23, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD8, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x22, 0x12, 0x0E, 0x32, 0x36, 0x39, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x39, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x08, 0x36, 0x33, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x59, 0x54, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x07, 0x32, 0x36, 0x39, 0x7C, 0x36, 0x33, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, }; - -int test_metadata_size() { - return sizeof(test_metadata_data) / sizeof(test_metadata_data[0]); -} - -const void* test_metadata_get() { - return test_metadata_data; -} diff --git a/third_party/libphonenumber/cpp/src/test_metadata.h b/third_party/libphonenumber/cpp/src/test_metadata.h deleted file mode 100644 index 4eaa5c7..0000000 --- a/third_party/libphonenumber/cpp/src/test_metadata.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef EMBEDDED_DATA_TEST_METADATA_H_ -#define EMBEDDED_DATA_TEST_METADATA_H_ - -int test_metadata_size(); -const void* test_metadata_get(); - -#endif // EMBEDDED_DATA_TEST_METADATA_H_ diff --git a/third_party/libphonenumber/cpp/src/utf/README b/third_party/libphonenumber/cpp/src/utf/README deleted file mode 100644 index 986e9e3..0000000 --- a/third_party/libphonenumber/cpp/src/utf/README +++ /dev/null @@ -1 +0,0 @@ -These files come from lib9 (http://code.google.com/p/go/source/browse). diff --git a/third_party/libphonenumber/cpp/src/utf/rune.c b/third_party/libphonenumber/cpp/src/utf/rune.c deleted file mode 100644 index 5a37368..0000000 --- a/third_party/libphonenumber/cpp/src/utf/rune.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - * The authors of this software are Rob Pike and Ken Thompson. - * Copyright (c) 2002 by Lucent Technologies. - * Permission to use, copy, modify, and distribute this software for any - * purpose without fee is hereby granted, provided that this entire notice - * is included in all copies of any software which is or includes a copy - * or modification of this software and in all copies of the supporting - * documentation for such software. - * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY - * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY - * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. - */ -#include <stdarg.h> -#include <string.h> -#include "utf.h" -#include "utfdef.h" - -enum -{ - Bit1 = 7, - Bitx = 6, - Bit2 = 5, - Bit3 = 4, - Bit4 = 3, - Bit5 = 2, - - T1 = ((1<<(Bit1+1))-1) ^ 0xFF, /* 0000 0000 */ - Tx = ((1<<(Bitx+1))-1) ^ 0xFF, /* 1000 0000 */ - T2 = ((1<<(Bit2+1))-1) ^ 0xFF, /* 1100 0000 */ - T3 = ((1<<(Bit3+1))-1) ^ 0xFF, /* 1110 0000 */ - T4 = ((1<<(Bit4+1))-1) ^ 0xFF, /* 1111 0000 */ - T5 = ((1<<(Bit5+1))-1) ^ 0xFF, /* 1111 1000 */ - - Rune1 = (1<<(Bit1+0*Bitx))-1, /* 0000 0000 0111 1111 */ - Rune2 = (1<<(Bit2+1*Bitx))-1, /* 0000 0111 1111 1111 */ - Rune3 = (1<<(Bit3+2*Bitx))-1, /* 1111 1111 1111 1111 */ - Rune4 = (1<<(Bit4+3*Bitx))-1, - /* 0001 1111 1111 1111 1111 1111 */ - - Maskx = (1<<Bitx)-1, /* 0011 1111 */ - Testx = Maskx ^ 0xFF, /* 1100 0000 */ - - Bad = Runeerror, -}; - -/* - * Modified by Wei-Hwa Huang, Google Inc., on 2004-09-24 - * This is a slower but "safe" version of the old chartorune - * that works on strings that are not necessarily null-terminated. - * - * If you know for sure that your string is null-terminated, - * chartorune will be a bit faster. - * - * It is guaranteed not to attempt to access "length" - * past the incoming pointer. This is to avoid - * possible access violations. If the string appears to be - * well-formed but incomplete (i.e., to get the whole Rune - * we'd need to read past str+length) then we'll set the Rune - * to Bad and return 0. - * - * Note that if we have decoding problems for other - * reasons, we return 1 instead of 0. - */ -int -charntorune(Rune *rune, const char *str, int length) -{ - int c, c1, c2, c3; - long l; - - /* When we're not allowed to read anything */ - if(length <= 0) { - goto badlen; - } - - /* - * one character sequence (7-bit value) - * 00000-0007F => T1 - */ - c = *(uchar*)str; - if(c < Tx) { - *rune = c; - return 1; - } - - // If we can't read more than one character we must stop - if(length <= 1) { - goto badlen; - } - - /* - * two character sequence (11-bit value) - * 0080-07FF => T2 Tx - */ - c1 = *(uchar*)(str+1) ^ Tx; - if(c1 & Testx) - goto bad; - if(c < T3) { - if(c < T2) - goto bad; - l = ((c << Bitx) | c1) & Rune2; - if(l <= Rune1) - goto bad; - *rune = l; - return 2; - } - - // If we can't read more than two characters we must stop - if(length <= 2) { - goto badlen; - } - - /* - * three character sequence (16-bit value) - * 0800-FFFF => T3 Tx Tx - */ - c2 = *(uchar*)(str+2) ^ Tx; - if(c2 & Testx) - goto bad; - if(c < T4) { - l = ((((c << Bitx) | c1) << Bitx) | c2) & Rune3; - if(l <= Rune2) - goto bad; - *rune = l; - return 3; - } - - if (length <= 3) - goto badlen; - - /* - * four character sequence (21-bit value) - * 10000-1FFFFF => T4 Tx Tx Tx - */ - c3 = *(uchar*)(str+3) ^ Tx; - if (c3 & Testx) - goto bad; - if (c < T5) { - l = ((((((c << Bitx) | c1) << Bitx) | c2) << Bitx) | c3) & Rune4; - if (l <= Rune3) - goto bad; - *rune = l; - return 4; - } - - // Support for 5-byte or longer UTF-8 would go here, but - // since we don't have that, we'll just fall through to bad. - - /* - * bad decoding - */ -bad: - *rune = Bad; - return 1; -badlen: - *rune = Bad; - return 0; - -} - - -/* - * This is the older "unsafe" version, which works fine on - * null-terminated strings. - */ -int -chartorune(Rune *rune, const char *str) -{ - int c, c1, c2, c3; - long l; - - /* - * one character sequence - * 00000-0007F => T1 - */ - c = *(uchar*)str; - if(c < Tx) { - *rune = c; - return 1; - } - - /* - * two character sequence - * 0080-07FF => T2 Tx - */ - c1 = *(uchar*)(str+1) ^ Tx; - if(c1 & Testx) - goto bad; - if(c < T3) { - if(c < T2) - goto bad; - l = ((c << Bitx) | c1) & Rune2; - if(l <= Rune1) - goto bad; - *rune = l; - return 2; - } - - /* - * three character sequence - * 0800-FFFF => T3 Tx Tx - */ - c2 = *(uchar*)(str+2) ^ Tx; - if(c2 & Testx) - goto bad; - if(c < T4) { - l = ((((c << Bitx) | c1) << Bitx) | c2) & Rune3; - if(l <= Rune2) - goto bad; - *rune = l; - return 3; - } - - /* - * four character sequence (21-bit value) - * 10000-1FFFFF => T4 Tx Tx Tx - */ - c3 = *(uchar*)(str+3) ^ Tx; - if (c3 & Testx) - goto bad; - if (c < T5) { - l = ((((((c << Bitx) | c1) << Bitx) | c2) << Bitx) | c3) & Rune4; - if (l <= Rune3) - goto bad; - *rune = l; - return 4; - } - - /* - * Support for 5-byte or longer UTF-8 would go here, but - * since we don't have that, we'll just fall through to bad. - */ - - /* - * bad decoding - */ -bad: - *rune = Bad; - return 1; -} - -int -isvalidcharntorune(const char* str, int length, Rune* rune, int* consumed) { - *consumed = charntorune(rune, str, length); - return *rune != Runeerror || *consumed == 3; -} - -int -runetochar(char *str, const Rune *rune) -{ - /* Runes are signed, so convert to unsigned for range check. */ - unsigned long c; - - /* - * one character sequence - * 00000-0007F => 00-7F - */ - c = *rune; - if(c <= Rune1) { - str[0] = c; - return 1; - } - - /* - * two character sequence - * 0080-07FF => T2 Tx - */ - if(c <= Rune2) { - str[0] = T2 | (c >> 1*Bitx); - str[1] = Tx | (c & Maskx); - return 2; - } - - /* - * If the Rune is out of range, convert it to the error rune. - * Do this test here because the error rune encodes to three bytes. - * Doing it earlier would duplicate work, since an out of range - * Rune wouldn't have fit in one or two bytes. - */ - if (c > Runemax) - c = Runeerror; - - /* - * three character sequence - * 0800-FFFF => T3 Tx Tx - */ - if (c <= Rune3) { - str[0] = T3 | (c >> 2*Bitx); - str[1] = Tx | ((c >> 1*Bitx) & Maskx); - str[2] = Tx | (c & Maskx); - return 3; - } - - /* - * four character sequence (21-bit value) - * 10000-1FFFFF => T4 Tx Tx Tx - */ - str[0] = T4 | (c >> 3*Bitx); - str[1] = Tx | ((c >> 2*Bitx) & Maskx); - str[2] = Tx | ((c >> 1*Bitx) & Maskx); - str[3] = Tx | (c & Maskx); - return 4; -} - -int -runelen(Rune rune) -{ - char str[10]; - - return runetochar(str, &rune); -} - -int -runenlen(const Rune *r, int nrune) -{ - int nb, c; - - nb = 0; - while(nrune--) { - c = *r++; - if (c <= Rune1) - nb++; - else if (c <= Rune2) - nb += 2; - else if (c <= Rune3) - nb += 3; - else /* assert(c <= Rune4) */ - nb += 4; - } - return nb; -} - -int -fullrune(const char *str, int n) -{ - if (n > 0) { - int c = *(uchar*)str; - if (c < Tx) - return 1; - if (n > 1) { - if (c < T3) - return 1; - if (n > 2) { - if (c < T4 || n > 3) - return 1; - } - } - } - return 0; -} diff --git a/third_party/libphonenumber/cpp/src/utf/stringpiece.h b/third_party/libphonenumber/cpp/src/utf/stringpiece.h deleted file mode 100644 index 7b56772..0000000 --- a/third_party/libphonenumber/cpp/src/utf/stringpiece.h +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef STRINGS_STRINGPIECE_H_ -#define STRINGS_STRINGPIECE_H_ - -//#include "third_party/chromium/src/base/string_piece.h" -#include "base/string_piece.h" - -using base::StringPiece; - -#endif // STRINGS_STRINGPIECE_H_ diff --git a/third_party/libphonenumber/cpp/src/utf/stringprintf.h b/third_party/libphonenumber/cpp/src/utf/stringprintf.h deleted file mode 100644 index 208d338f..0000000 --- a/third_party/libphonenumber/cpp/src/utf/stringprintf.h +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef STRINGS_STRINGPRINTF_H_ -#define STRINGS_STRINGPRINTF_H_ - -//#include "third_party/chromium/src/base/string_util.h" -#include "base/string_util.h" - -#endif // STRINGS_STRINGPRINTF_H_ diff --git a/third_party/libphonenumber/cpp/src/utf/unicodetext.cc b/third_party/libphonenumber/cpp/src/utf/unicodetext.cc deleted file mode 100644 index 82c1b42..0000000 --- a/third_party/libphonenumber/cpp/src/utf/unicodetext.cc +++ /dev/null @@ -1,515 +0,0 @@ -// Copyright (C) 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Jim Meehan - -#include <iostream> -#include <sstream> -#include <cassert> - -#include "utf/unicodetext.h" -//#include "base/logging.h" -#include "utf/stringpiece.h" -//#include "utf/stringprintf.h" -#include "utf/utf.h" -#include "utf/unilib.h" - -using std::stringstream; -using std::max; -using std::hex; -using std::dec; -using std::cerr; -using std::endl; - -static int CodepointDistance(const char* start, const char* end) { - int n = 0; - // Increment n on every non-trail-byte. - for (const char* p = start; p < end; ++p) { - n += (*reinterpret_cast<const signed char*>(p) >= -0x40); - } - return n; -} - -static int CodepointCount(const char* utf8, int len) { - return CodepointDistance(utf8, utf8 + len); -} - -UnicodeText::const_iterator::difference_type -distance(const UnicodeText::const_iterator& first, - const UnicodeText::const_iterator& last) { - return CodepointDistance(first.it_, last.it_); -} - -// ---------- Utility ---------- - -static int ConvertToInterchangeValid(char* start, int len) { - // This routine is called only when we've discovered that a UTF-8 buffer - // that was passed to CopyUTF8, TakeOwnershipOfUTF8, or PointToUTF8 - // was not interchange valid. This indicates a bug in the caller, and - // a LOG(WARNING) is done in that case. - // This is similar to CoerceToInterchangeValid, but it replaces each - // structurally valid byte with a space, and each non-interchange - // character with a space, even when that character requires more - // than one byte in UTF8. E.g., "\xEF\xB7\x90" (U+FDD0) is - // structurally valid UTF8, but U+FDD0 is not an interchange-valid - // code point. The result should contain one space, not three. - // - // Since the conversion never needs to write more data than it - // reads, it is safe to change the buffer in place. It returns the - // number of bytes written. - char* const in = start; - char* out = start; - char* const end = start + len; - while (start < end) { - int good = UniLib::SpanInterchangeValid(start, end - start); - if (good > 0) { - if (out != start) { - memmove(out, start, good); - } - out += good; - start += good; - if (start == end) { - break; - } - } - // Is the current string invalid UTF8 or just non-interchange UTF8? - char32 rune; - int n; - if (isvalidcharntorune(start, end - start, &rune, &n)) { - // structurally valid UTF8, but not interchange valid - start += n; // Skip over the whole character. - } else { // bad UTF8 - start += 1; // Skip over just one byte - } - *out++ = ' '; - } - return out - in; -} - - -// *************** Data representation ********** - -// Note: the copy constructor is undefined. - -// After reserve(), resize(), or clear(), we're an owner, not an alias. - -void UnicodeText::Repr::reserve(int new_capacity) { - // If there's already enough capacity, and we're an owner, do nothing. - if (capacity_ >= new_capacity && ours_) return; - - // Otherwise, allocate a new buffer. - capacity_ = max(new_capacity, (3 * capacity_) / 2 + 20); - char* new_data = new char[capacity_]; - - // If there is an old buffer, copy it into the new buffer. - if (data_) { - memcpy(new_data, data_, size_); - if (ours_) delete[] data_; // If we owned the old buffer, free it. - } - data_ = new_data; - ours_ = true; // We own the new buffer. - // size_ is unchanged. -} - -void UnicodeText::Repr::resize(int new_size) { - if (new_size == 0) { - clear(); - } else { - if (!ours_ || new_size > capacity_) reserve(new_size); - // Clear the memory in the expanded part. - if (size_ < new_size) memset(data_ + size_, 0, new_size - size_); - size_ = new_size; - ours_ = true; - } -} - -// This implementation of clear() deallocates the buffer if we're an owner. -// That's not strictly necessary; we could just set size_ to 0. -void UnicodeText::Repr::clear() { - if (ours_) delete[] data_; - data_ = NULL; - size_ = capacity_ = 0; - ours_ = true; -} - -void UnicodeText::Repr::Copy(const char* data, int size) { - resize(size); - memcpy(data_, data, size); -} - -void UnicodeText::Repr::TakeOwnershipOf(char* data, int size, int capacity) { - if (data == data_) return; // We already own this memory. (Weird case.) - if (ours_ && data_) delete[] data_; // If we owned the old buffer, free it. - data_ = data; - size_ = size; - capacity_ = capacity; - ours_ = true; -} - -void UnicodeText::Repr::PointTo(const char* data, int size) { - if (ours_ && data_) delete[] data_; // If we owned the old buffer, free it. - data_ = const_cast<char*>(data); - size_ = size; - capacity_ = size; - ours_ = false; -} - -void UnicodeText::Repr::append(const char* bytes, int byte_length) { - reserve(size_ + byte_length); - memcpy(data_ + size_, bytes, byte_length); - size_ += byte_length; -} - -string UnicodeText::Repr::DebugString() const { - stringstream ss; - - ss << "{Repr " << hex << this << " data=" << data_ << " size=" << dec - << size_ << " capacity=" << capacity_ << " " - << (ours_ ? "Owned" : "Alias") << "}"; - - string result; - ss >> result; - - return result; -} - - - -// *************** UnicodeText ****************** - -// ----- Constructors ----- - -// Default constructor -UnicodeText::UnicodeText() { -} - -// Copy constructor -UnicodeText::UnicodeText(const UnicodeText& src) { - Copy(src); -} - -// Substring constructor -UnicodeText::UnicodeText(const UnicodeText::const_iterator& first, - const UnicodeText::const_iterator& last) { - assert(first <= last && "Incompatible iterators"); - repr_.append(first.it_, last.it_ - first.it_); -} - -string UnicodeText::UTF8Substring(const const_iterator& first, - const const_iterator& last) { - assert(first <= last && "Incompatible iterators"); - return string(first.it_, last.it_ - first.it_); -} - - -// ----- Copy ----- - -UnicodeText& UnicodeText::operator=(const UnicodeText& src) { - if (this != &src) { - Copy(src); - } - return *this; -} - -UnicodeText& UnicodeText::Copy(const UnicodeText& src) { - repr_.Copy(src.repr_.data_, src.repr_.size_); - return *this; -} - -UnicodeText& UnicodeText::CopyUTF8(const char* buffer, int byte_length) { - repr_.Copy(buffer, byte_length); - if (!UniLib:: IsInterchangeValid(buffer, byte_length)) { - cerr << "UTF-8 buffer is not interchange-valid." << endl; - repr_.size_ = ConvertToInterchangeValid(repr_.data_, byte_length); - } - return *this; -} - -UnicodeText& UnicodeText::UnsafeCopyUTF8(const char* buffer, - int byte_length) { - repr_.Copy(buffer, byte_length); - return *this; -} - -// ----- TakeOwnershipOf ----- - -UnicodeText& UnicodeText::TakeOwnershipOfUTF8(char* buffer, - int byte_length, - int byte_capacity) { - repr_.TakeOwnershipOf(buffer, byte_length, byte_capacity); - if (!UniLib:: IsInterchangeValid(buffer, byte_length)) { - cerr << "UTF-8 buffer is not interchange-valid." << endl; - repr_.size_ = ConvertToInterchangeValid(repr_.data_, byte_length); - } - return *this; -} - -UnicodeText& UnicodeText::UnsafeTakeOwnershipOfUTF8(char* buffer, - int byte_length, - int byte_capacity) { - repr_.TakeOwnershipOf(buffer, byte_length, byte_capacity); - return *this; -} - -// ----- PointTo ----- - -UnicodeText& UnicodeText::PointToUTF8(const char* buffer, int byte_length) { - if (UniLib:: IsInterchangeValid(buffer, byte_length)) { - repr_.PointTo(buffer, byte_length); - } else { - cerr << "UTF-8 buffer is not interchange-valid." << endl; - repr_.Copy(buffer, byte_length); - repr_.size_ = ConvertToInterchangeValid(repr_.data_, byte_length); - } - return *this; -} - -UnicodeText& UnicodeText::UnsafePointToUTF8(const char* buffer, - int byte_length) { - repr_.PointTo(buffer, byte_length); - return *this; -} - -UnicodeText& UnicodeText::PointTo(const UnicodeText& src) { - repr_.PointTo(src.repr_.data_, src.repr_.size_); - return *this; -} - -UnicodeText& UnicodeText::PointTo(const const_iterator &first, - const const_iterator &last) { - assert(first <= last && " Incompatible iterators"); - repr_.PointTo(first.utf8_data(), last.utf8_data() - first.utf8_data()); - return *this; -} - -// ----- Append ----- - -UnicodeText& UnicodeText::append(const UnicodeText& u) { - repr_.append(u.repr_.data_, u.repr_.size_); - return *this; -} - -UnicodeText& UnicodeText::append(const const_iterator& first, - const const_iterator& last) { - assert(first <= last && "Incompatible iterators"); - repr_.append(first.it_, last.it_ - first.it_); - return *this; -} - -UnicodeText& UnicodeText::UnsafeAppendUTF8(const char* utf8, int len) { - repr_.append(utf8, len); - return *this; -} - -// ----- substring searching ----- - -UnicodeText::const_iterator UnicodeText::find(const UnicodeText& look, - const_iterator start_pos) const { - assert(start_pos.utf8_data() >= utf8_data()); - assert(start_pos.utf8_data() <= utf8_data() + utf8_length()); - return UnsafeFind(look, start_pos); -} - -UnicodeText::const_iterator UnicodeText::find(const UnicodeText& look) const { - return UnsafeFind(look, begin()); -} - -UnicodeText::const_iterator UnicodeText::UnsafeFind( - const UnicodeText& look, const_iterator start_pos) const { - // Due to the magic of the UTF8 encoding, searching for a sequence of - // letters is equivalent to substring search. - StringPiece searching(utf8_data(), utf8_length()); - StringPiece look_piece(look.utf8_data(), look.utf8_length()); - StringPiece::size_type found = - searching.find(look_piece, start_pos.utf8_data() - utf8_data()); - if (found == StringPiece::npos) return end(); - return const_iterator(utf8_data() + found); -} - -bool UnicodeText::HasReplacementChar() const { - // Equivalent to: - // UnicodeText replacement_char; - // replacement_char.push_back(0xFFFD); - // return find(replacement_char) != end(); - StringPiece searching(utf8_data(), utf8_length()); - StringPiece looking_for("\xEF\xBF\xBD", 3); - return searching.find(looking_for) != StringPiece::npos; -} - -// ----- other methods ----- - -// Clear operator -void UnicodeText::clear() { - repr_.clear(); -} - -// Destructor -UnicodeText::~UnicodeText() {} - - -void UnicodeText::push_back(char32 c) { - if (UniLib::IsValidCodepoint(c)) { - char buf[UTFmax]; - int len = runetochar(buf, &c); - if (UniLib::IsInterchangeValid(buf, len)) { - repr_.append(buf, len); - } else { - cerr << "Unicode value 0x" << hex << c - << " is not valid for interchange" << endl; - repr_.append(" ", 1); - } - } else { - cerr << "Illegal Unicode value: 0x" << hex << c << endl; - repr_.append(" ", 1); - } -} - -int UnicodeText::size() const { - return CodepointCount(repr_.data_, repr_.size_); -} - -bool operator==(const UnicodeText& lhs, const UnicodeText& rhs) { - if (&lhs == &rhs) return true; - if (lhs.repr_.size_ != rhs.repr_.size_) return false; - return memcmp(lhs.repr_.data_, rhs.repr_.data_, lhs.repr_.size_) == 0; -} - -string UnicodeText::DebugString() const { - stringstream ss; - - ss << "{UnicodeText " << hex << this << dec << " chars=" - << size() << " repr=" << repr_.DebugString() << "}"; -#if 0 - return StringPrintf("{UnicodeText %p chars=%d repr=%s}", - this, - size(), - repr_.DebugString().c_str()); -#endif - string result; - ss >> result; - - return result; -} - - -// ******************* UnicodeText::const_iterator ********************* - -// The implementation of const_iterator would be nicer if it -// inherited from boost::iterator_facade -// (http://boost.org/libs/iterator/doc/iterator_facade.html). - -UnicodeText::const_iterator::const_iterator() : it_(0) {} - -UnicodeText::const_iterator::const_iterator(const const_iterator& other) - : it_(other.it_) { -} - -UnicodeText::const_iterator& -UnicodeText::const_iterator::operator=(const const_iterator& other) { - if (&other != this) - it_ = other.it_; - return *this; -} - -UnicodeText::const_iterator UnicodeText::begin() const { - return const_iterator(repr_.data_); -} - -UnicodeText::const_iterator UnicodeText::end() const { - return const_iterator(repr_.data_ + repr_.size_); -} - -bool operator<(const UnicodeText::const_iterator& lhs, - const UnicodeText::const_iterator& rhs) { - return lhs.it_ < rhs.it_; -} - -char32 UnicodeText::const_iterator::operator*() const { - // (We could call chartorune here, but that does some - // error-checking, and we're guaranteed that our data is valid - // UTF-8. Also, we expect this routine to be called very often. So - // for speed, we do the calculation ourselves.) - - // Convert from UTF-8 - int byte1 = it_[0]; - if (byte1 < 0x80) - return byte1; - - int byte2 = it_[1]; - if (byte1 < 0xE0) - return ((byte1 & 0x1F) << 6) - | (byte2 & 0x3F); - - int byte3 = it_[2]; - if (byte1 < 0xF0) - return ((byte1 & 0x0F) << 12) - | ((byte2 & 0x3F) << 6) - | (byte3 & 0x3F); - - int byte4 = it_[3]; - return ((byte1 & 0x07) << 18) - | ((byte2 & 0x3F) << 12) - | ((byte3 & 0x3F) << 6) - | (byte4 & 0x3F); -} - -UnicodeText::const_iterator& UnicodeText::const_iterator::operator++() { - it_ += UniLib::OneCharLen(it_); - return *this; -} - -UnicodeText::const_iterator& UnicodeText::const_iterator::operator--() { - while (UniLib::IsTrailByte(*--it_)); - return *this; -} - -int UnicodeText::const_iterator::get_utf8(char* utf8_output) const { - utf8_output[0] = it_[0]; - if (static_cast<unsigned char>(it_[0]) < 0x80) - return 1; - - utf8_output[1] = it_[1]; - if (static_cast<unsigned char>(it_[0]) < 0xE0) - return 2; - - utf8_output[2] = it_[2]; - if (static_cast<unsigned char>(it_[0]) < 0xF0) - return 3; - - utf8_output[3] = it_[3]; - return 4; -} - - -UnicodeText::const_iterator UnicodeText::MakeIterator(const char* p) const { - assert(p != NULL); - const char* start = utf8_data(); - int len = utf8_length(); - const char* end = start + len; - assert(p >= start); - assert(p <= end); - assert(p == end || !UniLib::IsTrailByte(*p)); - return const_iterator(p); -} - -string UnicodeText::const_iterator::DebugString() const { - stringstream ss; - - ss << "{iter " << hex << it_ << "}"; - string result; - ss >> result; - - return result; -} - diff --git a/third_party/libphonenumber/cpp/src/utf/unicodetext.h b/third_party/libphonenumber/cpp/src/utf/unicodetext.h deleted file mode 100644 index fb37a33..0000000 --- a/third_party/libphonenumber/cpp/src/utf/unicodetext.h +++ /dev/null @@ -1,456 +0,0 @@ -// Copyright (C) 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Author: Jim Meehan - -#ifndef UTIL_UTF8_UNICODETEXT_H__ -#define UTIL_UTF8_UNICODETEXT_H__ - -#include <iterator> -#include <string> -#include <utility> -#include "base/basictypes.h" -//#include "util/utf8/public/config.h" - -using std::string; -using std::bidirectional_iterator_tag; -using std::pair; - -// ***************************** UnicodeText ************************** -// -// A UnicodeText object is a container for a sequence of Unicode -// codepoint values. It has default, copy, and assignment constructors. -// Data can be appended to it from another UnicodeText, from -// iterators, or from a single codepoint. -// -// The internal representation of the text is UTF-8. Since UTF-8 is a -// variable-width format, UnicodeText does not provide random access -// to the text, and changes to the text are permitted only at the end. -// -// The UnicodeText class defines a const_iterator. The dereferencing -// operator (*) returns a codepoint (char32). The iterator is a -// bidirectional, read-only iterator. It becomes invalid if the text -// is changed. -// -// There are methods for appending and retrieving UTF-8 data directly. -// The 'utf8_data' method returns a const char* that contains the -// UTF-8-encoded version of the text; 'utf8_length' returns the number -// of bytes in the UTF-8 data. An iterator's 'get' method stores up to -// 4 bytes of UTF-8 data in a char array and returns the number of -// bytes that it stored. -// -// Codepoints are integers in the range [0, 0xD7FF] or [0xE000, -// 0x10FFFF], but UnicodeText has the additional restriction that it -// can contain only those characters that are valid for interchange on -// the Web. This excludes all of the control codes except for carriage -// return, line feed, and horizontal tab. It also excludes -// non-characters, but codepoints that are in the Private Use regions -// are allowed, as are codepoints that are unassigned. (See the -// Unicode reference for details.) The function UniLib::IsInterchangeValid -// can be used as a test for this property. -// -// UnicodeTexts are safe. Every method that constructs or modifies a -// UnicodeText tests for interchange-validity, and will substitute a -// space for the invalid data. Such cases are reported via -// LOG(WARNING). -// -// MEMORY MANAGEMENT: copy, take ownership, or point to -// -// A UnicodeText is either an "owner", meaning that it owns the memory -// for the data buffer and will free it when the UnicodeText is -// destroyed, or it is an "alias", meaning that it does not. -// -// There are three methods for storing UTF-8 data in a UnicodeText: -// -// CopyUTF8(buffer, len) copies buffer. -// -// TakeOwnershipOfUTF8(buffer, size, capacity) takes ownership of buffer. -// -// PointToUTF8(buffer, size) creates an alias pointing to buffer. -// -// All three methods perform a validity check on the buffer. There are -// private, "unsafe" versions of these functions that bypass the -// validity check. They are used internally and by friend-functions -// that are handling UTF-8 data that has already been validated. -// -// The purpose of an alias is to avoid making an unnecessary copy of a -// UTF-8 buffer while still providing access to the Unicode values -// within that text through iterators or the fast scanners that are -// based on UTF-8 state tables. The lifetime of an alias must not -// exceed the lifetime of the buffer from which it was constructed. -// -// The semantics of an alias might be described as "copy on write or -// repair." The source data is never modified. If push_back() or -// append() is called on an alias, a copy of the data will be created, -// and the UnicodeText will become an owner. If clear() is called on -// an alias, it becomes an (empty) owner. -// -// The copy constructor and the assignment operator produce an owner. -// That is, after direct initialization ("UnicodeText x(y);") or copy -// initialization ("UnicodeText x = y;") x will be an owner, even if y -// was an alias. The assignment operator ("x = y;") also produces an -// owner unless x and y are the same object and y is an alias. -// -// Aliases should be used with care. If the source from which an alias -// was created is freed, or if the contents are changed, while the -// alias is still in use, fatal errors could result. But it can be -// quite useful to have a UnicodeText "window" through which to see a -// UTF-8 buffer without having to pay the price of making a copy. -// -// UTILITIES -// -// The interfaces in util/utf8/public/textutils.h provide higher-level -// utilities for dealing with UnicodeTexts, including routines for -// creating UnicodeTexts (both owners and aliases) from UTF-8 buffers or -// strings, creating strings from UnicodeTexts, normalizing text for -// efficient matching or display, and others. - -class UnicodeText { - public: - class const_iterator; - - typedef char32 value_type; - - // Constructors. These always produce owners. - UnicodeText(); // Create an empty text. - UnicodeText(const UnicodeText& src); // copy constructor - // Construct a substring (copies the data). - UnicodeText(const const_iterator& first, const const_iterator& last); - - // Assignment operator. This copies the data and produces an owner - // unless this == &src, e.g., "x = x;", which is a no-op. - UnicodeText& operator=(const UnicodeText& src); - - // x.Copy(y) copies the data from y into x. - UnicodeText& Copy(const UnicodeText& src); - inline UnicodeText& assign(const UnicodeText& src) { return Copy(src); } - - // x.PointTo(y) changes x so that it points to y's data. - // It does not copy y or take ownership of y's data. - UnicodeText& PointTo(const UnicodeText& src); - UnicodeText& PointTo(const const_iterator& first, - const const_iterator& last); - - ~UnicodeText(); - - void clear(); // Clear text. - bool empty() { return repr_.size_ == 0; } // Test if text is empty. - - // Add a codepoint to the end of the text. - // If the codepoint is not interchange-valid, add a space instead - // and log a warning. - void push_back(char32 codepoint); - - // Generic appending operation. - // iterator_traits<ForwardIterator>::value_type must be implicitly - // convertible to char32. Typical uses of this method might include: - // char32 chars[] = {0x1, 0x2, ...}; - // vector<char32> more_chars = ...; - // utext.append(chars, chars+arraysize(chars)); - // utext.append(more_chars.begin(), more_chars.end()); - template<typename ForwardIterator> - UnicodeText& append(ForwardIterator first, const ForwardIterator last) { - while (first != last) { push_back(*first++); } - return *this; - } - - // A specialization of the generic append() method. - UnicodeText& append(const const_iterator& first, const const_iterator& last); - - // An optimization of append(source.begin(), source.end()). - UnicodeText& append(const UnicodeText& source); - - int size() const; // the number of Unicode characters (codepoints) - - friend bool operator==(const UnicodeText& lhs, const UnicodeText& rhs); - friend bool operator!=(const UnicodeText& lhs, const UnicodeText& rhs); - - class const_iterator { - typedef const_iterator CI; - public: - typedef bidirectional_iterator_tag iterator_category; - typedef char32 value_type; - typedef ptrdiff_t difference_type; - typedef void pointer; // (Not needed.) - typedef const char32 reference; // (Needed for const_reverse_iterator) - - // Iterators are default-constructible. - const_iterator(); - - // It's safe to make multiple passes over a UnicodeText. - const_iterator(const const_iterator& other); - const_iterator& operator=(const const_iterator& other); - - char32 operator*() const; // Dereference - - const_iterator& operator++(); // Advance (++iter) - const_iterator operator++(int) { // (iter++) - const_iterator result(*this); - ++*this; - return result; - } - - const_iterator& operator--(); // Retreat (--iter) - const_iterator operator--(int) { // (iter--) - const_iterator result(*this); - --*this; - return result; - } - - // We love relational operators. - friend bool operator==(const CI& lhs, const CI& rhs) { - return lhs.it_ == rhs.it_; } - friend bool operator!=(const CI& lhs, const CI& rhs) { - return !(lhs == rhs); } - friend bool operator<(const CI& lhs, const CI& rhs); - friend bool operator>(const CI& lhs, const CI& rhs) { - return rhs < lhs; } - friend bool operator<=(const CI& lhs, const CI& rhs) { - return !(rhs < lhs); } - friend bool operator>=(const CI& lhs, const CI& rhs) { - return !(lhs < rhs); } - - friend difference_type distance(const CI& first, const CI& last); - - // UTF-8-specific methods - // Store the UTF-8 encoding of the current codepoint into buf, - // which must be at least 4 bytes long. Return the number of - // bytes written. - int get_utf8(char* buf) const; - // Return the iterator's pointer into the UTF-8 data. - const char* utf8_data() const { return it_; } - - string DebugString() const; - - private: - friend class UnicodeText; - friend class UnicodeTextUtils; - friend class UTF8StateTableProperty; - explicit const_iterator(const char* it) : it_(it) {} - - const char* it_; - }; - - const_iterator begin() const; - const_iterator end() const; - - class const_reverse_iterator : public std::reverse_iterator<const_iterator> { - public: - const_reverse_iterator(const_iterator it) : - std::reverse_iterator<const_iterator>(it) {} - const char* utf8_data() const { - const_iterator tmp_it = base(); - return (--tmp_it).utf8_data(); - } - int get_utf8(char* buf) const { - const_iterator tmp_it = base(); - return (--tmp_it).get_utf8(buf); - } - }; - const_reverse_iterator rbegin() const { - return const_reverse_iterator(end()); - } - const_reverse_iterator rend() const { - return const_reverse_iterator(begin()); - } - - // Substring searching. Returns the beginning of the first - // occurrence of "look", or end() if not found. - const_iterator find(const UnicodeText& look, const_iterator start_pos) const; - // Equivalent to find(look, begin()) - const_iterator find(const UnicodeText& look) const; - - // Returns whether this contains the character U+FFFD. This can - // occur, for example, if the input to Encodings::Decode() had byte - // sequences that were invalid in the source encoding. - bool HasReplacementChar() const; - - // UTF-8-specific methods - // - // Return the data, length, and capacity of UTF-8-encoded version of - // the text. Length and capacity are measured in bytes. - const char* utf8_data() const { return repr_.data_; } - int utf8_length() const { return repr_.size_; } - int utf8_capacity() const { return repr_.capacity_; } - - // Return the UTF-8 data as a string. - static string UTF8Substring(const const_iterator& first, - const const_iterator& last); - - // There are three methods for initializing a UnicodeText from UTF-8 - // data. They vary in details of memory management. In all cases, - // the data is tested for interchange-validity. If it is not - // interchange-valid, a LOG(WARNING) is issued, and each - // structurally invalid byte and each interchange-invalid codepoint - // is replaced with a space. - - // x.CopyUTF8(buf, len) copies buf into x. - UnicodeText& CopyUTF8(const char* utf8_buffer, int byte_length); - - // x.TakeOwnershipOfUTF8(buf, len, capacity). x takes ownership of - // buf. buf is not copied. - UnicodeText& TakeOwnershipOfUTF8(char* utf8_buffer, - int byte_length, - int byte_capacity); - - // x.PointToUTF8(buf,len) changes x so that it points to buf - // ("becomes an alias"). It does not take ownership or copy buf. - // If the buffer is not valid, this has the same effect as - // CopyUTF8(utf8_buffer, byte_length). - UnicodeText& PointToUTF8(const char* utf8_buffer, int byte_length); - - // Occasionally it is necessary to use functions that operate on the - // pointer returned by utf8_data(). MakeIterator(p) provides a way - // to get back to the UnicodeText level. It uses CHECK to ensure - // that p is a pointer within this object's UTF-8 data, and that it - // points to the beginning of a character. - const_iterator MakeIterator(const char* p) const; - - string DebugString() const; - - private: - friend class const_iterator; - friend class UnicodeTextUtils; - - class Repr { // A byte-string. - public: - char* data_; - int size_; - int capacity_; - bool ours_; // Do we own data_? - - Repr() : data_(NULL), size_(0), capacity_(0), ours_(true) {} - ~Repr() { if (ours_) delete[] data_; } - - void clear(); - void reserve(int capacity); - void resize(int size); - - void append(const char* bytes, int byte_length); - void Copy(const char* data, int size); - void TakeOwnershipOf(char* data, int size, int capacity); - void PointTo(const char* data, int size); - - string DebugString() const; - - private: - Repr& operator=(const Repr&); - Repr(const Repr& other); - }; - - Repr repr_; - - // UTF-8-specific private methods. - // These routines do not perform a validity check when compiled - // in opt mode. - // It is an error to call these methods with UTF-8 data that - // is not interchange-valid. - // - UnicodeText& UnsafeCopyUTF8(const char* utf8_buffer, int byte_length); - UnicodeText& UnsafeTakeOwnershipOfUTF8( - char* utf8_buffer, int byte_length, int byte_capacity); - UnicodeText& UnsafePointToUTF8(const char* utf8_buffer, int byte_length); - UnicodeText& UnsafeAppendUTF8(const char* utf8_buffer, int byte_length); - const_iterator UnsafeFind(const UnicodeText& look, - const_iterator start_pos) const; -}; - -bool operator==(const UnicodeText& lhs, const UnicodeText& rhs); - -inline bool operator!=(const UnicodeText& lhs, const UnicodeText& rhs) { - return !(lhs == rhs); -} - -// UnicodeTextRange is a pair of iterators, useful for specifying text -// segments. If the iterators are ==, the segment is empty. -typedef pair<UnicodeText::const_iterator, - UnicodeText::const_iterator> UnicodeTextRange; - -inline bool UnicodeTextRangeIsEmpty(const UnicodeTextRange& r) { - return r.first == r.second; -} - - -// *************************** Utilities ************************* - -// A factory function for creating a UnicodeText from a buffer of -// UTF-8 data. The new UnicodeText takes ownership of the buffer. (It -// is an "owner.") -// -// Each byte that is structurally invalid will be replaced with a -// space. Each codepoint that is interchange-invalid will also be -// replaced with a space, even if the codepoint was represented with a -// multibyte sequence in the UTF-8 data. -// -inline UnicodeText MakeUnicodeTextAcceptingOwnership( - char* utf8_buffer, int byte_length, int byte_capacity) { - return UnicodeText().TakeOwnershipOfUTF8( - utf8_buffer, byte_length, byte_capacity); -} - -// A factory function for creating a UnicodeText from a buffer of -// UTF-8 data. The new UnicodeText does not take ownership of the -// buffer. (It is an "alias.") -// -inline UnicodeText MakeUnicodeTextWithoutAcceptingOwnership( - const char* utf8_buffer, int byte_length) { - return UnicodeText().PointToUTF8(utf8_buffer, byte_length); -} - -// Create a UnicodeText from a UTF-8 string or buffer. -// -// If do_copy is true, then a copy of the string is made. The copy is -// owned by the resulting UnicodeText object and will be freed when -// the object is destroyed. This UnicodeText object is referred to -// as an "owner." -// -// If do_copy is false, then no copy is made. The resulting -// UnicodeText object does NOT take ownership of the string; in this -// case, the lifetime of the UnicodeText object must not exceed the -// lifetime of the string. This Unicodetext object is referred to as -// an "alias." This is the same as MakeUnicodeTextWithoutAcceptingOwnership. -// -// If the input string does not contain valid UTF-8, then a copy is -// made (as if do_copy were true) and coerced to valid UTF-8 by -// replacing each invalid byte with a space. -// -inline UnicodeText UTF8ToUnicodeText(const char* utf8_buf, int len, - bool do_copy) { - UnicodeText t; - if (do_copy) { - t.CopyUTF8(utf8_buf, len); - } else { - t.PointToUTF8(utf8_buf, len); - } - return t; -} - -inline UnicodeText UTF8ToUnicodeText(const string& utf_string, bool do_copy) { - return UTF8ToUnicodeText(utf_string.data(), utf_string.size(), do_copy); -} - -inline UnicodeText UTF8ToUnicodeText(const char* utf8_buf, int len) { - return UTF8ToUnicodeText(utf8_buf, len, true); -} -inline UnicodeText UTF8ToUnicodeText(const string& utf8_string) { - return UTF8ToUnicodeText(utf8_string, true); -} - -// Return a string containing the UTF-8 encoded version of all the -// Unicode characters in t. -inline string UnicodeTextToUTF8(const UnicodeText& t) { - return string(t.utf8_data(), t.utf8_length()); -} - -#endif // UTIL_UTF8_UNICODETEXT_H__ diff --git a/third_party/libphonenumber/cpp/src/utf/unilib.cc b/third_party/libphonenumber/cpp/src/utf/unilib.cc deleted file mode 100644 index 6d90954..0000000 --- a/third_party/libphonenumber/cpp/src/utf/unilib.cc +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Copyright 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Author: Shawn Ligocki - -#include "utf/unilib.h" - -#include "base/basictypes.h" -#include "utf/utf.h" - -namespace UniLib { - -namespace { - -// MOE: start_strip -// MOE: end_strip -// Codepoints not allowed for interchange are: -// C0 (ASCII) controls: U+0000 to U+001F excluding Space (SP, U+0020), -// Horizontal Tab (HT, U+0009), Line-Feed (LF, U+000A), -// Form Feed (FF, U+000C) and Carriage-Return (CR, U+000D) -// C1 controls: U+007F to U+009F -// Surrogates: U+D800 to U+DFFF -// Non-characters: U+FDD0 to U+FDEF and U+xxFFFE to U+xxFFFF for all xx -inline bool IsInterchangeValidCodepoint(char32 c) { - return !((c >= 0x00 && c <= 0x08) || c == 0x0B || (c >= 0x0E && c <= 0x1F) || - (c >= 0x7F && c <= 0x9F) || - (c >= 0xD800 && c <= 0xDFFF) || - (c >= 0xFDD0 && c <= 0xFDEF) || (c&0xFFFE) == 0xFFFE); -} - -} // namespace - -int SpanInterchangeValid(const char* begin, int byte_length) { - char32 rune; - const char* p = begin; - const char* end = begin + byte_length; - while (p < end) { - int bytes_consumed = charntorune(&rune, p, end - p); - // We want to accept Runeerror == U+FFFD as a valid char, but it is used - // by chartorune to indicate error. Luckily, the real codepoint is size 3 - // while errors return bytes_consumed == 1. - if ((rune == Runeerror && bytes_consumed == 1) || - !IsInterchangeValidCodepoint(rune)) { - break; // Found - } - p += bytes_consumed; - } - return p - begin; -} - -} // namespace UniLib diff --git a/third_party/libphonenumber/cpp/src/utf/unilib.h b/third_party/libphonenumber/cpp/src/utf/unilib.h deleted file mode 100644 index 4cfc787..0000000 --- a/third_party/libphonenumber/cpp/src/utf/unilib.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Copyright 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Routines to do manipulation of Unicode characters or text -// -// The StructurallyValid routines accept buffers of arbitrary bytes. -// For CoerceToStructurallyValid(), the input buffer and output buffers may -// point to exactly the same memory. -// -// In all other cases, the UTF-8 string must be structurally valid and -// have all codepoints in the range U+0000 to U+D7FF or U+E000 to U+10FFFF. -// Debug builds take a fatal error for invalid UTF-8 input. -// The input and output buffers may not overlap at all. -// -// The char32 routines are here only for convenience; they convert to UTF-8 -// internally and use the UTF-8 routines. - -#ifndef UTIL_UTF8_UNILIB_H__ -#define UTIL_UTF8_UNILIB_H__ - -#include <string> -#include "base/basictypes.h" - -namespace UniLib { - -// Returns true unless a surrogate code point -inline bool IsValidCodepoint(char32 c) { - // In the range [0, 0xD800) or [0xE000, 0x10FFFF] - return (static_cast<uint32>(c) < 0xD800) - || (c >= 0xE000 && c <= 0x10FFFF); -} - -// Table of UTF-8 character lengths, based on first byte -static const unsigned char kUTF8LenTbl[256] = { - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, - - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, 4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4 -}; - -// Return length of a single UTF-8 source character -inline int OneCharLen(const char* src) { - return kUTF8LenTbl[*reinterpret_cast<const uint8*>(src)]; -} - -// Return length of a single UTF-8 source character -inline int OneCharLen(const uint8* src) { - return kUTF8LenTbl[*src]; -} - -// Return true if this byte is a trailing UTF-8 byte (10xx xxxx) -inline bool IsTrailByte(char x) { - // return (x & 0xC0) == 0x80; - // Since trail bytes are always in [0x80, 0xBF], we can optimize: - return static_cast<signed char>(x) < -0x40; -} - -// Returns the length in bytes of the prefix of src that is all -// interchange valid UTF-8 -int SpanInterchangeValid(const char* src, int byte_length); -inline int SpanInterchangeValid(const std::string& src) { - return SpanInterchangeValid(src.data(), src.size()); -} - -// Returns true if the source is all interchange valid UTF-8 -// "Interchange valid" is a stronger than structurally valid -- -// no C0 or C1 control codes (other than CR LF HT FF) and no non-characters. -inline bool IsInterchangeValid(const char* src, int byte_length) { - return (byte_length == SpanInterchangeValid(src, byte_length)); -} -inline bool IsInterchangeValid(const std::string& src) { - return IsInterchangeValid(src.data(), src.size()); -} - -} // namespace UniLib - -#endif // UTIL_UTF8_PUBLIC_UNILIB_H_ diff --git a/third_party/libphonenumber/cpp/src/utf/utf.h b/third_party/libphonenumber/cpp/src/utf/utf.h deleted file mode 100644 index f4fd482..0000000 --- a/third_party/libphonenumber/cpp/src/utf/utf.h +++ /dev/null @@ -1,251 +0,0 @@ -/* - * The authors of this software are Rob Pike and Ken Thompson. - * Copyright (c) 1998-2002 by Lucent Technologies. - * Portions Copyright (c) 2009 The Go Authors. All rights reserved. - * Permission to use, copy, modify, and distribute this software for any - * purpose without fee is hereby granted, provided that this entire notice - * is included in all copies of any software which is or includes a copy - * or modification of this software and in all copies of the supporting - * documentation for such software. - * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY - * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY - * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. - */ - -#ifndef _UTFH_ -#define _UTFH_ 1 - -// stdint.h content doesn't seem to be used in this file and doesn't exist on -// Windows, therefore we comment it out here so that the code could be compiled -// on Windows. -//#include <stdint.h> - -typedef signed int Rune; /* Code-point values in Unicode 4.0 are 21 bits wide.*/ - -enum -{ - UTFmax = 4, /* maximum bytes per rune */ - Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */ - Runeself = 0x80, /* rune and UTF sequences are the same (<) */ - Runeerror = 0xFFFD, /* decoding error in UTF */ - Runemax = 0x10FFFF, /* maximum rune value */ -}; - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * rune routines - */ - -/* - * These routines were written by Rob Pike and Ken Thompson - * and first appeared in Plan 9. - * SEE ALSO - * utf (7) - * tcs (1) -*/ - -// runetochar copies (encodes) one rune, pointed to by r, to at most -// UTFmax bytes starting at s and returns the number of bytes generated. - -int runetochar(char* s, const Rune* r); - - -// chartorune copies (decodes) at most UTFmax bytes starting at s to -// one rune, pointed to by r, and returns the number of bytes consumed. -// If the input is not exactly in UTF format, chartorune will set *r -// to Runeerror and return 1. -// -// Note: There is no special case for a "null-terminated" string. A -// string whose first byte has the value 0 is the UTF8 encoding of the -// Unicode value 0 (i.e., ASCII NULL). A byte value of 0 is illegal -// anywhere else in a UTF sequence. - -int chartorune(Rune* r, const char* s); - - -// charntorune is like chartorune, except that it will access at most -// n bytes of s. If the UTF sequence is incomplete within n bytes, -// charntorune will set *r to Runeerror and return 0. If it is complete -// but not in UTF format, it will set *r to Runeerror and return 1. -// -// Added 2004-09-24 by Wei-Hwa Huang - -int charntorune(Rune* r, const char* s, int n); - -// isvalidcharntorune(str, n, r, consumed) -// is a convenience function that calls "*consumed = charntorune(r, str, n)" -// and returns an int (logically boolean) indicating whether the first -// n bytes of str was a valid and complete UTF sequence. - -int isvalidcharntorune(const char* str, int n, Rune* r, int* consumed); - -// runelen returns the number of bytes required to convert r into UTF. - -int runelen(Rune r); - - -// runenlen returns the number of bytes required to convert the n -// runes pointed to by r into UTF. - -int runenlen(const Rune* r, int n); - - -// fullrune returns 1 if the string s of length n is long enough to be -// decoded by chartorune, and 0 otherwise. This does not guarantee -// that the string contains a legal UTF encoding. This routine is used -// by programs that obtain input one byte at a time and need to know -// when a full rune has arrived. - -int fullrune(const char* s, int n); - -// The following routines are analogous to the corresponding string -// routines with "utf" substituted for "str", and "rune" substituted -// for "chr". - -// utflen returns the number of runes that are represented by the UTF -// string s. (cf. strlen) - -int utflen(const char* s); - - -// utfnlen returns the number of complete runes that are represented -// by the first n bytes of the UTF string s. If the last few bytes of -// the string contain an incompletely coded rune, utfnlen will not -// count them; in this way, it differs from utflen, which includes -// every byte of the string. (cf. strnlen) - -int utfnlen(const char* s, long n); - - -// utfrune returns a pointer to the first occurrence of rune r in the -// UTF string s, or 0 if r does not occur in the string. The NULL -// byte terminating a string is considered to be part of the string s. -// (cf. strchr) - -const char* utfrune(const char* s, Rune r); - - -// utfrrune returns a pointer to the last occurrence of rune r in the -// UTF string s, or 0 if r does not occur in the string. The NULL -// byte terminating a string is considered to be part of the string s. -// (cf. strrchr) - -const char* utfrrune(const char* s, Rune r); - - -// utfutf returns a pointer to the first occurrence of the UTF string -// s2 as a UTF substring of s1, or 0 if there is none. If s2 is the -// null string, utfutf returns s1. (cf. strstr) - -const char* utfutf(const char* s1, const char* s2); - - -// utfecpy copies UTF sequences until a null sequence has been copied, -// but writes no sequences beyond es1. If any sequences are copied, -// s1 is terminated by a null sequence, and a pointer to that sequence -// is returned. Otherwise, the original s1 is returned. (cf. strecpy) - -char* utfecpy(char *s1, char *es1, const char *s2); - - - -// These functions are rune-string analogues of the corresponding -// functions in strcat (3). -// -// These routines first appeared in Plan 9. -// SEE ALSO -// memmove (3) -// rune (3) -// strcat (2) -// -// BUGS: The outcome of overlapping moves varies among implementations. - -Rune* runestrcat(Rune* s1, const Rune* s2); -Rune* runestrncat(Rune* s1, const Rune* s2, long n); - -const Rune* runestrchr(const Rune* s, Rune c); - -int runestrcmp(const Rune* s1, const Rune* s2); -int runestrncmp(const Rune* s1, const Rune* s2, long n); - -Rune* runestrcpy(Rune* s1, const Rune* s2); -Rune* runestrncpy(Rune* s1, const Rune* s2, long n); -Rune* runestrecpy(Rune* s1, Rune* es1, const Rune* s2); - -Rune* runestrdup(const Rune* s); - -const Rune* runestrrchr(const Rune* s, Rune c); -long runestrlen(const Rune* s); -const Rune* runestrstr(const Rune* s1, const Rune* s2); - - - -// The following routines test types and modify cases for Unicode -// characters. Unicode defines some characters as letters and -// specifies three cases: upper, lower, and title. Mappings among the -// cases are also defined, although they are not exhaustive: some -// upper case letters have no lower case mapping, and so on. Unicode -// also defines several character properties, a subset of which are -// checked by these routines. These routines are based on Unicode -// version 3.0.0. -// -// NOTE: The routines are implemented in C, so the boolean functions -// (e.g., isupperrune) return 0 for false and 1 for true. -// -// -// toupperrune, tolowerrune, and totitlerune are the Unicode case -// mappings. These routines return the character unchanged if it has -// no defined mapping. - -Rune toupperrune(Rune r); -Rune tolowerrune(Rune r); -Rune totitlerune(Rune r); - - -// isupperrune tests for upper case characters, including Unicode -// upper case letters and targets of the toupper mapping. islowerrune -// and istitlerune are defined analogously. - -int isupperrune(Rune r); -int islowerrune(Rune r); -int istitlerune(Rune r); - - -// isalpharune tests for Unicode letters; this includes ideographs in -// addition to alphabetic characters. - -int isalpharune(Rune r); - - -// isdigitrune tests for digits. Non-digit numbers, such as Roman -// numerals, are not included. - -int isdigitrune(Rune r); - - -// isideographicrune tests for ideographic characters and numbers, as -// defined by the Unicode standard. - -int isideographicrune(Rune r); - - -// isspacerune tests for whitespace characters, including "C" locale -// whitespace, Unicode defined whitespace, and the "zero-width -// non-break space" character. - -int isspacerune(Rune r); - - -// (The comments in this file were copied from the manpage files rune.3, -// isalpharune.3, and runestrcat.3. Some formatting changes were also made -// to conform to Google style. /JRM 11/11/05) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/third_party/libphonenumber/cpp/src/utf/utfdef.h b/third_party/libphonenumber/cpp/src/utf/utfdef.h deleted file mode 100644 index adc6d95..0000000 --- a/third_party/libphonenumber/cpp/src/utf/utfdef.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * The authors of this software are Rob Pike and Ken Thompson. - * Copyright (c) 1998-2002 by Lucent Technologies. - * Permission to use, copy, modify, and distribute this software for any - * purpose without fee is hereby granted, provided that this entire notice - * is included in all copies of any software which is or includes a copy - * or modification of this software and in all copies of the supporting - * documentation for such software. - * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY - * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY - * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. - */ - -#define uchar _utfuchar -#define ushort _utfushort -#define uint _utfuint -#define ulong _utfulong -#define vlong _utfvlong -#define uvlong _utfuvlong - -typedef unsigned char uchar; -typedef unsigned short ushort; -typedef unsigned int uint; -typedef unsigned long ulong; - -#define nelem(x) (sizeof(x)/sizeof((x)[0])) -#define nil ((void*)0) diff --git a/third_party/libphonenumber/libphonenumber.gyp b/third_party/libphonenumber/libphonenumber.gyp deleted file mode 100644 index d5f64b9..0000000 --- a/third_party/libphonenumber/libphonenumber.gyp +++ /dev/null @@ -1,133 +0,0 @@ -# Copyright (c) 2011 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -{ - 'variables': { - 'protoc_out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out', - }, - 'target_defaults': { - 'include_dirs': [ - '../..', # add it first, so src/base headers are used instead of the ones - # brought with the library as cc files would be taken from the - # main chrome tree as well. - 'cpp/src', - '<(protoc_out_dir)', - '../protobuf/src', - '../icu/public/common', - '../icu/public/i18n', - ], - 'defines': [ - 'U_USING_ICU_NAMESPACE=0', - ], - 'conditions': [ - ['OS!="win" or component=="static_library"', { - 'defines': [ - 'U_STATIC_IMPLEMENTATION', - ], - }], - ], - }, - 'targets': [{ - 'target_name': 'libphonenumber', - 'type': '<(library)', - 'dependencies': [ - 'phonenumber_proto', - ], - 'sources': [ - 'chrome/regexp_adapter_icuregexp.cc', - 'cpp/src/default_logger.cc', - 'cpp/src/logger_adapter.cc', - 'cpp/src/metadata.cc', - 'cpp/src/phonenumber.cc', - 'cpp/src/phonenumberutil.cc', - 'cpp/src/stringutil.cc', - 'cpp/src/utf/rune.c', - 'cpp/src/utf/unicodetext.cc', - 'cpp/src/utf/unilib.cc', - # Generated by phonenumber_proto. - '<(protoc_out_dir)/phonemetadata.pb.cc', - '<(protoc_out_dir)/phonenumber.pb.cc', - ], - 'conditions': [ - ['OS=="win"', { - 'action': [ - '/wo4309', - ], - }], - ], - }, - { - # Protobuf compiler / generate rule for the phones - 'target_name': 'phonenumber_proto', - 'type': 'none', - 'sources': [ - 'resources/phonemetadata.proto', - 'resources/phonenumber.proto', - ], - 'rules': [{ - 'rule_name': 'genproto', - 'extension': 'proto', - 'inputs': [ - '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', - ], - 'variables': { - # The protoc compiler requires a proto_path argument with the - # directory containing the .proto file. - # There's no generator variable that corresponds to this, so fake it. - 'rule_input_relpath': 'resources', - }, - 'outputs': [ - '<(protoc_out_dir)/<(RULE_INPUT_ROOT).pb.h', - '<(protoc_out_dir)/<(RULE_INPUT_ROOT).pb.cc', - ], - 'action': [ - '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', - '--proto_path=<(rule_input_relpath)', - '<(rule_input_relpath)/<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)', - '--cpp_out=<(protoc_out_dir)', - ], - 'message': 'Generating C++ code from <(RULE_INPUT_PATH)', - }], - 'dependencies': [ - '../protobuf/protobuf.gyp:protobuf_lite', - '../protobuf/protobuf.gyp:protoc#host', - ], - 'direct_dependent_settings': { - 'include_dirs': [ - '<(protoc_out_dir)', - ] - }, - 'export_dependent_settings': [ - '../../third_party/protobuf/protobuf.gyp:protobuf_lite', - ], - }, - { - 'target_name': 'libphonenumber_unittests', - 'type': 'executable', - 'sources': [ - '../../base/test/run_all_unittests.cc', - 'cpp/src/phonenumberutil_test.cc', - 'cpp/src/regexp_adapter_unittest.cc', - 'cpp/src/stringutil_test.cc', - 'cpp/src/test_metadata.cc', - ], - 'dependencies': [ - '../icu/icu.gyp:icui18n', - '../icu/icu.gyp:icuuc', - '../protobuf/protobuf.gyp:protobuf_lite', - '../../base/base.gyp:base', - '../../base/base.gyp:test_support_base', - '../../testing/gmock.gyp:gmock', - '../../testing/gtest.gyp:gtest', - 'libphonenumber', - ], - 'conditions': [ - ['OS=="win"', { - 'action': [ - '/wo4309', - ], - }], - ], - }] -} diff --git a/third_party/libphonenumber/patches/version186.patch b/third_party/libphonenumber/patches/version186.patch deleted file mode 100644 index 63afbfaa..0000000 --- a/third_party/libphonenumber/patches/version186.patch +++ /dev/null @@ -1,1177 +0,0 @@ -Index: regexp_adapter.h
-===================================================================
---- regexp_adapter.h (revision 0)
-+++ regexp_adapter.h (revision 0)
-@@ -0,0 +1,96 @@
-+// Copyright (C) 2011 Google Inc. -+// -+// Licensed under the Apache License, Version 2.0 (the "License"); -+// you may not use this file except in compliance with the License. -+// You may obtain a copy of the License at -+// -+// http://www.apache.org/licenses/LICENSE-2.0 -+// -+// Unless required by applicable law or agreed to in writing, software -+// distributed under the License is distributed on an "AS IS" BASIS, -+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+// See the License for the specific language governing permissions and -+// limitations under the License. -+ -+// Author: George Yakovlev -+ -+#ifndef I18N_PHONENUMBERS_REGEXP_ADAPTER_H_ -+#define I18N_PHONENUMBERS_REGEXP_ADAPTER_H_ -+ -+#include <string> -+ -+// Regexp adapter to allow pluggable regexp engine, as it is external to -+// libphonenumber. -+ -+namespace reg_exp { -+ -+// The reg exp input class. -+// It supports only functions used in phonelibrary. -+class RegularExpressionInput { -+ public: -+ virtual ~RegularExpressionInput() {}; -+ -+ // Matches string to regular expression, returns true if expression was -+ // matched, false otherwise, advances position in the match. -+ // |reg_exp| - expression to be matched. -+ // |beginning_only| - if true match would be successfull only if appears at -+ // the beginning of the tested region of the string. -+ // |matched_string1| - successfully matched first string. Can be NULL. -+ // |matched_string2| - successfully matched second string. Can be NULL. -+ virtual bool ConsumeRegExp(std::string const& reg_exp, -+ bool beginning_only, -+ std::string* matched_string1, -+ std::string* matched_string2) = 0; -+ // Convert unmatched input to a string. -+ virtual std::string ToString() const = 0; -+}; -+ -+// The regular expression class. -+// It supports only functions used in phonelibrary. -+class RegularExpression { -+ public: -+ RegularExpression() {} -+ virtual ~RegularExpression() {} -+ -+ // Matches string to regular expression, returns true if expression was -+ // matched, false otherwise, advances position in the match. -+ // |input_string| - string to be searched. -+ // |beginning_only| - if true match would be successfull only if appears at -+ // the beginning of the tested region of the string. -+ // |matched_string1| - successfully matched first string. Can be NULL. -+ // |matched_string2| - successfully matched second string. Can be NULL. -+ // |matched_string3| - successfully matched third string. Can be NULL. -+ virtual bool Consume(RegularExpressionInput* input_string, -+ bool beginning_only, -+ std::string* matched_string1 = NULL, -+ std::string* matched_string2 = NULL, -+ std::string* matched_string3 = NULL) const = 0; -+ -+ -+ // Matches string to regular expression, returns true if expression was -+ // matched, false otherwise. -+ // |input_string| - string to be searched. -+ // |full_match| - if true match would be successfull only if it matches the -+ // complete string. -+ // |matched_string| - successfully matched string. Can be NULL. -+ virtual bool Match(const char* input_string, -+ bool full_match, -+ std::string* matched_string) const = 0; -+ -+ // Replaces match(es) in the |string_to_process|. if |global| is true, -+ // replaces all the matches, only the first match otherwise. -+ // |replacement_string| - text the matches are replaced with. -+ // Returns true if expression successfully processed through the string, -+ // even if no actual replacements were made. Returns false in case of an -+ // error. -+ virtual bool Replace(std::string* string_to_process, -+ bool global, -+ const char* replacement_string) const = 0; -+}; -+ -+RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input); -+RegularExpression* CreateRegularExpression(const char* utf8_regexp); -+ -+} // namespace reg_exp -+ -+#endif // I18N_PHONENUMBERS_REGEXP_ADAPTER_H_ -
-Property changes on: regexp_adapter.h
-___________________________________________________________________
-Added: svn:eol-style
- + LF
-
-Index: regexp_adapter_re2.cc
-===================================================================
---- regexp_adapter_re2.cc (revision 0)
-+++ regexp_adapter_re2.cc (revision 0)
-@@ -0,0 +1,192 @@
-+// Copyright (C) 2011 Google Inc. -+// -+// Licensed under the Apache License, Version 2.0 (the "License"); -+// you may not use this file except in compliance with the License. -+// You may obtain a copy of the License at -+// -+// http://www.apache.org/licenses/LICENSE-2.0 -+// -+// Unless required by applicable law or agreed to in writing, software -+// distributed under the License is distributed on an "AS IS" BASIS, -+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+// See the License for the specific language governing permissions and -+// limitations under the License. -+ -+// Author: George Yakovlev -+#include "regexp_adapter.h" -+ -+#include <re2/re2.h> -+#include <re2/stringpiece.h> -+#include <re2/re2.h> -+ -+namespace { -+scoped_ptr<RE2Cache> re2_cache; -+} // namespace -+ -+class RE2RegularExpressionInput : public RegularExpressionInput { -+ public: -+ RE2RegularExpressionInput(const char* utf8_input); -+ -+ virtual bool ConsumeRegExp(std::string const& reg_exp, -+ bool beginning_only, -+ std::string* matched_string1, -+ std::string* matched_string2); -+ virtual std::string ToString() const; -+ private: -+ StringPiece utf8_input_; -+}; -+ -+ -+class RE2RegularExpression : public reg_exp::RegularExpression { -+ public: -+ RE2RegularExpression(const char* utf8_regexp); -+ -+ virtual bool Consume(reg_exp::RegularExpressionInput* input_string, -+ bool beginning_only, -+ std::string* matched_string1, -+ std::string* matched_string2, -+ std::string* matched_string3) const; -+ -+ virtual bool Match(const char* input_string, -+ bool full_match, -+ std::string* matched_string) const; -+ -+ virtual bool Replace(std::string* string_to_process, -+ bool global, -+ const char* replacement_string) const; -+ private: -+ RE2 utf8_regexp_; -+}; -+ -+RE2RegularExpressionInput::RE2RegularExpressionInput(const char* utf8_input) -+ : utf8_input_(utf8_input) { -+ DCHECK(utf8_input); -+} -+ -+bool RE2RegularExpressionInput::ConsumeRegExp(std::string const& reg_exp, -+ bool beginning_only, -+ std::string* matched_string1, -+ std::string* matched_string2) { -+ if (beginning_only) { -+ if (matched_string2) -+ return RE2::Consume(&utf8_input_, -+ RE2Cache::ScopedAccess(re2_cache.get(), reg_exp), -+ matched_string1, matched_string2); -+ else if (matched_string1) -+ return RE2::Consume(&utf8_input_, -+ RE2Cache::ScopedAccess(re2_cache.get(), reg_exp), -+ matched_string1); -+ else -+ return RE2::Consume(&utf8_input_, -+ RE2Cache::ScopedAccess(re2_cache.get(), reg_exp)); -+ } else { -+ if (matched_string2) -+ return RE2::FindAndConsume(&utf8_input_, -+ RE2Cache::ScopedAccess(re2_cache.get(), -+ reg_exp), -+ matched_string1, matched_string2); -+ else if (matched_string1) -+ return RE2::FindAndConsume(&utf8_input_, -+ RE2Cache::ScopedAccess(re2_cache.get(), -+ reg_exp), -+ matched_string1); -+ else -+ return RE2::FindAndConsume(&utf8_input_, -+ RE2Cache::ScopedAccess(re2_cache.get(), -+ reg_exp)); -+ } -+} -+ -+std::string RE2RegularExpressionInput::ToString() const { -+ utf8_input_.ToString(); -+} -+ -+RE2RegularExpression::RE2RegularExpression(const char* utf8_regexp) -+ : utf8_regexp_(utf8_regexp) { -+ DCHECK(utf8_regexp); -+} -+ -+bool RE2RegularExpression::Consume(RegularExpressionInput* input_string, -+ bool beginning_only, -+ std::string* matched_string1, -+ std::string* matched_string2, -+ std::string* matched_string3) const { -+ DCHECK(input_string); -+ // matched_string1 may be NULL -+ // matched_string2 may be NULL -+ if (beginning_only) { -+ if (matched_string3) { -+ return RE2::Consume(input_string, utf8_regexp_, -+ matched_string1, matched_string2, matched_string3); -+ } else if (matched_string2) { -+ return RE2::Consume(input_string, utf8_regexp_, -+ matched_string1, matched_string2); -+ } else if (matched_string1) { -+ return RE2::Consume(input_string, utf8_regexp_, matched_string1); -+ } else { -+ return RE2::Consume(input_string, utf8_regexp_); -+ } -+ } else { -+ if (matched_string3) { -+ return RE2::FindAndConsume(input_string, utf8_regexp_, -+ matched_string1, matched_string2, -+ matched_string3); -+ } else if (matched_string2) { -+ return RE2::FindAndConsume(input_string, utf8_regexp_, -+ matched_string1, matched_string2); -+ } else if (matched_string1) { -+ return RE2::FindAndConsume(input_string, utf8_regexp_, matched_string1); -+ } else { -+ return RE2::FindAndConsume(input_string, utf8_regexp_); -+ } -+ } -+} -+ -+bool RE2RegularExpression::Match(const char* input_string, -+ bool full_match, -+ std::string* matched_string) const { -+ DCHECK(input_string); -+ // matched_string may be NULL -+ if (full_match) { -+ if (matched_string) -+ return RE2::FullMatch(input_string, matched_string); -+ else -+ return RE2::FullMatch(input_string); -+ } else { -+ if (matched_string) -+ return RE2::PartialMatch(input_string, matched_string); -+ else -+ return RE2::PartialMatch(input_string); -+ } -+} -+ -+bool RE2RegularExpression::Replace(std::string* string_to_process, -+ bool global, -+ const char* replacement_string) const { -+ DCHECK(string_to_process); -+ DCHECK(replacement_string); -+ if (global) { -+ StringPiece str(replacement_string); -+ return RE2::GlobalReplace(string_to_process, str); -+ } else { -+ return RE2::Replace(string_to_process, replacement_string); -+ } -+} -+ -+ -+namespace reg_exp { -+ -+RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input) { -+ if (!re2_cache.get()) -+ re2_cache.reset(new RE2Cache(64)); -+ return new RE2RegularExpressionInput(utf8_input); -+} -+ -+RegularExpression* CreateRegularExpression(const char* utf8_regexp) { -+ if (!re2_cache.get()) -+ re2_cache.reset(new RE2Cache(64)); -+ return new RE2RegularExpression(utf8_regexp); -+} -+ -+} // namespace reg_exp -+ -
-Property changes on: regexp_adapter_re2.cc
-___________________________________________________________________
-Added: svn:eol-style
- + LF
-
-Index: phonenumberutil_test.cc
-===================================================================
---- phonenumberutil_test.cc (revision 186)
-+++ phonenumberutil_test.cc (working copy)
-@@ -21,12 +21,12 @@
- #include <string> - - #include <gtest/gtest.h> --#include <re2/re2.h> - - #include "phonemetadata.pb.h" - #include "phonenumber.h" - #include "phonenumber.pb.h" - #include "phonenumberutil.h" -+#include "regexp_adapter.h" - #include "test_metadata.h" - - namespace i18n { -Index: phonenumberutil.cc
-===================================================================
---- phonenumberutil.cc (revision 186)
-+++ phonenumberutil.cc (working copy)
-@@ -25,8 +25,6 @@
- #include <vector> - - #include <google/protobuf/message_lite.h> --#include <re2/re2.h> --#include <re2/stringpiece.h> - #include <unicode/errorcode.h> - #include <unicode/translit.h> - -@@ -38,7 +36,7 @@
- #include "phonemetadata.pb.h" - #include "phonenumber.h" - #include "phonenumber.pb.h" --#include "re2_cache.h" -+#include "regexp_adapter.h" - #include "stringutil.h" - #include "utf/unicodetext.h" - #include "utf/utf.h" -@@ -54,14 +52,11 @@
- using std::stringstream; - - using google::protobuf::RepeatedPtrField; --using re2::StringPiece; - - namespace { - - scoped_ptr<LoggerAdapter> logger; - --scoped_ptr<RE2Cache> re2_cache; -- - // These objects are created in the function InitializeStaticMapsAndSets. - - // These mappings map a character (key) to a specific digit that should replace -@@ -78,7 +73,7 @@
- const char kPlusSign[] = "+"; - - const char kPlusChars[] = "++"; --scoped_ptr<const RE2> plus_chars_pattern; -+scoped_ptr<const reg_exp::RegularExpression> plus_chars_pattern; - - const char kRfc3966ExtnPrefix[] = ";ext="; - -@@ -89,7 +84,7 @@
- // prefixes in a region, they will be represented as a regex string that always - // contains character(s) other than ASCII digits. - // Note this regex also includes tilde, which signals waiting for the tone. --scoped_ptr<const RE2> unique_international_prefix; -+scoped_ptr<const reg_exp::RegularExpression> unique_international_prefix; - - // Digits accepted in phone numbers. - // Both Arabic-Indic and Eastern Arabic-Indic are supported. -@@ -97,8 +92,8 @@
- // We accept alpha characters in phone numbers, ASCII only. We store lower-case - // here only since our regular expressions are case-insensitive. - const char kValidAlpha[] = "a-z"; --scoped_ptr<const RE2> capturing_digit_pattern; --scoped_ptr<const RE2> capturing_ascii_digits_pattern; -+scoped_ptr<const reg_exp::RegularExpression> capturing_digit_pattern; -+scoped_ptr<const reg_exp::RegularExpression> capturing_ascii_digits_pattern; - - // Regular expression of acceptable characters that may start a phone number - // for the purposes of parsing. This allows us to strip away meaningless -@@ -110,7 +105,7 @@
- // a number. The string starting with this valid character is captured. - // This corresponds to VALID_START_CHAR in the java version. - scoped_ptr<const string> valid_start_char; --scoped_ptr<const RE2> valid_start_char_pattern; -+scoped_ptr<const reg_exp::RegularExpression> valid_start_char_pattern; - - // Regular expression of characters typically used to start a second phone - // number for the purposes of parsing. This allows us to strip off parts of -@@ -121,7 +116,8 @@
- // preceding this is captured. - // This corresponds to SECOND_NUMBER_START in the java version. - const char kCaptureUpToSecondNumberStart[] = "(.*)[\\\\/] *x"; --scoped_ptr<const RE2> capture_up_to_second_number_start_pattern; -+scoped_ptr<const reg_exp::RegularExpression> -+ capture_up_to_second_number_start_pattern; - - // Regular expression of trailing characters that we want to remove. We remove - // all characters that are not alpha or numerical characters. The hash -@@ -130,7 +126,7 @@
- // number if this was a match. - // This corresponds to UNWANTED_END_CHARS in the java version. - const char kUnwantedEndChar[] = "[^\\p{N}\\p{L}#]"; --scoped_ptr<const RE2> unwanted_end_char_pattern; -+scoped_ptr<const reg_exp::RegularExpression> unwanted_end_char_pattern; - - // Regular expression of acceptable punctuation found in phone numbers. This - // excludes punctuation found as a leading character only. This consists of -@@ -177,20 +173,20 @@
- scoped_ptr<const string> known_extn_patterns; - // Regexp of all known extension prefixes used by different regions followed - // by 1 or more valid digits, for use when parsing. --scoped_ptr<const RE2> extn_pattern; -+scoped_ptr<const reg_exp::RegularExpression> extn_pattern; - - // We append optionally the extension pattern to the end here, as a valid phone - // number may have an extension prefix appended, followed by 1 or more digits. --scoped_ptr<const RE2> valid_phone_number_pattern; -+scoped_ptr<const reg_exp::RegularExpression> valid_phone_number_pattern; - - // We use this pattern to check if the phone number has at least three letters - // in it - if so, then we treat it as a number where some phone-number digits - // are represented by letters. --scoped_ptr<const RE2> valid_alpha_phone_pattern; -+scoped_ptr<const reg_exp::RegularExpression> valid_alpha_phone_pattern; - --scoped_ptr<const RE2> first_group_capturing_pattern; -+scoped_ptr<const reg_exp::RegularExpression> first_group_capturing_pattern; - --scoped_ptr<const RE2> carrier_code_pattern; -+scoped_ptr<const reg_exp::RegularExpression> carrier_code_pattern; - - void TransformRegularExpressionToRE2Syntax(string* regex) { - DCHECK(regex); -@@ -280,18 +276,19 @@
- it = available_formats.begin(); it != available_formats.end(); ++it) { - int size = it->leading_digits_pattern_size(); - if (size > 0) { -- StringPiece number_copy(number_for_leading_digits_match); -+ scoped_ptr<reg_exp::RegularExpressionInput> -+ number_copy(reg_exp::CreateRegularExpressionInput( -+ number_for_leading_digits_match.c_str())); - // We always use the last leading_digits_pattern, as it is the most - // detailed. -- if (!RE2::Consume(&number_copy, -- RE2Cache::ScopedAccess( -- re2_cache.get(), -- it->leading_digits_pattern(size - 1)))) { -+ if (!number_copy->ConsumeRegExp(it->leading_digits_pattern(size - 1), -+ true, NULL, NULL)) { - continue; - } - } -- RE2Cache::ScopedAccess pattern_to_match(re2_cache.get(), it->pattern()); -- if (RE2::FullMatch(national_number, pattern_to_match)) { -+ scoped_ptr<reg_exp::RegularExpression> pattern_to_match( -+ reg_exp::CreateRegularExpression(it->pattern().c_str())); -+ if (pattern_to_match->Match(national_number.c_str(), true, NULL)) { - string formatting_pattern(it->format()); - if (number_format == PhoneNumberUtil::NATIONAL && - carrier_code.length() > 0 && -@@ -299,11 +296,12 @@
- // Replace the $CC in the formatting rule with the desired carrier code. - string carrier_code_formatting_rule = - it->domestic_carrier_code_formatting_rule(); -- RE2::Replace(&carrier_code_formatting_rule, *carrier_code_pattern, -- carrier_code); -+ carrier_code_pattern->Replace(&carrier_code_formatting_rule, -+ false, carrier_code.c_str()); - TransformRegularExpressionToRE2Syntax(&carrier_code_formatting_rule); -- RE2::Replace(&formatting_pattern, *first_group_capturing_pattern, -- carrier_code_formatting_rule); -+ first_group_capturing_pattern->Replace(&formatting_pattern, -+ false, -+ carrier_code_formatting_rule.c_str()); - } else { - // Use the national prefix formatting rule instead. - string national_prefix_formatting_rule = -@@ -315,14 +313,15 @@
- // should be formatted at this point. - TransformRegularExpressionToRE2Syntax( - &national_prefix_formatting_rule); -- RE2::Replace(&formatting_pattern, *first_group_capturing_pattern, -- national_prefix_formatting_rule); -+ first_group_capturing_pattern->Replace(&formatting_pattern, -+ false, -+ national_prefix_formatting_rule.c_str()); - } - } - TransformRegularExpressionToRE2Syntax(&formatting_pattern); - formatted_number->assign(national_number); -- RE2::GlobalReplace(formatted_number, pattern_to_match, -- formatting_pattern); -+ pattern_to_match->Replace(formatted_number, true, -+ formatting_pattern.c_str()); - return; - } - } -@@ -361,12 +360,14 @@
- - bool IsNumberMatchingDesc(const string& national_number, - const PhoneNumberDesc& number_desc) { -- return (RE2::FullMatch(national_number, -- RE2Cache::ScopedAccess(re2_cache.get(), -- number_desc.possible_number_pattern())) && -- RE2::FullMatch(national_number, -- RE2Cache::ScopedAccess(re2_cache.get(), -- number_desc.national_number_pattern()))); -+ scoped_ptr<const reg_exp::RegularExpression> -+ possible_pattern(reg_exp::CreateRegularExpression( -+ number_desc.possible_number_pattern().c_str())); -+ scoped_ptr<const reg_exp::RegularExpression> -+ national_pattern(reg_exp::CreateRegularExpression( -+ number_desc.national_number_pattern().c_str())); -+ return (possible_pattern->Match(national_number.c_str(), true, NULL) && -+ national_pattern->Match(national_number.c_str(), true, NULL)); - } - - PhoneNumberUtil::PhoneNumberType GetNumberTypeHelper( -@@ -452,18 +453,25 @@
- // Initialisation helper function used to populate the regular expressions in a - // defined order. - void CreateRegularExpressions() { -- unique_international_prefix.reset(new RE2("[\\d]+(?:[~⁓∼~][\\d]+)?")); -- first_group_capturing_pattern.reset(new RE2("(\\$1)")); -- carrier_code_pattern.reset(new RE2("\\$CC")); -- capturing_digit_pattern.reset(new RE2(StrCat("([", kValidDigits, "])"))); -- capturing_ascii_digits_pattern.reset(new RE2("(\\d+)")); -+ unique_international_prefix.reset( -+ reg_exp::CreateRegularExpression("[\\d]+(?:[~⁓∼~][\\d]+)?")); -+ first_group_capturing_pattern.reset( -+ reg_exp::CreateRegularExpression("(\\$1)")); -+ carrier_code_pattern.reset( -+ reg_exp::CreateRegularExpression("\\$CC")); -+ capturing_digit_pattern.reset( -+ reg_exp::CreateRegularExpression( -+ StrCat("([", kValidDigits, "])").c_str())); -+ capturing_ascii_digits_pattern.reset( -+ reg_exp::CreateRegularExpression("(\\d+)")); - valid_start_char.reset(new string(StrCat( - "[", kPlusChars, kValidDigits, "]"))); -- valid_start_char_pattern.reset(new RE2(*valid_start_char)); -- capture_up_to_second_number_start_pattern.reset(new RE2( -- kCaptureUpToSecondNumberStart)); -- unwanted_end_char_pattern.reset(new RE2( -- kUnwantedEndChar)); -+ valid_start_char_pattern.reset( -+ reg_exp::CreateRegularExpression(valid_start_char->c_str())); -+ capture_up_to_second_number_start_pattern.reset( -+ reg_exp::CreateRegularExpression(kCaptureUpToSecondNumberStart)); -+ unwanted_end_char_pattern.reset( -+ reg_exp::CreateRegularExpression(kUnwantedEndChar)); - valid_phone_number.reset(new string( - StrCat("[", kPlusChars, "]*(?:[", kValidPunctuation, "]*[", kValidDigits, - "]){3,}[", kValidAlpha, kValidPunctuation, kValidDigits, "]*"))); -@@ -479,17 +487,19 @@
- "int|int|anexo)" - "[:\\..]?[ \\t,-]*", capturing_extn_digits, "#?|" - "[- ]+([", kValidDigits, "]{1,5})#"))); -- extn_pattern.reset(new RE2(StrCat("(?i)(?:", *known_extn_patterns, ")$"))); -- valid_phone_number_pattern.reset(new RE2( -- StrCat("(?i)", *valid_phone_number, "(?:", *known_extn_patterns, ")?"))); -- valid_alpha_phone_pattern.reset(new RE2( -- StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}"))); -- plus_chars_pattern.reset(new RE2(StrCat("[", kPlusChars, "]+"))); -+ extn_pattern.reset(reg_exp::CreateRegularExpression( -+ StrCat("(?i)(?:", *known_extn_patterns, ")$").c_str())); -+ valid_phone_number_pattern.reset(reg_exp::CreateRegularExpression( -+ StrCat("(?i)", *valid_phone_number, "(?:", *known_extn_patterns, -+ ")?").c_str())); -+ valid_alpha_phone_pattern.reset(reg_exp::CreateRegularExpression( -+ StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}").c_str())); -+ plus_chars_pattern.reset(reg_exp::CreateRegularExpression( -+ StrCat("[", kPlusChars, "]+").c_str())); - } - - void InitializeStaticMapsAndSets() { - // Create global objects. -- re2_cache.reset(new RE2Cache(64)); - all_plus_number_grouping_symbols.reset(new map<char32, char>); - alpha_mappings.reset(new map<char32, char>); - all_normalization_mappings.reset(new map<char32, char>); -@@ -625,36 +635,37 @@
- - // Strips the IDD from the start of the number if present. Helper function used - // by MaybeStripInternationalPrefixAndNormalize. --bool ParsePrefixAsIdd(const RE2& idd_pattern, string* number) { -+bool ParsePrefixAsIdd(const reg_exp::RegularExpression* idd_pattern, -+ string* number) { - DCHECK(number); -- StringPiece number_copy(*number); -+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy( -+ reg_exp::CreateRegularExpressionInput(number->c_str())); - // First attempt to strip the idd_pattern at the start, if present. We make a - // copy so that we can revert to the original string if necessary. -- if (RE2::Consume(&number_copy, idd_pattern)) { -+ if (idd_pattern->Consume(number_copy.get(), true, NULL, NULL)) { - // Only strip this if the first digit after the match is not a 0, since - // country calling codes cannot begin with 0. - string extracted_digit; -- if (RE2::PartialMatch(number_copy, -- *capturing_digit_pattern, -- &extracted_digit)) { -+ if (capturing_digit_pattern->Match(number_copy->ToString().c_str(), false, -+ &extracted_digit)) { - PhoneNumberUtil::NormalizeDigitsOnly(&extracted_digit); - if (extracted_digit == "0") { - return false; - } - } -- number->assign(number_copy.ToString()); -+ number->assign(number_copy->ToString()); - return true; - } - return false; - } - - PhoneNumberUtil::ValidationResult TestNumberLengthAgainstPattern( -- const RE2& number_pattern, const string& number) { -+ const reg_exp::RegularExpression* number_pattern, const string& number) { - string extracted_number; -- if (RE2::FullMatch(number, number_pattern, &extracted_number)) { -+ if (number_pattern->Match(number.c_str(), true, &extracted_number)) { - return PhoneNumberUtil::IS_POSSIBLE; - } -- if (RE2::PartialMatch(number, number_pattern, &extracted_number)) { -+ if (number_pattern->Match(number.c_str(), false, &extracted_number)) { - return PhoneNumberUtil::TOO_LONG; - } else { - return PhoneNumberUtil::TOO_SHORT; -@@ -862,8 +873,10 @@
- PhoneNumberFormat number_format, - const RepeatedPtrField<NumberFormat>& user_defined_formats, - string* formatted_number) const { -- static const RE2 national_prefix_pattern("\\$NP"); -- static const RE2 first_group_pattern("\\$FG"); -+ static scoped_ptr<const reg_exp::RegularExpression> -+ national_prefix_pattern(reg_exp::CreateRegularExpression("\\$NP")); -+ static scoped_ptr<const reg_exp::RegularExpression> -+ first_group_pattern(reg_exp::CreateRegularExpression("\\$FG")); - DCHECK(formatted_number); - int country_calling_code = number.country_code(); - // Note GetRegionCodeForCountryCode() is used because formatting information -@@ -893,10 +906,12 @@
- num_format_copy->MergeFrom(*it); - if (!national_prefix.empty()) { - // Replace $NP with national prefix and $FG with the first group ($1). -- RE2::Replace(&national_prefix_formatting_rule, national_prefix_pattern, -- national_prefix); -- RE2::Replace(&national_prefix_formatting_rule, first_group_pattern, -- "$1"); -+ national_prefix_pattern->Replace(&national_prefix_formatting_rule, -+ false, -+ national_prefix.c_str()); -+ first_group_pattern->Replace(&national_prefix_formatting_rule, -+ false, -+ "$1"); - num_format_copy->set_national_prefix_formatting_rule( - national_prefix_formatting_rule); - } else { -@@ -1021,7 +1036,8 @@
- // format of the number is returned, unless there is a preferred international - // prefix. - string international_prefix_for_formatting( -- RE2::FullMatch(international_prefix, *unique_international_prefix) -+ unique_international_prefix->Match(international_prefix.c_str(), -+ true, NULL) - ? international_prefix - : metadata->preferred_international_prefix()); - if (!international_prefix_for_formatting.empty()) { -@@ -1133,7 +1149,8 @@
- // format of the number is returned, unless there is a preferred international - // prefix. - string international_prefix_for_formatting( -- RE2::FullMatch(international_prefix, *unique_international_prefix) -+ unique_international_prefix->Match(international_prefix.c_str(), -+ true, NULL) - ? international_prefix - : metadata->preferred_international_prefix()); - if (!international_prefix_for_formatting.empty()) { -@@ -1179,8 +1196,10 @@
- number, carrier_code, formatted_number); - if (number_format == RFC3966) { - // Replace all separators with a "-". -- static const RE2 separator_pattern(StrCat("[", kValidPunctuation, "]+")); -- RE2::GlobalReplace(formatted_number, separator_pattern, "-"); -+ scoped_ptr<const reg_exp::RegularExpression> separator_pattern( -+ reg_exp::CreateRegularExpression( -+ StrCat("[", kValidPunctuation, "]+").c_str())); -+ separator_pattern->Replace(formatted_number, true, "-"); - } - } - -@@ -1288,10 +1307,9 @@
- it != region_codes.end(); ++it) { - const PhoneMetadata* metadata = GetMetadataForRegion(*it); - if (metadata->has_leading_digits()) { -- StringPiece number(national_number); -- if (RE2::Consume(&number, -- RE2Cache::ScopedAccess(re2_cache.get(), -- metadata->leading_digits()))) { -+ scoped_ptr<reg_exp::RegularExpressionInput> number( -+ reg_exp::CreateRegularExpressionInput(national_number.c_str())); -+ if (number->ConsumeRegExp(metadata->leading_digits(), true, NULL, NULL)) { - *region_code = *it; - return; - } -@@ -1367,8 +1385,10 @@
- const string& number_to_parse, - const string& default_region) const { - if (!IsValidRegionCode(default_region) && !number_to_parse.empty()) { -- StringPiece number_as_string_piece(number_to_parse); -- if (!RE2::Consume(&number_as_string_piece, *plus_chars_pattern)) { -+ scoped_ptr<reg_exp::RegularExpressionInput> number_as_string_piece( -+ reg_exp::CreateRegularExpressionInput(number_to_parse.c_str())); -+ if (!plus_chars_pattern->Consume(number_as_string_piece.get(), -+ true, NULL, NULL)) { - return false; - } - } -@@ -1435,8 +1455,6 @@
- return TOO_SHORT_NSN; - } - if (country_metadata) { -- RE2Cache::ScopedAccess valid_number_pattern(re2_cache.get(), -- country_metadata->general_desc().national_number_pattern()); - string* carrier_code = keep_raw_input ? - temp_number.mutable_preferred_domestic_carrier_code() : NULL; - MaybeStripNationalPrefixAndCarrierCode(*country_metadata, -@@ -1489,7 +1507,7 @@
- for (it = number_as_unicode.begin(); it != number_as_unicode.end(); ++it) { - len = it.get_utf8(current_char); - current_char[len] = '\0'; -- if (RE2::FullMatch(current_char, *valid_start_char_pattern)) { -+ if (valid_start_char_pattern->Match(current_char, true, NULL)) { - break; - } - } -@@ -1505,7 +1523,7 @@
- for (; reverse_it.base() != it; ++reverse_it) { - len = reverse_it.get_utf8(current_char); - current_char[len] = '\0'; -- if (!RE2::FullMatch(current_char, *unwanted_end_char_pattern)) { -+ if (!unwanted_end_char_pattern->Match(current_char, true, NULL)) { - break; - } - } -@@ -1521,9 +1539,9 @@
- " left with: " + *extracted_number); - - // Now remove any extra numbers at the end. -- RE2::PartialMatch(*extracted_number, -- *capture_up_to_second_number_start_pattern, -- extracted_number); -+ capture_up_to_second_number_start_pattern->Match(extracted_number->c_str(), -+ false, -+ extracted_number); - } - - bool PhoneNumberUtil::IsPossibleNumber(const PhoneNumber& number) const { -@@ -1569,9 +1587,10 @@
- return IS_POSSIBLE; - } - } -- RE2Cache::ScopedAccess possible_number_pattern(re2_cache.get(), -- StrCat("(", general_num_desc.possible_number_pattern(), ")")); -- return TestNumberLengthAgainstPattern(possible_number_pattern, -+ scoped_ptr<reg_exp::RegularExpression> possible_number_pattern( -+ reg_exp::CreateRegularExpression( -+ StrCat("(", general_num_desc.possible_number_pattern(), ")").c_str())); -+ return TestNumberLengthAgainstPattern(possible_number_pattern.get(), - national_number); - } - -@@ -1701,13 +1720,16 @@
- - string formatted_number; - Format(copied_proto, INTERNATIONAL, &formatted_number); -- StringPiece i18n_number(formatted_number); -+ scoped_ptr<reg_exp::RegularExpressionInput> i18n_number( -+ reg_exp::CreateRegularExpressionInput(formatted_number.c_str())); - string digit_group; - string ndc; - string third_group; - for (int i = 0; i < 3; ++i) { -- if (!RE2::FindAndConsume(&i18n_number, *capturing_ascii_digits_pattern, -- &digit_group)) { -+ if (!capturing_ascii_digits_pattern->Consume(i18n_number.get(), -+ false, -+ &digit_group, -+ NULL)) { - // We should find at least three groups. - return 0; - } -@@ -1734,9 +1756,11 @@
- void PhoneNumberUtil::NormalizeDigitsOnly(string* number) { - DCHECK(number); - // Delete everything that isn't valid digits. -- static const RE2 invalid_digits_pattern(StrCat("[^", kValidDigits, "]")); -- static const StringPiece empty; -- RE2::GlobalReplace(number, invalid_digits_pattern, empty); -+ static scoped_ptr<reg_exp::RegularExpression> invalid_digits_pattern( -+ reg_exp::CreateRegularExpression(StrCat("[^", kValidDigits, -+ "]").c_str())); -+ static const char *empty = ""; -+ invalid_digits_pattern->Replace(number, true, empty); - // Normalize all decimal digits to ASCII digits. - UParseError error; - icu::ErrorCode status; -@@ -1778,7 +1802,7 @@
- string number_copy(number); - string extension; - MaybeStripExtension(&number_copy, &extension); -- return RE2::FullMatch(number_copy, *valid_alpha_phone_pattern); -+ return valid_alpha_phone_pattern->Match(number_copy.c_str(), true, NULL); - } - - void PhoneNumberUtil::ConvertAlphaCharactersInNumber(string* number) const { -@@ -1798,7 +1822,7 @@
- // - Arabic-Indic numerals are converted to European numerals. - void PhoneNumberUtil::Normalize(string* number) const { - DCHECK(number); -- if (RE2::PartialMatch(*number, *valid_alpha_phone_pattern)) { -+ if (valid_alpha_phone_pattern->Match(number->c_str(), false, NULL)) { - NormalizeHelper(*all_normalization_mappings, true, number); - } - NormalizeDigitsOnly(number); -@@ -1816,7 +1840,7 @@
- logger->Debug("Number too short to be viable:" + number); - return false; - } -- return RE2::FullMatch(number, *valid_phone_number_pattern); -+ return valid_phone_number_pattern->Match(number.c_str(), true, NULL); - } - - // Strips any international prefix (such as +, 00, 011) present in the number -@@ -1836,17 +1860,20 @@
- if (number->empty()) { - return PhoneNumber::FROM_DEFAULT_COUNTRY; - } -- StringPiece number_string_piece(*number); -- if (RE2::Consume(&number_string_piece, *plus_chars_pattern)) { -- number->assign(number_string_piece.ToString()); -+ scoped_ptr<reg_exp::RegularExpressionInput> number_string_piece( -+ reg_exp::CreateRegularExpressionInput(number->c_str())); -+ if (plus_chars_pattern->Consume(number_string_piece.get(), true, -+ NULL, NULL)) { -+ number->assign(number_string_piece->ToString()); - // Can now normalize the rest of the number since we've consumed the "+" - // sign at the start. - Normalize(number); - return PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN; - } - // Attempt to parse the first digits as an international prefix. -- RE2Cache::ScopedAccess idd_pattern(re2_cache.get(), possible_idd_prefix); -- if (ParsePrefixAsIdd(idd_pattern, number)) { -+ scoped_ptr<reg_exp::RegularExpression> idd_pattern( -+ reg_exp::CreateRegularExpression(possible_idd_prefix.c_str())); -+ if (ParsePrefixAsIdd(idd_pattern.get(), number)) { - Normalize(number); - return PhoneNumber::FROM_NUMBER_WITH_IDD; - } -@@ -1854,7 +1881,7 @@
- // This shouldn't be done before, since non-numeric characters (+ and ~) may - // legally be in the international prefix. - Normalize(number); -- return ParsePrefixAsIdd(idd_pattern, number) -+ return ParsePrefixAsIdd(idd_pattern.get(), number) - ? PhoneNumber::FROM_NUMBER_WITH_IDD - : PhoneNumber::FROM_DEFAULT_COUNTRY; - } -@@ -1879,25 +1906,25 @@
- } - // We use two copies here since Consume modifies the phone number, and if the - // first if-clause fails the number will already be changed. -- StringPiece number_copy(*number); -- StringPiece number_copy_without_transform(*number); -+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy( -+ reg_exp::CreateRegularExpressionInput(number->c_str())); -+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy_without_transform( -+ reg_exp::CreateRegularExpressionInput(number->c_str())); -+ - string number_string_copy(*number); - string captured_part_of_prefix; -- RE2Cache::ScopedAccess national_number_rule( -- re2_cache.get(), -- metadata.general_desc().national_number_pattern()); -+ scoped_ptr<reg_exp::RegularExpression> national_number_rule( -+ reg_exp::CreateRegularExpression( -+ metadata.general_desc().national_number_pattern().c_str())); - // Attempt to parse the first digits as a national prefix. We make a - // copy so that we can revert to the original string if necessary. - const string& transform_rule = metadata.national_prefix_transform_rule(); - if (!transform_rule.empty() && -- (RE2::Consume(&number_copy, -- RE2Cache::ScopedAccess(re2_cache.get(), -- possible_national_prefix), -- &carrier_code_temp, &captured_part_of_prefix) || -- RE2::Consume(&number_copy, -- RE2Cache::ScopedAccess(re2_cache.get(), -- possible_national_prefix), -- &captured_part_of_prefix)) && -+ (number_copy->ConsumeRegExp(possible_national_prefix, true, -+ &carrier_code_temp, -+ &captured_part_of_prefix) || -+ number_copy->ConsumeRegExp(possible_national_prefix, true, -+ &captured_part_of_prefix, NULL)) && - !captured_part_of_prefix.empty()) { - string re2_transform_rule(transform_rule); - TransformRegularExpressionToRE2Syntax(&re2_transform_rule); -@@ -1905,29 +1932,27 @@
- // have been some part of the prefix that we captured. - // We make the transformation and check that the resultant number is viable. - // If so, replace the number and return. -- RE2::Replace(&number_string_copy, -- RE2Cache::ScopedAccess(re2_cache.get(), -- possible_national_prefix), -- re2_transform_rule); -- if (RE2::FullMatch(number_string_copy, national_number_rule)) { -+ scoped_ptr<reg_exp::RegularExpression> possible_national_prefix_rule( -+ reg_exp::CreateRegularExpression(possible_national_prefix.c_str())); -+ possible_national_prefix_rule->Replace(&number_string_copy, false, -+ re2_transform_rule.c_str()); -+ if (national_number_rule->Match(number_string_copy.c_str(), true, NULL)) { - number->assign(number_string_copy); - if (carrier_code) { - carrier_code->assign(carrier_code_temp); - } - } -- } else if (RE2::Consume(&number_copy_without_transform, -- RE2Cache::ScopedAccess(re2_cache.get(), -- possible_national_prefix), -- &carrier_code_temp) || -- RE2::Consume(&number_copy_without_transform, -- RE2Cache::ScopedAccess(re2_cache.get(), -- possible_national_prefix))) { -+ } else if (number_copy_without_transform->ConsumeRegExp( -+ possible_national_prefix, true, &carrier_code_temp, NULL) || -+ number_copy_without_transform->ConsumeRegExp( -+ possible_national_prefix, true, NULL, NULL)) { - logger->Debug("Parsed the first digits as a national prefix."); -+ string unconsumed_part(number_copy_without_transform->ToString()); - // If captured_part_of_prefix is empty, this implies nothing was captured by - // the capturing groups in possible_national_prefix; therefore, no - // transformation is necessary, and we just remove the national prefix. -- if (RE2::FullMatch(number_copy_without_transform, national_number_rule)) { -- number->assign(number_copy_without_transform.ToString()); -+ if (national_number_rule->Match(unconsumed_part.c_str(), true, NULL)) { -+ number->assign(unconsumed_part); - if (carrier_code) { - carrier_code->assign(carrier_code_temp); - } -@@ -1949,11 +1974,13 @@
- string possible_extension_two; - string possible_extension_three; - string number_copy(*number); -- if (RE2::PartialMatch(number_copy, *extn_pattern, -- &possible_extension_one, &possible_extension_two, -- &possible_extension_three)) { -+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy_regex_input( -+ reg_exp::CreateRegularExpressionInput(number_copy.c_str())); -+ if (extn_pattern->Consume(number_copy_regex_input.get(), false, -+ &possible_extension_one, &possible_extension_two, -+ &possible_extension_three)) { - // Replace the extensions in the original string here. -- RE2::Replace(&number_copy, *extn_pattern, ""); -+ extn_pattern->Replace(&number_copy, false, ""); - logger->Debug("Found an extension. Possible extension one: " - + possible_extension_one - + ". Possible extension two: " + possible_extension_two -@@ -2061,25 +2088,29 @@
- &potential_national_number)) { - const PhoneNumberDesc& general_num_desc = - default_region_metadata->general_desc(); -- RE2Cache::ScopedAccess valid_number_pattern( -- re2_cache.get(), -- general_num_desc.national_number_pattern()); -+ scoped_ptr<reg_exp::RegularExpression> valid_number_pattern( -+ reg_exp::CreateRegularExpression( -+ general_num_desc.national_number_pattern().c_str())); -+ - MaybeStripNationalPrefixAndCarrierCode(*default_region_metadata, - &potential_national_number, - NULL); - logger->Debug("Number without country code prefix: " - + potential_national_number); - string extracted_number; -- RE2Cache::ScopedAccess possible_number_pattern( -- re2_cache.get(), -- StrCat("(", general_num_desc.possible_number_pattern(), ")")); -+ scoped_ptr<reg_exp::RegularExpression> possible_number_pattern( -+ reg_exp::CreateRegularExpression( -+ StrCat("(", general_num_desc.possible_number_pattern(), -+ ")").c_str())); - // If the number was not valid before but is valid now, or if it was too - // long before, we consider the number with the country code stripped to - // be a better result and keep that instead. -- if ((!RE2::FullMatch(*national_number, valid_number_pattern) && -- RE2::FullMatch(potential_national_number, valid_number_pattern)) || -- TestNumberLengthAgainstPattern(possible_number_pattern, -- *national_number) -+ if ((!valid_number_pattern->Match(national_number->c_str(), -+ true, NULL) && -+ valid_number_pattern->Match(potential_national_number.c_str(), -+ true, NULL)) || -+ TestNumberLengthAgainstPattern(possible_number_pattern.get(), -+ *national_number) - == TOO_LONG) { - national_number->assign(potential_national_number); - if (keep_raw_input) { -Index: regexp_adapter_unittest.cc
-===================================================================
---- regexp_adapter_unittest.cc (revision 0)
-+++ regexp_adapter_unittest.cc (revision 0)
-@@ -0,0 +1,142 @@
-+// Copyright (C) 2011 Google Inc. -+// -+// Licensed under the Apache License, Version 2.0 (the "License"); -+// you may not use this file except in compliance with the License. -+// You may obtain a copy of the License at -+// -+// http://www.apache.org/licenses/LICENSE-2.0 -+// -+// Unless required by applicable law or agreed to in writing, software -+// distributed under the License is distributed on an "AS IS" BASIS, -+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+// See the License for the specific language governing permissions and -+// limitations under the License. -+ -+// Author: George Yakovlev -+#include <gtest/gtest.h> -+ -+#include "base/scoped_ptr.h" -+#include "regexp_adapter.h" -+ -+namespace reg_exp { -+ -+TEST(RegExpAdapter, TestConsumeRegExp) { -+ scoped_ptr<const reg_exp::RegularExpression> reg_exp1( -+ reg_exp::CreateRegularExpression("[0-9a-z]+")); -+ scoped_ptr<const reg_exp::RegularExpression> reg_exp2( -+ reg_exp::CreateRegularExpression(" \\(([0-9a-z]+)\\)")); -+ scoped_ptr<const reg_exp::RegularExpression> reg_exp3( -+ reg_exp::CreateRegularExpression("([0-9a-z]+)-([0-9a-z]+)")); -+ -+ scoped_ptr<reg_exp::RegularExpressionInput> reg_input1( -+ reg_exp::CreateRegularExpressionInput("+1-123-456-789")); -+ scoped_ptr<reg_exp::RegularExpressionInput> reg_input2( -+ reg_exp::CreateRegularExpressionInput("1 (123)456-789")); -+ -+ EXPECT_FALSE(reg_exp1->Consume(reg_input1.get(), true, NULL, NULL)); -+ EXPECT_EQ(reg_input1->ToString(), "+1-123-456-789"); -+ EXPECT_TRUE(reg_exp1->Consume(reg_input1.get(), false, NULL, NULL)); -+ EXPECT_EQ(reg_input1->ToString(), "-123-456-789"); -+ std::string res1, res2; -+ EXPECT_FALSE(reg_exp2->Consume(reg_input1.get(), true, &res1, NULL)); -+ EXPECT_FALSE(reg_exp3->Consume(reg_input1.get(), true, &res1, &res2)); -+ EXPECT_TRUE(reg_exp3->Consume(reg_input1.get(), false, &res1, &res2)); -+ EXPECT_EQ(reg_input1->ToString(), "-789"); -+ EXPECT_EQ(res1, "123"); -+ EXPECT_EQ(res2, "456"); -+ -+ EXPECT_EQ(reg_input2->ToString(), "1 (123)456-789"); -+ EXPECT_TRUE(reg_exp1->Consume(reg_input2.get(), true, NULL, NULL)); -+ EXPECT_EQ(reg_input2->ToString(), " (123)456-789"); -+ EXPECT_TRUE(reg_exp2->Consume(reg_input2.get(), true, &res1, NULL)); -+ EXPECT_EQ(reg_input2->ToString(), "456-789"); -+ EXPECT_EQ(res1, "123"); -+ EXPECT_TRUE(reg_exp3->Consume(reg_input2.get(), true, &res1, &res2)); -+ EXPECT_EQ(reg_input2->ToString(), ""); -+ EXPECT_EQ(res1, "456"); -+ EXPECT_EQ(res2, "789"); -+} -+ -+TEST(RegExpAdapter, TestConsumeInput) { -+ scoped_ptr<reg_exp::RegularExpressionInput> reg_input( -+ reg_exp::CreateRegularExpressionInput("1 (123)456-789")); -+ std::string res1, res2; -+ EXPECT_EQ(reg_input->ToString(), "1 (123)456-789"); -+ EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("\\[1\\]"), -+ true, -+ &res1, -+ &res2)); -+ EXPECT_EQ(reg_input->ToString(), "1 (123)456-789"); -+ EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\([0-9]+\\)"), -+ true, -+ &res1, -+ &res2)); -+ EXPECT_EQ(reg_input->ToString(), "1 (123)456-789"); -+ EXPECT_TRUE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\(([0-9]+)\\)"), -+ true, -+ &res1, -+ &res2)); -+ EXPECT_EQ(reg_input->ToString(), "456-789"); -+ EXPECT_EQ(res1, "1"); -+ EXPECT_EQ(res2, "123"); -+} -+ -+TEST(RegExpAdapter, TestMatch) { -+ scoped_ptr<const reg_exp::RegularExpression> reg_exp( -+ reg_exp::CreateRegularExpression("([0-9a-z]+)")); -+ std::string matched; -+ EXPECT_TRUE(reg_exp->Match("12345af", true, &matched)); -+ EXPECT_EQ(matched, "12345af"); -+ EXPECT_TRUE(reg_exp->Match("12345af", false, &matched)); -+ EXPECT_EQ(matched, "12345af"); -+ EXPECT_TRUE(reg_exp->Match("12345af", false, NULL)); -+ EXPECT_TRUE(reg_exp->Match("12345af", true, NULL)); -+ -+ EXPECT_FALSE(reg_exp->Match("[12]", true, &matched)); -+ EXPECT_TRUE(reg_exp->Match("[12]", false, &matched)); -+ EXPECT_EQ(matched, "12"); -+ -+ EXPECT_FALSE(reg_exp->Match("[]", true, &matched)); -+ EXPECT_FALSE(reg_exp->Match("[]", false, &matched)); -+} -+ -+TEST(RegExpAdapter, TestReplace) { -+ scoped_ptr<const reg_exp::RegularExpression> reg_exp( -+ reg_exp::CreateRegularExpression("[0-9]")); -+ -+ std::string s("123-4567 "); -+ EXPECT_TRUE(reg_exp->Replace(&s, false, "+")); -+ EXPECT_EQ(s, "+23-4567 "); -+ EXPECT_TRUE(reg_exp->Replace(&s, false, "+")); -+ EXPECT_EQ(s, "++3-4567 "); -+ EXPECT_TRUE(reg_exp->Replace(&s, true, "*")); -+ EXPECT_EQ(s, "++*-**** "); -+ EXPECT_TRUE(reg_exp->Replace(&s, true, "*")); -+ EXPECT_EQ(s, "++*-**** "); -+ -+ scoped_ptr<const reg_exp::RegularExpression> full_number_expr( -+ reg_exp::CreateRegularExpression("(\\d{3})(\\d{3})(\\d{4})")); -+ s = "1234567890:0987654321"; -+ EXPECT_TRUE(full_number_expr->Replace(&s, true, "(\\1) \\2-\\3$1")); -+ EXPECT_EQ(s, "(123) 456-7890$1:(098) 765-4321$1"); -+} -+ -+TEST(RegExpAdapter, TestUtf8) { -+ // Expression: <tel symbol><opening square bracket>[<alpha>-<omega>]* -+ // <closing square bracket> -+ scoped_ptr<const reg_exp::RegularExpression> reg_exp( -+ reg_exp::CreateRegularExpression( -+ "\xe2\x84\xa1\xe2\x8a\x8f([\xce\xb1-\xcf\x89]*)\xe2\x8a\x90")); -+ std::string matched; -+ // The string is split to avoid problem with MSVC compiler when it thinks -+ // 123 is a part of character code. -+ EXPECT_FALSE(reg_exp->Match("\xe2\x84\xa1\xe2\x8a\x8f" "123\xe2\x8a\x90", -+ true, &matched)); -+ EXPECT_TRUE(reg_exp->Match( -+ "\xe2\x84\xa1\xe2\x8a\x8f\xce\xb1\xce\xb2\xe2\x8a\x90", true, &matched)); -+ // <alpha><betha> -+ EXPECT_EQ(matched, "\xce\xb1\xce\xb2"); -+} -+ -+} // namespace reg_exp -+ -
-Property changes on: regexp_adapter_unittest.cc
-___________________________________________________________________
-Added: svn:eol-style
- + LF
-
diff --git a/third_party/libphonenumber/resources/PhoneNumberMetaData.xml b/third_party/libphonenumber/resources/PhoneNumberMetaData.xml deleted file mode 100644 index 748ce21..0000000 --- a/third_party/libphonenumber/resources/PhoneNumberMetaData.xml +++ /dev/null @@ -1,19202 +0,0 @@ -<!-- Copyright (C) 2009 Google Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - @author: Shaopeng Jia - @author: Lara Rennie - - MetaData on Phone Number Plan and formatting rules - Note: Territories are in alphabetical order by their IDs, which are based on ISO 3166-1 - two-letter country codes. The country names in the comments are the official short names - in English according to ISO 3166-1. - - For more information on what each element represents, see - java/com/google/i18n/phonenumbers/phonemetadata.proto - - Note that if you want to add validation metadata, the generalDesc nationalNumberPattern and - possibleNumberPattern must be provided. If this is missing, then the country will be - considered to have no more specific phone-number type metadata (fixedLine, mobile etc) and - hence only basic validation rules (numbers should be between 3 and 15 digits long) will be - applied. - - Country code, international and national prefix information main source: - http://www.itu.int/publ/T-SP-E.164C-2010/en ---> - -<!DOCTYPE phoneNumberMetadata [ - <!ELEMENT phoneNumberMetadata (territories)> - <!ELEMENT territories (territory+)> - <!ELEMENT territory (availableFormats?, generalDesc?, noInternationalDialling?, - areaCodeOptional?, fixedLine?, mobile?, pager?, tollFree?, premiumRate?, - sharedCost?, personalNumber?, voip?, uan?, shortCode?)> - <!ELEMENT generalDesc (nationalNumberPattern, possibleNumberPattern)> - <!ELEMENT noInternationalDialling (nationalNumberPattern, possibleNumberPattern, - exampleNumber?)> - <!ELEMENT areaCodeOptional (nationalNumberPattern, possibleNumberPattern, exampleNumber?)> - <!ELEMENT fixedLine (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT mobile (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT pager (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT tollFree (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT premiumRate (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT sharedCost (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT personalNumber (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT voip (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT uan (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT shortCode (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)> - <!ELEMENT availableFormats (numberFormat+, intlNumberFormat*)> - <!ELEMENT nationalNumberPattern (#PCDATA)> - <!ELEMENT possibleNumberPattern (#PCDATA)> - <!ELEMENT exampleNumber (#PCDATA)> - <!ELEMENT numberFormat (leadingDigits*, format)> - <!ELEMENT intlNumberFormat (leadingDigits*, format)> - <!ELEMENT format (#PCDATA)> - <!ELEMENT leadingDigits (#PCDATA)> - - <!ATTLIST territory id CDATA #REQUIRED> - <!ATTLIST territory countryCode CDATA #REQUIRED> - <!ATTLIST territory leadingDigits CDATA #IMPLIED> - <!ATTLIST territory preferredInternationalPrefix CDATA #IMPLIED> - <!ATTLIST territory internationalPrefix CDATA #REQUIRED> - <!ATTLIST territory nationalPrefix CDATA #IMPLIED> - <!ATTLIST territory nationalPrefixForParsing CDATA #IMPLIED> - <!ATTLIST territory nationalPrefixTransformRule CDATA #IMPLIED> - <!ATTLIST territory preferredExtnPrefix CDATA #IMPLIED> - <!ATTLIST territory nationalPrefixFormattingRule CDATA #IMPLIED> - <!ATTLIST territory mainCountryForCode (true) #IMPLIED> - <!ATTLIST territory leadingZeroPossible (true) #IMPLIED> - <!ATTLIST territory carrierCodeFormattingRule CDATA #IMPLIED> - <!ATTLIST numberFormat nationalPrefixFormattingRule CDATA #IMPLIED> - <!ATTLIST numberFormat carrierCodeFormattingRule CDATA #IMPLIED> - <!ATTLIST numberFormat pattern CDATA #REQUIRED> - <!ATTLIST intlNumberFormat pattern CDATA #REQUIRED> - <!ATTLIST intlNumberFormat carrierCodeFormattingRule CDATA #IMPLIED> -]> - -<phoneNumberMetadata> - <territories> - <!-- Ascension Island --> - <!-- www.itu.int/oth/T02020000AF --> - <territory id="AC" countryCode="247" internationalPrefix="00"> - <!-- Formatted as a block. --> - <generalDesc> - <nationalNumberPattern>[2-46]\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{4}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3[0-5]| - 4[4-6]| - [26]\d - )\d{2} - </nationalNumberPattern> - <possibleNumberPattern>\d{4}</possibleNumberPattern> - <exampleNumber>6889</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>NA</nationalNumberPattern> - <possibleNumberPattern>NA</possibleNumberPattern> - </mobile> - </territory> - - <!-- Andorra --> - <!-- http://www.itu.int/oth/T0202000005/en --> - <territory id="AD" countryCode="376" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})"> - <leadingDigits>[346-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(180[02])(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - [346-9]| - 180 - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[78]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>712345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[346]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>312345</exampleNumber> - </mobile> - <tollFree> - <!-- Note that the definitions of 1800 and 1802 numbers differ in the plan and on the - Andorran www.sta.ad website, but we consider both to be freephone here. --> - <nationalNumberPattern>180[02]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>18001234</exampleNumber> - </tollFree> - <!-- The national numbering plan says that numbers beginning with 9 are reserved for special - services, so we assume they are premium rate here, although we cannot find examples - online. --> - <premiumRate> - <nationalNumberPattern>9\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>912345</exampleNumber> - </premiumRate> - </territory> - - <!-- United Arab Emirates --> - <!-- http://www.itu.int/oth/T02020000DC/en --> - <territory id="AE" countryCode="971" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([2-4679])(\d{3})(\d{4})"> - <leadingDigits>[2-4679][2-8]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(5[056])(\d{3})(\d{4})"> - <leadingDigits>5</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([4679]00)(\d)(\d{5})" nationalPrefixFormattingRule="$FG"> - <leadingDigits>[4679]0</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(800)(\d{2,9})" nationalPrefixFormattingRule="$FG"> - <leadingDigits>8</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2-79]\d{7,8}| - 800\d{2,9} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [2-4679][2-8]\d| - 600[25] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>22345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>5[056]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>501234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 400\d{6}| - 800\d{2,9} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,12}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[02]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>900234567</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>700[05]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>700012345</exampleNumber> - </sharedCost> - </territory> - - <!-- Afghanistan --> - <!-- http://www.itu.int/oth/T0202000001/en --> - <territory id="AF" countryCode="93" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([2-7]\d)(\d{3})(\d{4})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-7]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [25][0-8]| - [34][0-4]| - 6[0-5] - )[2-9]\d{6} - </nationalNumberPattern> - <exampleNumber>234567890</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[057-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>701234567</exampleNumber> - </mobile> - </territory> - - <!-- Antigua and Barbuda --> - <!-- http://www.itu.int/oth/T0202000008/en --> - <territory id="AG" countryCode="1" leadingDigits="268" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- 268 468 is not in the plan, but has been added after numbers with this prefix have been - found in online searches. --> - <nationalNumberPattern> - 268(?: - 4(?: - 6[0-38]| - 84 - )| - 56[0-2] - )\d{4} - </nationalNumberPattern> - <exampleNumber>2684601234</exampleNumber> - </fixedLine> - <mobile> - <!-- 268 776/778/779 are not in the plan, but have been added after numbers with these - prefixes have been found in online searches. Same for 268 780/782/784/786. --> - <nationalNumberPattern> - 268(?: - 464| - 7(?: - 2[0-9]| - 64| - 7[0-689]| - 8[02-68] - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2684641234</exampleNumber> - </mobile> - <pager> - <nationalNumberPattern>26840[69]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2684061234</exampleNumber> - </pager> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - <voip> - <!-- This is included as Centrex in the plan. --> - <nationalNumberPattern>26848[01]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2684801234</exampleNumber> - </voip> - </territory> - - <!-- Anguilla --> - <!-- http://www.itu.int/oth/T0202000007/en --> - <territory id="AI" countryCode="1" leadingDigits="264" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2644(?: - 6[12]| - 9[78] - )\d{4} - </nationalNumberPattern> - <exampleNumber>2644612345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 264(?: - 235| - 476| - 5(?: - 3[6-9]| - 8[1-4] - )| - 7(?: - 29| - 72 - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2642351234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Albania --> - <!-- http://www.itu.int/oth/T0202000002/en --> - <territory id="AL" countryCode="355" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Formats mostly follow http://tirana.usembassy.gov/list_of_doctors.html --> - <numberFormat pattern="(4)(\d{3})(\d{4})"> - <leadingDigits>4[0-6]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(6[6-9])(\d{3})(\d{4})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{3})"> - <leadingDigits> - [2358][2-5]| - 4[7-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3,5})"> - <leadingDigits> - [235][16-9]| - 8[016-9]| - [79] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2-57]\d{7}| - 6\d{8}| - 8\d{5,7}| - 9\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - [168][1-9]| - [247]\d| - 9[1-7] - )| - 3(?: - 1[1-3]| - [2-6]\d| - [79][1-8]| - 8[1-9] - )| - 4\d{2}| - 5(?: - 1[1-4]| - [2-578]\d| - 6[1-5]| - 9[1-7] - )| - 8(?: - [19][1-5]| - [2-6]\d| - [78][1-7] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,8}</possibleNumberPattern> - <exampleNumber>22345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6[6-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>661234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>8001234</exampleNumber> - </tollFree> - <premiumRate> - <!-- It is named "Shared Revenue Services" in the plan, but as there is a separate "Shared - Cost Services", it is highly likely these numbers are premium rate numbers. No - information/example is found in the Internet. --> - <nationalNumberPattern>900\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>900123</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>808\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>808123</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>700\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>70012345</exampleNumber> - </personalNumber> - </territory> - - <!-- Armenia --> - <!-- http://www.itu.int/oth/T020200000A/en --> - <!-- We think the national dialling prefix is 0 - it seems this was a change in 2005 (or 2008) - along with the new city codes. However, their official document makes no mention of it, - websites disagree, and we are not sure if the change has actually been made. --> - <territory id="AM" countryCode="374" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{6})"> - <leadingDigits> - [17]| - 9[1-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{6})" - nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits>6</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{5})"> - <leadingDigits>[23]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{3})" - nationalPrefixFormattingRule="$NP $FG"> - <leadingDigits> - 8| - 90 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-36-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{5,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 10\d| - 2(?: - 2[2-46]| - 3[1-8]| - 4[2-69]| - 5[2-7]| - 6[1-9]| - 8[1-7] - )| - 3[12]2 - )\d{5} - </nationalNumberPattern> - <exampleNumber>10123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 77| - 9[1-46-9] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>77123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[016]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90012345</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>80[1-4]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80112345</exampleNumber> - </sharedCost> - <voip> - <!-- More info on this found at www.arminco.com/en/voip --> - <nationalNumberPattern>6027\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>60271234</exampleNumber> - </voip> - <shortCode> - <nationalNumberPattern> - 8[1-7]\d{2}| - 1\d{2} - </nationalNumberPattern> - <possibleNumberPattern>\d{3,4}</possibleNumberPattern> - <exampleNumber>8711</exampleNumber> - </shortCode> - </territory> - - <!-- Netherlands Antilles --> - <!-- http://www.itu.int/oth/T0202000097/en --> - <territory id="AN" countryCode="599" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[13-7]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(9)(\d{3})(\d{4})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[13-79]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 318| - 5(?: - 25| - 4\d| - 8[239] - )| - 7(?: - 1[578]| - 50 - )| - 9(?: - [48]\d{2}| - 50\d| - 7(?: - 2[0-2]| - [34]\d| - 6[35-7]| - 77 - ) - ) - )\d{4}| - 416[0239]\d{3} - </nationalNumberPattern> - <exampleNumber>7151234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 318| - 5(?: - 1[01]| - 2[0-7]| - 5\d| - 8[016-8] - )| - 7(?: - 0[01]| - [89]\d - )| - 9(?: - 5(?: - [1246]\d| - 3[01] - )| - 6(?: - [1679]\d| - 3[01] - ) - ) - )\d{4}| - 416[15-8]\d{3} - </nationalNumberPattern> - <exampleNumber>3181234</exampleNumber> - </mobile> - <!-- Value-added services are lumped together under shared cost, since we are not sure exactly - what they are. --> - <sharedCost> - <nationalNumberPattern> - (?: - 10| - 69 - )\d{5} - </nationalNumberPattern> - <exampleNumber>1011234</exampleNumber> - </sharedCost> - </territory> - - <!-- Angola --> - <!-- http://www.itu.int/oth/T0202000006/en --> - <territory id="AO" countryCode="244" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[29]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2\d(?: - [26-9]\d| - \d[26-9] - )\d{5} - </nationalNumberPattern> - <exampleNumber>222123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Expanded the 92 prefix possibilities to match numbers found online. --> - <nationalNumberPattern>9[1-3]\d{7}</nationalNumberPattern> - <exampleNumber>923123456</exampleNumber> - </mobile> - </territory> - - <!-- Argentina --> - <!-- http://www.itu.int/oth/T0202000009/en --> - <!-- http://www.cnc.gov.ar/numeracion/IndicativosInterurbanos.asp --> - <territory id="AR" countryCode="54" internationalPrefix="00" - nationalPrefix="0" nationalPrefixForParsing="0(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1-367])|3(?:[06]2|1[467]|2[02-6]|3[13-8]|[49][2-6]|5[2-8]|7)|47[3-578]|6(?:1|2[2-7]|4[6-8]?|5[125-8])|9(?:0[1-3]|[19]|2\d|3[1-6]|4[0-24-68]|5[2-4]|6[2-6]|72?|8[23]?))|3(?:3(?:2[79]|8[2578])|4(?:0[124-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6\d|7[126]|8[237-9]|9[1-36-8])|5(?:1|2[1245]|3[2-4]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|7(?:1[15-8]|2[125]|3[1245]|4[13]|5[124-8]|7[2-57]|8[1-36])|8(?:1|2[125-7]|3[23578]|4[13-6]|5[4-8]?|6[1-357-9]|7[5-8]?|8[4-7]?|9[124])))15)?" - nationalPrefixTransformRule="9$1" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([68]\d{2})(\d{3})(\d{4})"> - <leadingDigits>[68]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <intlNumberFormat pattern="([68]\d{2})(\d{3})(\d{4})"> - <leadingDigits>[68]</leadingDigits> - <format>$1-$2-$3</format> - </intlNumberFormat> - <numberFormat pattern="9(11)(\d{4})(\d{4})"> - <leadingDigits>91</leadingDigits> - <format>$1 15-$2-$3</format> - </numberFormat> - <intlNumberFormat pattern="9(11)(\d{4})(\d{4})"> - <leadingDigits>91</leadingDigits> - <format>9 $1 $2-$3</format> - </intlNumberFormat> - <numberFormat pattern="9(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 9(?: - 2[2369]| - 3[458] - ) - </leadingDigits> - <leadingDigits> - 9(?: - 2(?: - 2[013]| - 37| - 6[14]| - 9[179] - )| - 3(?: - 4[1235]| - 5[138]| - 8[1578] - ) - ) - </leadingDigits> - <format>$1 15-$2-$3</format> - </numberFormat> - <intlNumberFormat pattern="9(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 9(?: - 2[2369]| - 3[458] - ) - </leadingDigits> - <leadingDigits> - 9(?: - 2(?: - 2[013]| - 37| - 6[14]| - 9[179] - )| - 3(?: - 4[1235]| - 5[138]| - 8[1578] - ) - ) - </leadingDigits> - <format>9 $1 $2-$3</format> - </intlNumberFormat> - <numberFormat pattern="9(\d{4})(\d{2})(\d{4})"> - <leadingDigits> - 9(?: - 2[2-469]| - 3[3-578] - ) - </leadingDigits> - <leadingDigits> - 9(?: - 2(?: - 2[24-9]| - 3[0-69]| - 47| - 6[25]| - 9[02-68] - )| - 3(?: - 3[28]| - 4[046-9]| - 5[2467]| - 7[1-578]| - 8[23469] - ) - ) - </leadingDigits> - <format>$1 15-$2-$3</format> - </numberFormat> - <intlNumberFormat pattern="9(\d{4})(\d{2})(\d{4})"> - <leadingDigits> - 9(?: - 2[2-469]| - 3[3-578] - ) - </leadingDigits> - <leadingDigits> - 9(?: - 2(?: - 2[24-9]| - 3[0-69]| - 47| - 6[25]| - 9[02-68] - )| - 3(?: - 3[28]| - 4[046-9]| - 5[2467]| - 7[1-578]| - 8[23469] - ) - ) - </leadingDigits> - <format>9 $1 $2-$3</format> - </intlNumberFormat> - <numberFormat pattern="(11)(\d{4})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <intlNumberFormat pattern="(11)(\d{4})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2-$3</format> - </intlNumberFormat> - <!-- Some 4-digit area codes actually are caught by this rule. I'm giving however preference - to the 3-digit area codes, since they are considerably larger communities. --> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 2(?: - 2[013]| - 37| - 6[14]| - 9[179] - )| - 3(?: - 4[1235]| - 5[138]| - 8[1578] - ) - </leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 2(?: - 2[013]| - 37| - 6[14]| - 9[179] - )| - 3(?: - 4[1235]| - 5[138]| - 8[1578] - ) - </leadingDigits> - <format>$1 $2-$3</format> - </intlNumberFormat> - <numberFormat pattern="(\d{4})(\d{2})(\d{4})"> - <leadingDigits>[23]</leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <intlNumberFormat pattern="(\d{4})(\d{2})(\d{4})"> - <leadingDigits>[23]</leadingDigits> - <format>$1 $2-$3</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{9,11}</nationalNumberPattern> - <possibleNumberPattern>\d{6,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[1-9]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - <exampleNumber>1123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 9(?: - 11[2-9]\d{7}| - (?: - 2(?: - 2[013]| - 37| - 6[14]| - 9[179] - )| - 3(?: - 4[1235]| - 5[138]| - 8[1578] - ) - )[2-9]\d{6}| - \d{4}[2-9]\d{5} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{6,12}</possibleNumberPattern> - <exampleNumber>91123456789</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8012345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 6(?: - 0\d| - 10 - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>6001234567</exampleNumber> - </premiumRate> - </territory> - - <!-- American Samoa --> - <!-- http://www.itu.int/oth/T0202000004/en --> - <territory id="AS" countryCode="1" leadingDigits="684" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 6846(?: - 22| - 33| - 44| - 55| - 77| - 88| - 9[19] - )\d{4} - </nationalNumberPattern> - <exampleNumber>6846221234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 684(?: - 733| - 258 - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>6847331234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Austria --> - <!-- http://www.rtr.at/en/tk/E129 --> - <territory id="AT" countryCode="43" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([15])(\d{3,12})"> - <leadingDigits> - 1| - 5[079] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3,10})"> - <leadingDigits> - 316| - 46| - 51| - 732| - 6(?: - 44| - 5[0-3579]| - [6-9] - )| - 7(?: - 1| - [28]0 - )| - [89] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{3,9})"> - <leadingDigits> - 2| - 3(?: - 1[1-578]| - [3-8] - )| - 4[2378]| - 5[2-6]| - 6(?: - [12]| - 4[1-35-9]| - 5[468] - )| - 7(?: - 2[1-8]| - 35| - 4[1-8]| - [57-9] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{4,13}</nationalNumberPattern> - <possibleNumberPattern>\d{3,13}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Note the 050, 057 and 059 prefixes are defined as "private network" in the Austrian - plan. This just means they are registered to companies who are distributed over - different geographical areas and maintain their own network. Examples here: - http://www.rtr.at/?id=4506&S=05&art=d Also note that the full area code is not - validated - just the first 3 digits. This also means that even though for most - Austrian numbers the minimum length is 7, we allow 6 since we don't differentiate below - between 3 and 4 digit area codes for reasons of efficiency. --> - <nationalNumberPattern> - 1\d{3,12}| - (?: - 2(?: - 1[467]| - 2[134-8]| - 5[2357]| - 6[1-46-8]| - 7[1-8]| - 8[124-7]| - 8[1458] - )| - 3(?: - 1[1-8]| - 3[23568]| - 4[5-7]| - 5[1378]| - 6[1-38]| - 8[3-68] - )| - 4(?: - 2[1-8]| - 35| - 63| - 7[1368]| - 8[2457] - )| - 5(?: - 1[27]| - 2[1-8]| - 3[357]| - 4[147]| - 5[12578]| - 6[37] - )| - 6(?: - 13| - 2[1-47]| - 4[1-35-8]| - 5[468]| - 62 - )| - 7(?: - 2[1-8]| - 3[25]| - 4[13478]| - 5[68]| - 6[16-8]| - 7[1-6]| - 9[45] - ) - )\d{3,10}| - 5(?: - 0[1-9]| - [79]\d - )\d{2,10}| - 720\d{6,10} - </nationalNumberPattern> - <exampleNumber>1234567890</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 6(?: - 44| - 5[0-3579]| - 6[013-9]| - [7-9]\d - )\d{4,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,13}</possibleNumberPattern> - <exampleNumber>644123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80[02]\d{6,10}</nationalNumberPattern> - <possibleNumberPattern>\d{9,13}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - (?: - 711| - 9(?: - 0[01]| - 3[019] - ) - )\d{6,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{9,13}</possibleNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 8(?: - 10| - 2[018] - )\d{6,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{9,13}</possibleNumberPattern> - <exampleNumber>810123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>780\d{6,10}</nationalNumberPattern> - <possibleNumberPattern>\d{9,13}</possibleNumberPattern> - <exampleNumber>780123456</exampleNumber> - </voip> - </territory> - - <!-- Australia --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200000D0001MSWE.doc --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Australia --> - <territory id="AU" countryCode="61" preferredInternationalPrefix="0011" - internationalPrefix="(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]" - nationalPrefix="0"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="([2378])(\d{4})(\d{4})"> - <leadingDigits>[2378]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(4\d{2})(\d{3})(\d{3})"> - <leadingDigits>4</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(5[05]0)(\d{3})(\d{3})"> - <leadingDigits>5</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(1[389]\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 1(?: - [38]0| - 9 - ) - </leadingDigits> - <leadingDigits> - 1(?: - [38]00| - 9 - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Although the national plan doesn't explicitly say so, there is no evidence that a 180 - xxxx number could be 180 0xxx. --> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(180)(\d{4})"> - <leadingDigits>180</leadingDigits> - <leadingDigits>180[1-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(13)(\d{2})(\d{2})"> - <leadingDigits>13[1-9]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-578]\d{5,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2378]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>212345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 4(?: - [0-2]\d| - 3[0-57-9]| - 4[47-9]| - 5[0-37-9]| - 6[6-9]| - 7[07-9]| - 8[7-9] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>412345678</exampleNumber> - </mobile> - <tollFree> - <!-- Local-rate (SmartNumbers) are put here for now because they are also a reverse-charge - network, although they charge a small local call connect fee (around 25c). These start - with 13 or 1300. --> - <nationalNumberPattern> - 1(?: - 80(?: - 0\d{2} - )? | - 3(?: - 00\d{2} - )? - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>190[0126]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1900123456</exampleNumber> - </premiumRate> - <!-- Wikipedia was the source for these types of numbers, and number allocation search here - http://web.acma.gov.au/numb/openAccess/inquiry/allocationSearch.do confirms this. (Search - from 0500000000 to 0590000000) --> - <personalNumber> - <nationalNumberPattern>500\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>500123456</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>550\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>550123456</exampleNumber> - </voip> - </territory> - - <!-- Aruba --> - <!-- http://www.itu.int/oth/T020200000B/en --> - <territory id="AW" countryCode="297" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([5-9]\d{2})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[5-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 5(?: - 2\d{2}| - 8(?: - [2-7]\d| - 8[0-79]| - 9[48] - ) - )\d{3} - </nationalNumberPattern> - <exampleNumber>5212345</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 660 since SMS messages have been successfully delivered to numbers with this - prefix, and numbers can be found in the yellow pages. --> - <nationalNumberPattern> - (?: - 5[69]\d| - 660| - 9(?: - 6\d| - 9[02-9] - )| - 7[34]\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>5601234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{4}</nationalNumberPattern> - <exampleNumber>8001234</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{4}</nationalNumberPattern> - <exampleNumber>9001234</exampleNumber> - </premiumRate> - </territory> - - <!-- Azerbaijan --> - <!-- http://www.itu.int/oth/T020200000F/en --> - <territory id="AZ" countryCode="994" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})"> - <leadingDigits>1[28]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>22</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2,3})(\d{2})(\d{2})"> - <leadingDigits>3</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d)(\d{2})(\d{2})"> - <leadingDigits> - 1[013-79]| - 2[013-9] - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})" - nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits>[4-8]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})" - nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Added the 164 area code after it was found in other online lists and in many online - numbers. Also includes the area code 44 for CDMA regions, which are classified under - "Fixed Network" by the national plan. --> - <nationalNumberPattern> - (?: - 1(?: - (?: - [28]\d| - 9 - )\d| - 02| - 1[0-589]| - 3[358]| - 4[013-79]| - 5[0-479]| - 6[02346-9]| - 7[0-24-8] - )| - 2(?: - 16| - 2\d| - 3[0-24]| - 4[1468]| - 55| - 6[56]| - 79 - )| - 365?\d| - 44\d{2} - )\d{5} - </nationalNumberPattern> - <exampleNumber>123123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - [46]0| - 5[015]| - 7[07] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>401234567</exampleNumber> - </mobile> - <tollFree> - <!-- 88 is listed as fixed-line for Baku in the ITU document, but online numbers seem to - suggest they are in fact national toll-free numbers. --> - <nationalNumberPattern>88\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>881234567</exampleNumber> - </tollFree> - <premiumRate> - <!-- These are marked as Interactive Calls in the ITU document. --> - <nationalNumberPattern>900200\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>900200123</exampleNumber> - </premiumRate> - </territory> - - <!-- Bosnia and Herzegovina --> - <!-- http://www.cra.ba/en/telecom/numbering/ --> - <!-- http://en.wikipedia.org/wiki/+387 --> - <territory id="BA" countryCode="387" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([3-689]\d)(\d{3})(\d{3})"> - <format>$1 $2-$3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3-689]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [35]\d| - 49 - )\d{6} - </nationalNumberPattern> - <exampleNumber>30123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6[1-356]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>61123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>8[08]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>9[0246]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - <sharedCost> - <!-- Using this category to model national tariff numbers - these are under Shared Cost in - the plan. --> - <nationalNumberPattern>82\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>82123456</exampleNumber> - </sharedCost> - <uan> - <nationalNumberPattern>81\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>81123456</exampleNumber> - </uan> - </territory> - - <!-- Barbados --> - <!-- http://www.itu.int/oth/T0202000013/en --> - <territory id="BB" countryCode="1" leadingDigits="246" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>246[2-9]\d{6}</nationalNumberPattern> - <exampleNumber>2462345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 246(?: - (?: - 2[346]| - 45| - 82 - )\d| - 25[0-4] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2462501234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Bangladesh --> - <!-- http://www.itu.int/oth/T0202000012/en --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Bangladesh --> - <!-- http://www.btrc.gov.bd/engineering/national_numbering_plan_2005.pdf --> - <territory id="BD" countryCode="880" internationalPrefix="00[12]?" - preferredInternationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(2)(\d{7})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{4,6})"> - <leadingDigits>[3-79]1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3,7})"> - <leadingDigits> - [3-79][2-9]| - 8 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{6})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <!-- This is quite complex so we can define that numbers beginning with 88 are not part of the - plan, so the country code can be accurately stripped off. --> - <nationalNumberPattern> - [2-79]\d{5,9}| - 1\d{9}| - 8[0-7]\d{4,8} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- There was a plan to move to 10 digit fixed-line numbers, but this does not seem to have - been realised, judging by online numbers and wikipedia. These patterns are grouped - first by leading digit, then within by number of digits. Several Dhaka prefixes (02 - 731, 751 etc) are included despite not being mentioned on the wikipedia page due to - online evidence. Another oddity is Chittagong - some numbers have a leading 2, others - do not - both are allowed for now. --> - <nationalNumberPattern> - 2(?: - 7\d1| - 8(?: - [026]1| - [1379][1-5]| - 8[1-8] - )| - 9(?: - 0[0-2]| - 1[1-4]| - 3[3-5]| - 5[56]| - 6[67]| - 71| - 8[078] - ) - )\d{4}| - 3(?: - [6-8]1| - (?: - 0[23]| - [25][12]| - 82| - 416 - )\d| - (?: - 31| - 12?[5-7] - )\d{2} - )\d{3}| - 4(?: - (?: - 02| - [49]6| - [68]1 - )| - (?: - 0[13]| - 21\d? | - [23]2| - [457][12]| - 6[28] - )\d| - (?: - 23| - [39]1 - )\d{2}| - 1\d{3} - )\d{3}| - 5(?: - (?: - [457-9]1| - 62 - )| - (?: - 1\d? | - 2[12]| - 3[1-3]| - 52 - )\d| - 61{2} - )| - 6(?: - [45]1| - (?: - 11| - 2[15]| - [39]1 - )\d| - (?: - [06-8]1| - 62 - )\d{2} - )| - 7(?: - (?: - 32| - 91 - )| - (?: - 02| - 31| - [67][12] - )\d| - [458]1\d{2}| - 21\d{3} - )\d{3}| - 8(?: - (?: - 4[12]| - [5-7]2| - 1\d? - )| - (?: - 0| - 3[12]| - [5-7]1| - 217 - )\d - )\d{4}| - 9(?: - [35]1| - (?: - [024]2| - 81 - )\d| - (?: - 1| - [24]1 - )\d{2} - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>27111234</exampleNumber> - </fixedLine> - <mobile> - <!-- Presuming that mobile numbers with the prefixes 66, 37, 44 and 38 must be followed by - numbers [02-9] or they would clash with fixed-line codes. According to the plan, mobile - numbers should be moving to 1[13-9] anyway. --> - <nationalNumberPattern> - (?: - 1[13-9]\d| - (?: - 3[78]| - 44 - )[02-9]| - 6(?: - 44| - 6[02-9] - ) - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1812345678</exampleNumber> - </mobile> - <tollFree> - <!-- Note: Including Tele-voting numbers here as they are free of charge. --> - <nationalNumberPattern>80[03]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - </territory> - - <!-- Belgium --> - <!-- http://www.bipt.be/en/161/ShowContent/502/Database/Databases.aspx --> - <!-- http://www.telefoonzones.be/ --> - <!-- Information on non-geographic numbers here: (Dutch) - http://www.scarletbusiness.be/business/largeenterprise/nl/products/voiceservices/servicenumbers.jsp - --> - <territory id="BE" countryCode="32" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(4[7-9]\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits>4[7-9]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([2-49])(\d{3})(\d{2})(\d{2})"> - <leadingDigits> - [23]| - [49][23] - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([15-8]\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits> - [156]| - 7[0178]| - 8(?: - 0[1-9]| - [1-79] - ) - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([89]\d{2})(\d{2})(\d{3})"> - <leadingDigits> - (?: - 80| - 9 - )0 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Note that 80 is a valid area code, so we explicitly check for this case that the third - digit begins with 1-9 --> - <nationalNumberPattern> - (?: - 1[0-69]| - [23][2-8]| - [49][23]| - 5\d| - 6[013-57-9]| - 7[18] - )\d{6}| - 8(?: - 0[1-9]| - [1-69]\d - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 4(?: - 7\d| - 8[4-9]| - 9[1-9] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>470123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - (?: - 90| - 7[07] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>87\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>87123456</exampleNumber> - </sharedCost> - </territory> - - <!-- Burkina Faso --> - <!-- http://www.itu.int/oth/T0202000021/en --> - <territory id="BF" countryCode="226" internationalPrefix="00"> - <availableFormats> - <!-- The national numbering plan from ITU suggests grouping of 2, 2 and 4, but we have - chosen to use the standard from numbers found on the internet instead. --> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2457]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- 50 48 and 50 49 exist as well. --> - <nationalNumberPattern> - (?: - 20(?: - 49| - 5[23]| - 9[016-9] - )| - 40(?: - 4[569]| - 55| - 7[0179] - )| - 50[34]\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>20491234</exampleNumber> - </fixedLine> - <mobile> - <!-- Including the whole range of 75 despite the document restricting it to only a few, - since diallable numbers have been found outside the range that the document specifies. - Including 716 as well since many numbers seem to have this prefix. --> - <nationalNumberPattern> - 7(?: - [024-6]\d| - 1[0-4689]| - 3[0-6]| - 7[01]| - 8[013-9]| - 9[0-4] - )\d{5} - </nationalNumberPattern> - <exampleNumber>70123456</exampleNumber> - </mobile> - </territory> - - <!-- Bulgaria --> - <!-- http://www.itu.int/oth/T0202000020/en --> - <territory id="BG" countryCode="359" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(2)(\d{3})(\d{3,4})"> - <leadingDigits>2</leadingDigits> - <format>$1/$2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits> - 43[124-7]| - 70[1-9] - </leadingDigits> - <format>$1/$2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{2})"> - <leadingDigits> - 43[124-7]| - 70[1-9] - </leadingDigits> - <format>$1/$2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{3})"> - <leadingDigits>[78]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{2,3})"> - <leadingDigits> - [356]| - 7[1-9]| - 8[1-6]| - 9[1-7] - </leadingDigits> - <format>$1/$2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})"> - <leadingDigits> - 48| - 8[7-9]| - 9[08] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{6,8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2\d| - [36]\d| - 5[1-9]| - 8[1-6]| - 9[1-7] - )\d{5,6}| - (?: - 4(?: - [124-7]\d| - 3[1-6] - )| - 7(?: - 0[1-9]| - [1-9]\d - ) - )\d{4,5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>2123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 8[7-9]| - 98 - )\d{7}| - 4(?: - 3[0789]| - 8\d - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>48123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>700\d{5}</nationalNumberPattern> - <exampleNumber>70012345</exampleNumber> - </personalNumber> - </territory> - - <!-- Bahrain --> - <!-- http://www.itu.int/oth/T0202000011/en --> - <!-- http://www.tra.org.bh/en/pdf/National_Numbering_Plan_2.pdf --> - <territory id="BH" countryCode="973" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[136-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <!-- Universal Service numbers are under both Mobile and Fixed-Line, as they can be assigned - to either. --> - <fixedLine> - <nationalNumberPattern> - (?: - 1(?: - 3[3-6]| - 6[0156]| - 7\d - )| - 6(?: - 1[16]| - 6[03469]| - 9[69] - )| - 77\d - )\d{5} - </nationalNumberPattern> - <exampleNumber>17001234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 3(?: - [369]\d| - 77| - 8[38] - )| - 6(?: - 1[16]| - 6[03469]| - 9[69] - )| - 77\d - )\d{5} - </nationalNumberPattern> - <exampleNumber>36001234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{6}</nationalNumberPattern> - <exampleNumber>80123456</exampleNumber> - </tollFree> - <!-- 87 numbers are "wholly paid by the caller", so they are slotted under premium-rate for - now. --> - <premiumRate> - <nationalNumberPattern> - (?: - 87| - 9[014578] - )\d{6} - </nationalNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>84\d{6}</nationalNumberPattern> - <exampleNumber>84123456</exampleNumber> - </sharedCost> - </territory> - - <!-- Burundi --> - <!-- http://www.itu.int/oth/T0202000022/en --> - <territory id="BI" countryCode="257" internationalPrefix="00"> - <availableFormats> - <numberFormat - pattern="([27]\d)(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[27]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 22(?: - 2[0-7]| - [3-5]0 - )\d{4} - </nationalNumberPattern> - <exampleNumber>22201234</exampleNumber> - </fixedLine> - <mobile> - <!-- Extra online mobile number prefixes found: 79 10, 78 \d{2} and 76 [29]\d. The 29 - prefix is listed as a mobile prefix, but many people list it as their fixed home - number. We will keep it as mobile for now, but it may actually be a prefix for fixed - satellite phones. --> - <nationalNumberPattern> - (?: - 29\d| - 7(?: - 1[1-3]| - [4-9]\d - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>79561234</exampleNumber> - </mobile> - </territory> - - <!-- Benin --> - <!-- http://www.itu.int/oth/T0202000017/en --> - <territory id="BJ" countryCode="229" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - <!-- Numbers beginning with 7 should be formatted as a block. --> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2689]\d{7}| - 7\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{4,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- These come from the national numbering plan, but have been widened to include other - prefixes found in the yellow pages - specifically 21 0. --> - <nationalNumberPattern> - 2(?: - 02| - 1[037]| - 2[45]| - 3[68] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>20211234</exampleNumber> - </fixedLine> - <mobile> - <!-- 93 0, 93 4, 93 5 and 93 8 have been added as many online examples of these prefixes can - be found. 9[68] and 97[23] prefixes have also been added because of online numbers - following these patterns and numbers where SMSs were successfully delivered. 66 has - been also added, as it seems to be a prefix for Mobile MTN. --> - <nationalNumberPattern> - 66\d{6}| - 9(?: - 0[069]| - [35][0-2457-9]| - [6-8]\d - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90011234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>7[3-5]\d{2}</nationalNumberPattern> - <possibleNumberPattern>\d{4}</possibleNumberPattern> - <exampleNumber>7312</exampleNumber> - </tollFree> - <!-- Other numbers beginning with 81 are reserved for _either_ free phone or shared-cost, but - there is no clear differentiation between these. --> - <voip> - <nationalNumberPattern>857[58]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>85751234</exampleNumber> - </voip> - </territory> - - <!-- Saint Barthélemy, French Antilles --> - <!-- There seems to be some overlap with phone numbers from Saint Martin and Guadeloupe. The - national numbering plan does not specify any St Barthélemy-specific numbering prefixes, but - it appears from searches in online white and yellow pages that a subset of the prefixes - available in Guadeloupe are used. In these cases, if getRegionCodeForNumber is used, one of - these region codes will be returned, although numbers will be valid for both regions. --> - <!-- http://www.itu.int/oth/T0202000058/en --> - <territory id="BL" countryCode="590" internationalPrefix="00" - nationalPrefix="0"> - <!-- Formatting rules borrowed from Guadeloupe. --> - <generalDesc> - <nationalNumberPattern>[56]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 590(?: - 2[7-9]| - 5[12]| - 87 - )\d{4} - </nationalNumberPattern> - <exampleNumber>590271234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 690(?: - 10| - 2[27]| - 66| - 77| - 8[78] - )\d{4} - </nationalNumberPattern> - <exampleNumber>690221234</exampleNumber> - </mobile> - </territory> - - <!-- Bermuda --> - <!-- http://www.itu.int/oth/T0202000018/en --> - <territory id="BM" countryCode="1" leadingDigits="441" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[4589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 441(?: - 2(?: - 02| - 23| - 61| - [3479]\d - )| - [46]\d{2}| - 5(?: - 4\d| - 60| - 89 - )| - 824 - )\d{4} - </nationalNumberPattern> - <exampleNumber>4412345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 441(?: - [37]\d| - 5[0-39] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>4413701234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Brunei Darussalam --> - <!-- http://www.itu.int/oth/T020200001F/en --> - <territory id="BN" countryCode="673" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <!-- Format is from http://aiti.gov.bn/contact.html --> - <availableFormats> - <numberFormat pattern="([2-578]\d{2})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-578]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2-5]\d{6}</nationalNumberPattern> - <exampleNumber>2345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[78]\d{6}</nationalNumberPattern> - <exampleNumber>7123456</exampleNumber> - </mobile> - </territory> - - <!-- Bolivia --> - <!-- http://www.itu.int/oth/T020200001A/en --> - <!-- http://www.bolivia.com/Servicios/Plandenumeracion.pdf --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200001A0001MSWE.doc --> - <territory id="BO" countryCode="591" - internationalPrefix="00(1\d)?" - nationalPrefix="0" - nationalPrefixForParsing="0(1\d)?" - carrierCodeFormattingRule="$NP$CC $FG"> - <availableFormats> - <numberFormat pattern="([234])(\d{7})"> - <leadingDigits>[234]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([67]\d{7})"> - <leadingDigits>[67]</leadingDigits> - <format>$1</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[23467]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - 2\d{2}| - 5(?:11|[258]\d|9[67])| - 6(?:12|2\d|9[34])| - 8(?:2[34]|39|62) - )| - 3(?: - 3\d{2}| - 4(?:6\d|8[24])| - 8(?:25|42|5[257]|86|9[25])| - 9(?:2\d|3[234]|4[248]|5[24]|6[2-6]|7\d) - )| - 4(?: - 4\d{2}| - 6(?:11|[24689]\d|72) - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[67]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>71234567</exampleNumber> - </mobile> - </territory> - - <!-- Brazil --> - <!-- http://en.wikipedia.org/wiki/%2B55 --> - <territory id="BR" countryCode="55" - internationalPrefix="00(?:1[45]|2[135]|[34]1|43)" - nationalPrefix="0" - nationalPrefixForParsing="0(?:(1[245]|2[135]|[34]1)(\d{10}))?" - nationalPrefixTransformRule="$2"> - <!--The national prefix for parsing here also contains a capturing group for the main number, - since the carrier codes here may also be area codes, so we want to check the length of - the number after capturing. We also need a nationalTransformRule to repopulate with the - number without the carrier code. --> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="($FG)" - pattern="(\d{2})(\d{4})(\d{4})" - carrierCodeFormattingRule="$NP $CC ($FG)"> - <leadingDigits>[1-9][1-9]</leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <numberFormat pattern="([34]00\d)(\d{4})"> - <leadingDigits>[34]00</leadingDigits> - <leadingDigits> - 400| - 3003 - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="([3589]00)(\d{2,3})(\d{4})"> - <leadingDigits>[3589]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [14689][1-9]| - 2[12478]| - 3[1-578]| - 5[13-5]| - 7[13-579] - )[2-5]\d{7} - </nationalNumberPattern> - <exampleNumber>1123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - [14689][1-9]| - 2[12478]| - 3[1-578]| - 5[13-5]| - 7[13-579] - )[6-9]\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1161234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6,7}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>[359]00\d{6,7}</nationalNumberPattern> - <exampleNumber>300123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - (?: - 400\d| - 3003 - )\d{4} - </nationalNumberPattern> - <exampleNumber>40041234</exampleNumber> - </sharedCost> - </territory> - - <!-- Bahamas --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000100001MSWE.pdf --> - <territory id="BS" countryCode="1" leadingDigits="242" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 242(?: - 3(?: - 02| - [236][1-9]| - 4[0-24-9]| - 5[0-68]| - 7[3467]| - 8[0-4]| - 9[2-467] - )| - 461| - 502| - 6(?: - 12| - 7[67]| - 8[78]| - 9[89] - )| - 702 - )\d{4} - </nationalNumberPattern> - <exampleNumber>2423456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 242(?: - 3(?: - 5[79]| - [79]5 - )| - 4(?: - [2-4][1-9]| - 5[1-8]| - 6[2-8]| - 7\d| - 81 - )| - 5(?: - 2[34]| - 3[35]| - 44| - 5[1-9]| - 65| - 77 - )| - 6[34]6| - 727 - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2423591234</exampleNumber> - </mobile> - <tollFree> - <!-- 242 300 is a Domestic Toll Free service. --> - <nationalNumberPattern> - 242300\d{4}| - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Bhutan --> - <!-- http://www.itu.int/oth/T0202000019/en --> - <territory id="BT" countryCode="975" internationalPrefix="00"> - <availableFormats> - <!-- Format is from - http://www.tourism.gov.bt/tour-operators/bhutan-abbot-tours-and-travels.html --> - <numberFormat pattern="(17)(\d{2})(\d{2})(\d{2})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([2-8])(\d{3})(\d{3})"> - <leadingDigits>[2-8]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - 17| - [2-8] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2[3-6]| - [34][5-7]| - 5[236]| - 6[2-46]| - 7[246]| - 8[2-4] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,7}</possibleNumberPattern> - <exampleNumber>2345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>17\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>17123456</exampleNumber> - </mobile> - <!-- No information on other types of phone numbers for Bhutan has been found. --> - </territory> - - <!-- Botswana --> - <!-- http://www.itu.int/oth/T020200001C/en --> - <territory id="BW" countryCode="267" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[2-6]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(7\d)(\d{3})(\d{3})"> - <leadingDigits>7</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(90)(\d{5})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-79]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - 4[0-48]| - 6[0-24]| - 9[0578] - )| - 3(?: - 1[0235-9]| - 55| - 6\d| - 7[01]| - 9[0-57] - )| - 4(?: - 6[03]| - 7[1267]| - 9[0-5] - )| - 5(?: - 3[0389]| - 4[0489]| - 7[1-47]| - 88| - 9[0-49] - )| - 6(?: - 2[1-35]| - 5[149]| - 8[067] - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>2401234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 7(?: - [1-35]\d{6}| - [46][0-7]\d{5} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>71123456</exampleNumber> - </mobile> - <!-- No reliable information about toll-free numbers can be found; many are written on the - internet like 0800 123 456, but this is not supported by any documentation and no - numbers can be found that actually work. --> - <premiumRate> - <nationalNumberPattern>90\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>9012345</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>79[12][01]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>79101234</exampleNumber> - </voip> - </territory> - - <!-- Belarus --> - <!-- http://eng.beltelecom.by/info/numbering/ --> - <!-- Information on national prefix provided by a Belarussian person. --> - <territory id="BY" countryCode="375" internationalPrefix="8~10" - nationalPrefixForParsing="80?" nationalPrefix="8"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="$NP 0$FG" - pattern="([1-4]\d)(\d{3})(\d{4})"> - <leadingDigits>[1-4]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP $FG" - pattern="([89]\d{2})(\d{3})(\d{4})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [12-4]\d{8}| - [89]\d{9} - </nationalNumberPattern> - <!-- Numbers are often written without the city code. --> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1(?: - 5(?: - 1[1-5]| - 2\d| - 6[1-4]| - 9[1-7] - )| - 6(?: - [235]\d| - 4[1-7] - )| - 7\d{2} - )| - 2(?: - 1(?: - [246]\d| - 3[0-35-9]| - 5[1-9] - )| - 2(?: - [235]\d| - 4[0-8] - )| - 3(?: - 2\d| - 3[02-79]| - 4[024-7]| - 5[0-7] - ) - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <!-- Using test number for Grodno from the plan. --> - <exampleNumber>152450911</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 2(?: - 5[679]| - 9[1-9] - )| - 33\d| - 44\d - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <!-- Using test number for BelCel from the plan. --> - <exampleNumber>294911911</exampleNumber> - </mobile> - <tollFree> - <!-- Putting Interactive Polling Service (free) here too. --> - <nationalNumberPattern>80[13]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8011234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>902\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9021234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Belize --> - <!-- http://www.itu.int/oth/T0202000016/en --> - <!-- The trunk prefix, formally 0, was dropped in the last reorganisation of the numbering plan. - --> - <territory id="BZ" countryCode="501" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[2-8]</leadingDigits> - <!-- Adding hyphen following the Belize Telemedia formatting rules. --> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(0)(800)(\d{4})(\d{3})"> - <leadingDigits>0</leadingDigits> - <format>$1-$2-$3-$4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2-8]\d{6}| - 0\d{10} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[234578][02]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>2221234</exampleNumber> - </fixedLine> - <mobile> - <!-- 62[6-9] were added as we have been able to successfully send SMSs to these numbers. --> - <nationalNumberPattern> - 6(?: - [0-2]\d| - [67][01] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>6221234</exampleNumber> - </mobile> - <!-- We don't know how these would be dialled internationally - it is possible that they can't - be dialled internationally at all - so we represent the leading 0 as part of the number. - Information from www.belizetelemedia.net. --> - <tollFree> - <nationalNumberPattern>0800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>08001234123</exampleNumber> - </tollFree> - </territory> - - <!-- Canada --> - <!-- http://www.cnac.ca/canadian_dial_plan/canadian_dial_plan.htm --> - <territory id="CA" countryCode="1" internationalPrefix="011" nationalPrefix="1"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern> - [2-9]\d{9}| - 3\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - 04| - 26| - [48]9| - 50 - )| - 3(?: - 06| - 43 - )| - 4(?: - 03| - 1[68]| - 38| - 5[06] - )| - 5(?: - 0[06]| - 1[49]| - 79| - 8[17] - )| - 6(?: - 0[04]| - 13| - 47 - )| - 7(?: - 0[059]| - [18]0| - 78 - )| - 8(?: - [06]7| - 19| - )| - 90[25] - )[2-9]\d{6}| - 310\d{4} - </nationalNumberPattern> - <exampleNumber>2042345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 2(?: - 04| - 26| - [48]9| - 50 - )| - 3(?: - 06| - 43 - )| - 4(?: - 03| - 1[68]| - 38| - 5[06] - )| - 5(?: - 0[06]| - 1[49]| - 79| - 8[17] - )| - 6(?: - 0[04]| - 13| - 47 - )| - 7(?: - 0[059]| - [18]0| - 78 - )| - 8(?: - [06]7| - 19| - )| - 90[25] - )[2-9]\d{6} - </nationalNumberPattern> - <exampleNumber>2042345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6}| - 310\d{4} - </nationalNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Congo, Dem. Rep. of the (formerly Zaire) --> - <!-- http://www.itu.int/oth/T0202000037/en --> - <territory id="CD" countryCode="243" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([89]\d{2})(\d{3})(\d{3})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([1-6]\d)(\d{5})"> - <leadingDigits>[1-6]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [89]\d{8}| - [1-6]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[1-6]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>1234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 8[0-2489]| - 9[7-9] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>991234567</exampleNumber> - </mobile> - </territory> - - <!-- Central African Republic --> - <!-- http://www.itu.int/oth/T0202000028/en --> - <territory id="CF" countryCode="236" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[278]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2[12]\d{6}</nationalNumberPattern> - <exampleNumber>21612345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[0257]\d{6}</nationalNumberPattern> - <exampleNumber>70012345</exampleNumber> - </mobile> - <premiumRate> - <nationalNumberPattern>8776\d{4}</nationalNumberPattern> - <exampleNumber>87761234</exampleNumber> - </premiumRate> - </territory> - - <!-- Congo (Rep. of the) (Brazzaville) --> - <!-- http://www.itu.int/oth/T020200002E/en --> - <territory id="CG" countryCode="242" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits>[02]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{4})(\d{4})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[028]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>222[1-589]\d{5}</nationalNumberPattern> - <exampleNumber>222123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>0[14-6]\d{7}</nationalNumberPattern> - <exampleNumber>061234567</exampleNumber> - </mobile> - <!-- Referred to as a "Green number" in the telephone plan. --> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - </territory> - - <!-- Switzerland --> - <!-- http://www.bakom.admin.ch/themen/telekom/00479/00604/index.html?lang=en - under Technical prescriptions: Numbering plan for international carriers --> - <territory id="CH" countryCode="41" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([2-9]\d)(\d{3})(\d{2})(\d{2})"> - <leadingDigits> - [2-7]| - [89]1 - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([89]\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 8[047]| - 90 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2[12467]| - 3[1-4]| - 4[134]| - 5[12568]| - 6[12]| - [7-9]1 - )\d{7} - </nationalNumberPattern> - <exampleNumber>212345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[46-9]\d{7}</nationalNumberPattern> - <exampleNumber>741234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[016]\d{6}</nationalNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>84[0248]\d{6}</nationalNumberPattern> - <exampleNumber>840123456</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>878\d{6}</nationalNumberPattern> - <exampleNumber>878123456</exampleNumber> - </personalNumber> - </territory> - - <!-- Côte d'Ivoire --> - <!-- http://www.itu.int/oth/T0202000031/en --> - <territory id="CI" countryCode="225" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <!-- Using format from online yellow pages over format implied in national numbering plan. - --> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[02-5]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - 0[023]| - 1[02357]| - [23][045]| - 4[03-5] - )| - 3(?: - 0[06]| - 1[069]| - [2-4][07]| - 5[09]| - 6[08] - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <!-- Added the prefixes 40 and 57 because SMS messages have been successfully delivered. - Supported by numbers found on the internet. --> - <nationalNumberPattern> - (?: - 0[1-9]| - 4[04-9]| - 5[07]| - 6[067] - )\d{6} - </nationalNumberPattern> - <exampleNumber>01234567</exampleNumber> - </mobile> - </territory> - - <!-- Cook Islands --> - <!-- http://www.itu.int/oth/T020200002F/en --> - <territory id="CK" countryCode="682" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-57]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{5}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2\d| - 3[13-7]| - 4[1-5] - )\d{3} - </nationalNumberPattern> - <exampleNumber>21234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 5[0-68]| - 7\d - )\d{3} - </nationalNumberPattern> - <exampleNumber>71234</exampleNumber> - </mobile> - </territory> - - <!-- Chile --> - <!-- http://www.itu.int/oth/T020200002A/en --> - <!-- http://en.wikipedia.org/wiki/%2B56 --> - <!-- Carriers listed here: http://www.turismochile.com/datos/carrier.php --> - <territory id="CL" countryCode="56" - internationalPrefix="(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0" - nationalPrefix="0" - nationalPrefixForParsing="0|(1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))" - nationalPrefixFormattingRule="$NP$FG"> - <!-- When dialling mobile numbers from landlines, or vice versa, you need a prefix of 0, which - we strip here. National destinations may be dialled with a carrier if they are not local so - we extract these carrier codes as well. --> - <availableFormats> - <numberFormat pattern="(2)(\d{3})(\d{4})" - nationalPrefixFormattingRule="($FG)" - carrierCodeFormattingRule="$CC ($FG)"> - <leadingDigits>2</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2,3})(\d{4})" - nationalPrefixFormattingRule="($FG)" - carrierCodeFormattingRule="$CC ($FG)"> - <leadingDigits> - [357]| - 4[1-35]| - 6[13-57] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(9)([6-9]\d{3})(\d{4})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(44)(\d{3})(\d{4})"> - <leadingDigits>44</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="([68]00)(\d{3})(\d{3,4})"> - <leadingDigits> - 60| - 8 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(600)(\d{3})(\d{2})(\d{3})"> - <leadingDigits>60</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(1230)(\d{3})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - [2-9]| - 600| - 123 - )\d{7,8} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2| - 32| - 41 - )\d{7}| - (?: - 3[3-5]| - 4[235]| - 5[1-3578]| - 6[13-57]| - 7[1-35] - )\d{6,7} - </nationalNumberPattern> - <!-- Area codes do not need to be dialled when dialling within the same area, so the - smallest possible number is length 6. --> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9[6-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>961234567</exampleNumber> - </mobile> - <!-- Toll free and premium rate patterns have been collected by looking at numbers on the - internet, rather than from a definitive source. --> - <tollFree> - <!-- 1230 numbers are used by Visa/Mastercard helplines in Chile --> - <nationalNumberPattern> - 800\d{6}| - 1230\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9,11}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>600\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - <exampleNumber>6001234567</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>44\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>441234567</exampleNumber> - </voip> - </territory> - - <!-- Cameroon --> - <!-- http://www.itu.int/oth/T0202000024/en --> - <territory id="CM" countryCode="237" internationalPrefix="00"> - <availableFormats> - <!-- Formatting on the internet is consistently with the first 2 extracted, and usually in - the same format as France (all 2 digit groups) so we use this instead of the guidance - of the national numbering plan (which has 1 3 2 2 and 4 4 as its two formatting - examples.) --> - <numberFormat pattern="([237-9]\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits> - [2379]| - 88 - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(800)(\d{2})(\d{3})"> - <leadingDigits>80</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[237-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Technically, the numbers are required only to start with a 2 or a 3, but all numbers at - the moment start with 22 or 33 since they have been migrated from seven digit numbers - beginning with these numbers. This rule should be relaxed if/when we start getting - numbers beginning in other ways. --> - <nationalNumberPattern> - (?: - 22| - 33 - )\d{6} - </nationalNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[79]\d{7}</nationalNumberPattern> - <exampleNumber>71234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <!-- These numbers are listed as value-added in the guide, and in practice seem to begin - with 88 (usually 880). No information can be found as to whether these are premium rate - or shared cost. --> - <nationalNumberPattern>88\d{6}</nationalNumberPattern> - <exampleNumber>88012345</exampleNumber> - </premiumRate> - </territory> - - <!-- China --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200002B0001XLSE.xls --> - <territory id="CN" countryCode="86" internationalPrefix="00" - nationalPrefix="0"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(80\d{2})(\d{4})"> - <leadingDigits>80[2678]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([48]00)(\d{3})(\d{4})"> - <leadingDigits>[48]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Local numbers --> - <!-- Chinese fixed-line numbers can be dialed from a cell phone without area code and they - can be 7 to 8 digits. This rule is here to make formatting work with such numbers, as - people frequently store them in their cellphones. It has to stay before formatting - rules for fixed-line numbers to make AsYouTypeFormatter work with these numbers. The - leadingDigits prefix makes sure it doesn't clash with mobile numbers. --> - <numberFormat pattern="(\d{3,4})(\d{4})"> - <leadingDigits>[2-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(21)(\d{4})(\d{4,6})"> - <leadingDigits>21</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="([12]\d)(\d{4})(\d{4})"> - <leadingDigits> - 10[1-9]| - 2[02-9] - </leadingDigits> - <!-- Note the leadingDigitsPattern for 4 digits is the same as 3 digits, --> - <leadingDigits> - 10[1-9]| - 2[02-9] - </leadingDigits> - <leadingDigits> - 10(?: - [1-79]| - 8(?: - [1-9]| - 0[1-9] - ) - )| - 2[02-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(\d{3})(\d{4})(\d{4})"> - <leadingDigits> - 3(?: - 11| - 7[159] - )| - 4[135]1| - 5(?: - 1| - 2[37]| - 3[12]| - 7[13-79]| - 9[15] - )| - 7(?: - 31| - 5[457]| - 6[09] - )| - 898 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 3(?: - 1[02-9]| - 35| - 49| - 5| - 7[02-68]| - 9[1-68] - )| - 4(?: - 1[02-9]| - 2[179]| - [35][2-9]| - 6[4789]| - 7[0-46-9]| - 8[23] - )| - 5(?: - 3[03-9]| - 4[36]| - 5| - 6[1-6]| - 7[028]| - 80| - 9[2-46-9] - )| - 6(?: - 3[1-5]| - 6[0238]| - 9[12] - )| - 7(?: - 01| - [1579]| - 2[248]| - 3[04-9]| - 4[3-6]| - 6[2368] - )| - 8(?: - 1[236-8]| - 2[5-7]| - [37]| - 5[1-9]| - 8[3678]| - 9[1-7] - )| - 9(?: - 0[1-3689]| - 1[1-79]| - [379]| - 4[13]| - 5[1-5] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(1[3-58]\d)(\d{4})(\d{4})"> - <leadingDigits>1[3-58]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(10800)(\d{3})(\d{4})"> - <leadingDigits>108</leadingDigits> - <leadingDigits>1080</leadingDigits> - <leadingDigits>10800</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(21)(\d{4})(\d{4,6})"> - <leadingDigits>21</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="([12]\d)(\d{4})(\d{4})"> - <leadingDigits> - 10[1-9]| - 2[02-9] - </leadingDigits> - <!-- Note the leadingDigitsPattern for 4 digits is the same as 3 digits, --> - <leadingDigits> - 10[1-9]| - 2[02-9] - </leadingDigits> - <leadingDigits> - 10(?: - [1-79]| - 8(?: - [1-9]| - 0[1-9] - ) - )| - 2[02-9] - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(80\d{2})(\d{4})"> - <leadingDigits>80[2678]</leadingDigits> - <format>$1 $2</format> - </intlNumberFormat> - <intlNumberFormat - pattern="(\d{3})(\d{4})(\d{4})"> - <leadingDigits> - 3(?: - 11| - 7[159] - )| - 4[135]1| - 5(?: - 1| - 2[37]| - 3[12]| - 7[13-79]| - 9[15] - )| - 7(?: - 31| - 5[457]| - 6[09] - )| - 898 - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat - pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 3(?: - 1[02-9]| - 35| - 49| - 5| - 7[02-68]| - 9[1-68] - )| - 4(?: - 1[02-9]| - 2[179]| - [35][2-9]| - 6[4789]| - 7[0-46-9]| - 8[23] - )| - 5(?: - 3[03-9]| - 4[36]| - 5| - 6[1-6]| - 7[028]| - 80| - 9[2-46-9] - )| - 6(?: - 3[1-5]| - 6[0238]| - 9[12] - )| - 7(?: - 01| - [1579]| - 2[248]| - 3[04-9]| - 4[3-6]| - 6[2368] - )| - 8(?: - 1[236-8]| - 2[5-7]| - [37]| - 5[1-9]| - 8[3678]| - 9[1-7] - )| - 9(?: - 0[1-3689]| - 1[1-79]| - [379]| - 4[13]| - 5[1-5] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(1[3-58]\d)(\d{4})(\d{4})"> - <leadingDigits>1[3-58]</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="([48]00)(\d{3})(\d{4})"> - <leadingDigits>[48]00</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(10800)(\d{3})(\d{4})"> - <leadingDigits>108</leadingDigits> - <leadingDigits>1080</leadingDigits> - <leadingDigits>10800</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [1-79]\d{7,11}| - 8[0-357-9]\d{6,9} - </nationalNumberPattern> - <possibleNumberPattern>\d{4,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 21\d{8,10}| - (?: - 10| - 2[02-57-9]| - 3(?: - 11| - 7[159] - )| - 4[135]1| - 5(?: - 1\d| - 2[37]| - 3[12]| - 7[13-79]| - 9[15] - )| - 7(?: - 31| - 5[457]| - 6[09] - )| - 898 - )\d{8}| - (?: - 3(?: - 1[02-9]| - 35| - 49| - 5\d| - 7[02-68]| - 9[1-68] - )| - 4(?: - 1[02-9]| - 2[179]| - [35][2-9]| - 6[4789]| - 7[0-46-9]| - 8[23] - )| - 5(?: - 3[03-9]| - 4[36]| - 5\d| - 6[1-6]| - 7[028]| - 80| - 9[2-46-9] - )| - 6(?: - 3[1-5]| - 6[0238]| - 9[12] - )| - 7(?: - 01| - [1579]\d| - 2[248]| - 3[04-9]| - 4[3-6]| - 6[2368] - )| - 8(?: - 1[236-8]| - 2[5-7]| - [37]\d| - 5[1-9]| - 8[3678]| - 9[1-7] - )| - 9(?: - 0[1-3689]| - 1[1-79]| - [379]\d| - 4[13]| - 5[1-5] - ) - )\d{7}| - 80(?: - 29| - 6[03578]| - 7[018]| - 81 - )\d{4} - </nationalNumberPattern> - <exampleNumber>1012345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 1(?: - 3[0-9]| - 47| - 5[0135689]| - 8[05-9] - )\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>13123456789</exampleNumber> - </mobile> - <!-- Toll free, premium rate, and VoIP numbers are not clearly defined in the official Chinese - number plan, and do not seem to have been standardized. The information below is - collected from searching the web. --> - <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number --> - <tollFree> - <nationalNumberPattern> - (?: - 10 - )?800\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10,12}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>16[08]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>16812345</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>400\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>4001234567</exampleNumber> - </voip> - </territory> - - <!-- Colombia --> - <!-- http://www.itu.int/oth/T020200002C/en - http://en.wikipedia.org/wiki/Telephone_numbers_in_Colombia --> - <territory id="CO" countryCode="57" internationalPrefix="00[579]|#555|#999" - nationalPrefix="0" nationalPrefixForParsing="0([3579]|4(?:44|56))"> - <availableFormats> - <numberFormat pattern="(\d)(\d{7})" carrierCodeFormattingRule="$NP$CC $FG" - nationalPrefixFormattingRule="($FG)"> - <leadingDigits> - 1(?: - 8[2-9]| - 9[0-3]| - [2-7] - )| - [24-8] - </leadingDigits> - <leadingDigits> - 1(?: - 8[2-9]| - 9(?: - 09| - [1-3] - )| - [2-7] - )| - [24-8] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <intlNumberFormat pattern="(\d)(\d{7})"> - <leadingDigits> - 1(?: - 8[2-9]| - 9[0-3]| - [2-7] - )| - [24-8] - </leadingDigits> - <leadingDigits> - 1(?: - 8[2-9]| - 9(?: - 09| - [1-3] - )| - [2-7] - )| - [24-8] - </leadingDigits> - <format>$1 $2</format> - </intlNumberFormat> - <numberFormat pattern="(\d{3})(\d{7})" carrierCodeFormattingRule="$NP$CC $FG"> - <leadingDigits>3</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <intlNumberFormat pattern="(\d{3})(\d{7})"> - <leadingDigits>3</leadingDigits> - <format>$1 $2</format> - </intlNumberFormat> - <numberFormat pattern="(1)(\d{3})(\d{7})" nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits> - 1(?: - 80| - 9[04] - ) - </leadingDigits> - <leadingDigits> - 1(?: - 800| - 9(?: - 0[01]| - 4[78] - ) - ) - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <intlNumberFormat pattern="(1)(\d{3})(\d{7})"> - <leadingDigits> - 1(?: - 80| - 9[04] - ) - </leadingDigits> - <leadingDigits> - 1(?: - 800| - 9(?: - 0[01]| - 4[78] - ) - ) - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - [13]\d{0,3}| - [24-8] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[124-8][2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 3(?: - 0[0-24]| - 1[0-8]| - 2[01] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>3211234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>18001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 19(?: - 0[01]| - 4[78] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>19001234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Costa Rica --> - <!-- http://www.itu.int/oth/T0202000030/en --> - <territory id="CR" countryCode="506" internationalPrefix="00" - nationalPrefixForParsing="(1900)" carrierCodeFormattingRule="$CC $FG"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <leadingDigits> - [24]| - 8[3-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[89]0</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2489]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2[24-7]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 87[0-3] prefixes after numbers were found online where these prefixes have been - assigned. --> - <nationalNumberPattern> - 8(?: - [389]\d| - 7[0-3] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>83123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <!-- Includes "mass calls" numbers with prefix 905. --> - <nationalNumberPattern>90[059]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>4000\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>40001234</exampleNumber> - </voip> - <shortCode> - <!-- This pattern excludes 4-digit SMS content numbers for now. --> - <nationalNumberPattern> - 1(?: - 02[2-469]| - 1(?: - 1[0235-9]| - 2| - 37| - 46| - 75| - 8[79]| - 9[0-379] - )| - 212) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,4}</possibleNumberPattern> - <exampleNumber>1022</exampleNumber> - </shortCode> - </territory> - - <!-- Cuba --> - <!-- www.itu.int/oth/T0202000033/en --> - <territory id="CU" countryCode="53" internationalPrefix="119" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <numberFormat pattern="(\d)(\d{6,7})"> - <leadingDigits>7</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{4,6})"> - <leadingDigits>[2-4]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{7})" nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits>5</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-57]\d{5,7}</nationalNumberPattern> - <possibleNumberPattern>\d{4,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2[1-4]\d{5,6}| - 3(?: - 1\d{6}| - [23]\d{4,6})| - 4(?: - [125]\d{5,6}| - [36]\d{6}| - [78]\d{4,6})| - 7\d{6,7} - </nationalNumberPattern> - <exampleNumber>71234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>5\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>51234567</exampleNumber> - </mobile> - </territory> - - <!-- Cape Verde --> - <!-- http://www.itu.int/oth/T0202000026/en --> - <territory id="CV" countryCode="238" internationalPrefix="0"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{2})(\d{2})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[259]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2(?: - 2[1-7]| - 3[0-8]| - 4[12]| - 5[1256]| - 6\d| - 7[1-3]| - 8[1-5] - )\d{4} - </nationalNumberPattern> - <exampleNumber>2211234</exampleNumber> - </fixedLine> - <mobile> - <!-- It seems, contrary to their numbering plan, the entire 9X range is used for mobile - phones. SMS messages has been successfully sent to numbers starting with 95 and 97 for - example, and there are plenty of numbers on the internet that start with these - prefixes. --> - <nationalNumberPattern> - (?: - 9\d| - 59 - )\d{5} - </nationalNumberPattern> - <exampleNumber>9911234</exampleNumber> - </mobile> - </territory> - - <!-- Cyprus --> - <!-- http://www.itu.int/oth/T0202000034/en --> - <territory id="CY" countryCode="357" internationalPrefix="00"> - <availableFormats> - <!-- Format from http://www.cyprusyellowpages.com/--> - <numberFormat pattern="([27-9]\d)(\d{6})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[27-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2[2-6]\d{6}</nationalNumberPattern> - <exampleNumber>22345678</exampleNumber> - </fixedLine> - <mobile> - <!-- Universal Access Service numbers (7777 xxxx) are included here, as they are classified - as Mobile in the Cyprus national numbering plan. --> - <nationalNumberPattern> - 7777\d{4}| - 9(?: - [69]\d| - 7[67] - )\d{5} - </nationalNumberPattern> - <exampleNumber>96123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>8000\d{4}</nationalNumberPattern> - <exampleNumber>80001234</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>9009\d{4}</nationalNumberPattern> - <exampleNumber>90091234</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>700\d{5}</nationalNumberPattern> - <exampleNumber>70012345</exampleNumber> - </personalNumber> - </territory> - - <!-- Czech Rep. --> - <!-- http://www.itu.int/oth/T0202000035/en --> - <!-- http://en.wikipedia.org/wiki/%2B420 --> - <territory id="CZ" countryCode="420" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([2-9]\d{2})(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2\d{8}| - (?: - 3[1257-9]| - 4[16-9]| - 5[13-9] - )\d{7} - </nationalNumberPattern> - <exampleNumber>212345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 60[1-8]\d{6}| - 7[2379]\d{7} - </nationalNumberPattern> - <exampleNumber>601123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[0689]\d{6}</nationalNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>8[134]\d{7}</nationalNumberPattern> - <exampleNumber>811234567</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>70[01]\d{6}</nationalNumberPattern> - <exampleNumber>700123456</exampleNumber> - </personalNumber> - </territory> - - <!-- Germany --> - <!-- http://www.itu.int/oth/T0202000051/en --> - <territory id="DE" countryCode="49" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4,11})"> - <leadingDigits> - 3[02]| - 40| - [68]9 - </leadingDigits> - <format>$1/$2</format> - </numberFormat> - <!-- The order of the rules on 3-5 digits area code matter as fallback is used here. --> - <!-- 3 digit area codes. --> - <numberFormat pattern="(\d{3})(\d{3,10})"> - <leadingDigits> - 2(?: - \d1| - 0[2389]| - 1[24]| - 28| - 34 - )| - 3(?: - [3-9][15]| - 40 - )| - [4-8][1-9]1| - 9(?: - 06| - [1-9]1 - ) - </leadingDigits> - <format>$1/$2</format> - </numberFormat> - <!-- 4 digit area codes. --> - <numberFormat pattern="(\d{4})(\d{2,8})"> - <leadingDigits> - [24-6]| - [7-9](?: - \d[1-9]| - [1-9]\d - )| - 3(?: - [3569][02-46-9]| - 4[2-4679]| - 7[2-467]| - 8[2-46-8] - ) - </leadingDigits> - <leadingDigits> - [24-6]| - [7-9](?: - \d[1-9]| - [1-9]\d - )| - 3(?: - 3(?: - 0[1-467]| - 2[127-9]| - 3[124578]| - [46][1246]| - 7[1257-9]| - 8[1256]| - 9[145] - )| - 4(?: - 2[135]| - 3[1357]| - 4[13578]| - 6[1246]| - 7[1356]| - 9[1346] - )| - 5(?: - 0[14]| - 2[1-3589]| - 3[1357]| - 4[1246]| - 6[1-4]| - 7[1346]| - 8[13568]| - 9[1246] - )| - 6(?: - 0[356]| - 2[1-489]| - 3[124-6]| - 4[1347]| - 6[13]| - 7[12579]| - 8[1-356]| - 9[135] - )| - 7(?: - 2[1-7]| - 3[1357]| - 4[145]| - 6[1-5]| - 7[1-4] - )| - 8(?: - 21| - 3[1468]| - 4[1347]| - 6[0135-9]| - 7[1467]| - 8[136] - )| - 9(?: - 0[12479]| - 2[1358]| - 3[1357]| - 4[134679]| - 6[1-9]| - 7[136]| - 8[147]| - 9[1468] - ) - ) - </leadingDigits> - <format>$1/$2</format> - </numberFormat> - <!-- 5 digit area codes. --> - <numberFormat pattern="(\d{5})(\d{1,6})"> - <leadingDigits>3</leadingDigits> - <format>$1/$2</format> - </numberFormat> - <!-- http://www.t-mobile.de/servicehotlines/0,13401,17660-_,00.html --> - <numberFormat pattern="([18]\d{2})(\d{7,9})"> - <leadingDigits> - 1[5-7]| - 800 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d)(\d{4,10})"> - <leadingDigits> - (?: - 18| - 90 - )0 - </leadingDigits> - <leadingDigits> - 180| - 900[1359] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(700)(\d{4})(\d{4})"> - <leadingDigits>700</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <!-- When deciding whether to assume a leading 49 is a country code or not, the number is - examined to see if it is valid with the 49 as part of the number. Due to the variable - length of German numbers, this test is hard to do. The national pattern is hence - stricter for numbers starting with 49, to try and remove the country code if the number - begins with 49 whenever possible. --> - <nationalNumberPattern> - [1-35-9]\d{3,13}| - 4(?: - [0-8]\d{4,12}| - 9(?: - 4[1-8]| - [0-35-7]\d - )\d{2,7} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{2,14}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- The numbering plan defines rather optimistic longest-number limits - online numbers - don't seem to respect this. The max-length is hence extended. --> - <nationalNumberPattern> - [246]\d{5,13}| - 3(?: - [03-9]\d{4,11}| - 2\d{9} - )| - 5(?: - 0[2-8]| - [38][0-8]| - [124-6]\d| - [79][0-7] - )\d{3,10}| - 7(?: - 0[2-8]| - [1-9]\d - )\d{3,10}| - 8(?: - 0[2-9]| - [1-9]\d - )\d{3,10}| - 9(?: - 0[6-9]| - [1-9]\d - )\d{3,10} - </nationalNumberPattern> - <exampleNumber>30123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Note: 8 digit numbers seem to be available for prefix 176 now, - although no official documentation can be found, according to user - bug-reports. --> - <nationalNumberPattern> - 1(?: - 5\d{9}| - 7(?: - [0-57-9]| - 6\d - )\d{7}| - 6(?: - [02]\d{7,8}| - 3\d{7} - ) - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - <exampleNumber>15123456789</exampleNumber> - </mobile> - <pager> - <nationalNumberPattern> - 16(?: - 4\d{1,10}| - [89]\d{1,11} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{4,14}</possibleNumberPattern> - <exampleNumber>16412345</exampleNumber> - </pager> - <tollFree> - <nationalNumberPattern>800\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{10,12}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 900(?: - [135]\d{6}| - 9\d{7} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - <sharedCost> - <!-- See bug 1683119 for a discussion about maximum number lengths. --> - <nationalNumberPattern>180\d{5,11}</nationalNumberPattern> - <possibleNumberPattern>\d{8,14}</possibleNumberPattern> - <exampleNumber>18012345</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>700\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>70012345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Djibouti --> - <!-- http://www.itu.int/oth/T020200003A/en --> - <territory id="DJ" countryCode="253" internationalPrefix="00"> - <availableFormats> - <!-- The number format here is suggested in the plan and used online, - although the phone numbers of the national numbering authority itself on - the plan do not follow this. --> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-8]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Includes "Numéro long CDMA fixe" numbers starting with the digit 5. --> - <nationalNumberPattern> - (?: - 1[05]| - [2-5]\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>251234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[6-8]\d{5}</nationalNumberPattern> - <exampleNumber>601234</exampleNumber> - </mobile> - </territory> - - <!-- Denmark --> - <!-- http://en.itst.dk/telecom-internet-regulation/numbering-issues/numbering-lists --> - <territory id="DK" countryCode="45" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([1-9]\d)(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3[2-9]| - 4[3-9]| - 5[4-9]| - 6[2-9]| - 7[02-9]| - 8[26-9]| - 9[6-9] - )\d{6} - </nationalNumberPattern> - <exampleNumber>32123456</exampleNumber> - </fixedLine> - <mobile> - <!-- There are some overlaps for some number prefixes - the plan says that they are 'mainly' - used for a certain type of number. --> - <nationalNumberPattern> - (?: - 2[0-9]| - 3[0-2]| - 4[0-2]| - 5[0-3]| - 6[01]| - 7[12]| - 81| - 99 - )\d{6} - </nationalNumberPattern> - <exampleNumber>20123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{6}</nationalNumberPattern> - <exampleNumber>80123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d{6}</nationalNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Dominica --> - <!-- http://www.itu.int/oth/T020200003B/en --> - <territory id="DM" countryCode="1" leadingDigits="767" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[57-9]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 767(?: - 2(?: - 55| - 66 - )| - 4(?: - 2[01]| - 4[0-25-9] - )| - 50[0-4] - )\d{4} - </nationalNumberPattern> - <exampleNumber>7674201234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 767(?: - 2(?: - [2346]5| - 7[5-7] - )| - 31[5-7]| - 61[4-6] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7672251234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Dominican Rep. --> - <!-- http://www.itu.int/oth/T020200003C/en --> - <territory id="DO" countryCode="1" leadingDigits="8[024]9" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- We could be more detailed here, as the metadata contains information about some of the - mobile/fixed-line prefixes, but the data is incomplete, so we restrict ourselves to a - more generic rule for now. --> - <nationalNumberPattern>8[024]9[2-9]\d{6}</nationalNumberPattern> - <exampleNumber>8092345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>8[024]9[2-9]\d{6}</nationalNumberPattern> - <exampleNumber>8092345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Algeria --> - <!-- http://www.itu.int/oth/T0202000003/en --> - <!-- www.arpt.dz --> - <territory id="DZ" countryCode="213" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Formatting from www.pagesjaunes-dz.com. --> - <numberFormat pattern="([1-4]\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[1-4]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([5-8]\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[5-8]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(9\d)(\d{3})(\d{2})(\d{2})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - [1-4]| - [5-9]\d - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- We include the VSAT lines here. --> - <nationalNumberPattern> - (?: - 1\d| - 2[014-79]| - 3[0-8]| - 4[0135689] - )\d{6}| - 9619\d{5} - </nationalNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 5[56]| - 6[69]| - 7[79] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>551234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>80[3-689]1\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>808123456</exampleNumber> - </premiumRate> - <!-- The Algerian plan doesn't specify where the costs start to be considered "premium", so we - draw an arbitrary line here and say that from 50 Da up they will be considered premium. - --> - <sharedCost> - <nationalNumberPattern>80[12]1\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>801123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>98[23]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>983123456</exampleNumber> - </voip> - </territory> - - <!-- Ecuador --> - <!-- http://en.wikipedia.org/wiki/+593 --> - <!-- http://www.conatel.gov.ec --> - <!-- http://www.itu.int/oth/T020200003D/en --> - <!-- A new plan has been prepared, but no implementation date has yet been stated. --> - <territory id="EC" countryCode="593" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <numberFormat pattern="(\d)(\d{3})(\d{4})"> - <leadingDigits>[2-7]</leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <intlNumberFormat pattern="(\d)(\d{3})(\d{4})"> - <leadingDigits>[2-7]</leadingDigits> - <format>$1-$2-$3</format> - </intlNumberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{3})" - nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(\d{2})(\d{3})(\d{3})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <numberFormat pattern="(1800)(\d{3})(\d{3,4})" - nationalPrefixFormattingRule="$FG"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(1800)(\d{3})(\d{3,4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{7}|1\d{9,10}</nationalNumberPattern> - <possibleNumberPattern>\d{7,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2-7][2-7]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[89]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>99123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1800\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - <exampleNumber>18001234567</exampleNumber> - </tollFree> - </territory> - - <!-- Estonia --> - <!-- http://www.itu.int/oth/T0202000043/en --> - <!-- http://www.tja.ee/public/Legislation_side/Numbering_/Estonian_NP_eng.htm --> - <territory id="EE" countryCode="372" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([34-79]\d{2})(\d{4})"> - <leadingDigits> - [369]| - 4[3-8]| - 5(?: - [0-2]| - 5[0-478]| - 6[45] - )| - 7[1-9] - </leadingDigits> - <leadingDigits> - [369]| - 4[3-8]| - 5(?: - [02]| - 1(?: - [0-8]| - 95 - )| - 5[0-478]| - 6(?: - 4[0-4]| - 5[1-589] - ) - )| - 7[1-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(70)(\d{2})(\d{4})"> - <leadingDigits>70</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(8000)(\d{3})(\d{3})"> - <leadingDigits>800</leadingDigits> - <leadingDigits>8000</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([458]\d{3})(\d{3,4})"> - <leadingDigits> - 40| - 5| - 8(?: - 00| - [1-5] - ) - </leadingDigits> - <leadingDigits> - 40| - 5| - 8(?: - 00[1-9]| - [1-5] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [3-9]\d{6,7}| - 800\d{6,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <noInternationalDialling> - <nationalNumberPattern>800[2-9]\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>8002123</exampleNumber> - </noInternationalDialling> - <fixedLine> - <!-- Supporting eFax numbers here as well. --> - <nationalNumberPattern> - (?: - 3[23589]| - 4(?: - 0\d| - [3-8] - )| - 6\d| - 7[1-9]| - 88 - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>3212345</exampleNumber> - </fixedLine> - <mobile> - <!-- 7 digit mobile numbers currently in use with special prefixes are preserved - new - numbers are 8 digits. --> - <nationalNumberPattern> - (?: - 5\d| - 8[1-5] - )\d{6}| - 5(?: - [02]\d{2}| - 1(?: - [0-8]\d| - 95 - )| - 5[0-478]\d| - 64[0-4]| - 65[1-589] - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>51234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 800(?: - 0\d{3}| - 1\d| - [2-9] - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>9001234</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>70[0-2]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>70012345</exampleNumber> - </personalNumber> - <shortCode> - <nationalNumberPattern>1[1-9]\d</nationalNumberPattern> - <possibleNumberPattern>\d{3}</possibleNumberPattern> - <exampleNumber>112</exampleNumber> - </shortCode> - </territory> - - <!-- Egypt --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200003E0001MSWE.doc --> - <territory id="EG" countryCode="20" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Note that no explicit formatting rule is here for 5-digit numbers starting with a 16 - or 19. These are formatted without national prefix, as a block, so do not need to be - listed here. --> - <numberFormat pattern="(\d)(\d{7,8})"> - <leadingDigits>[23]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{7})"> - <leadingDigits> - [14-6]| - [89][2-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([89]00)(\d{3})(\d{4})"> - <leadingDigits>[89]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - 1\d{4,9}| - [2-689]\d{7,9} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Short numbers used for businesses (starting with 16 or 19) are covered here. --> - <nationalNumberPattern> - (?: - 1[35][23]| - 2[23]\d| - 3\d| - 4(?: - 0[2-4]| - [578][23]| - 64 - )| - 5(?: - 0[234]| - [57][23] - )| - 6[24-689]3| - 8(?: - [28][2-4]| - 42| - 6[23] - )| - 9(?: - [25]2| - 3[24]| - 6[23]| - 7[2-4] - ) - )\d{6}| - 1[69]\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - <exampleNumber>234567890</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>1[0-246-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>101234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Eritrea --> - <!-- http://www.itu.int/oth/T0202000042/en --> - <territory id="ER" countryCode="291" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d)(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[178]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{6,7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 1(?: - 1[12568]| - 20| - 40| - 55| - 6[146] - )\d{4}| - 8\d{6} - </nationalNumberPattern> - <exampleNumber>8370362</exampleNumber><!-- Test number from plan. --> - </fixedLine> - <mobile> - <!-- It is unclear in the plan whether the 07 mobile prefix superseded the previous 017[1-3] - numbers or was in addition to them, so we support both here. --> - <nationalNumberPattern> - 17[1-3]\d{4}| - 7\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>7123456</exampleNumber> - </mobile> - </territory> - - <!-- Spain --> - <!-- http://www.mityc.es/telecomunicaciones/es-ES/Servicios/Numeracion/Paginas/Plan.aspx --> - <territory id="ES" countryCode="34" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([5-9]\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[5-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[89][1-8]\d{7}</nationalNumberPattern> - <exampleNumber>812345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6\d{8}</nationalNumberPattern> - <exampleNumber>612345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>[89]00\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>80[367]\d{6}</nationalNumberPattern> - <exampleNumber>803123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>90[12]\d{6}</nationalNumberPattern> - <exampleNumber>901123456</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>70\d{7}</nationalNumberPattern> - <exampleNumber>701234567</exampleNumber> - </personalNumber> - <!-- Modelling non-geographic nomadic numbers as UAN. --> - <uan> - <nationalNumberPattern>51\d{7}</nationalNumberPattern> - <exampleNumber>511234567</exampleNumber> - </uan> - </territory> - - <!-- Ethiopia --> - <!-- http://www.itu.int/oth/T0202000044/en --> - <territory id="ET" countryCode="251" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([1-59]\d)(\d{3})(\d{4})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-59]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 11(?: - 1(?: - 1[124]| - 2[2-57]| - 3[1-5]| - 5[5-8]| - 8[6-8] - )| - 2(?: - 13| - 3[6-8]| - 5[89]| - 7[05-9]| - 8[2-6] - )| - 3(?: - 2[01]| - 3[0-289]| - 4[1289]| - 7[1-4]| - 87 - )| - 4(?: - 1[69]| - 3[2-49]| - 4[0-23]| - 6[5-8] - )| - 5(?: - 1[57]| - 44| - 5[0-4] - )| - 6(?: - 18| - 2[69]| - 4[5-7]| - 5[1-5]| - 6[0-59]| - 8[015-8] - ) - )| - 2(?: - 2(?: - 11[1-9]| - 22[0-7]| - 33\d| - 44[1467]| - 66[1-68] - )| - 5(?: - 11[124-6]| - 33[2-8]| - 44[1467]| - 55[14]| - 66[1-3679]| - 77[124-79]| - 880 - ) - )| - 3(?: - 3(?: - 11[0-46-8]| - 22[0-6]| - 33[0134689]| - 44[04]| - 55[0-6]| - 66[01467] - )| - 4(?: - 44[0-8]| - 55[0-69]| - 66[0-3]| - 77[1-5] - ) - )| - 4(?: - 6(?: - 22[0-24-7]| - 33[1-5]| - 44[13-69]| - 55[14-689]| - 660| - 88[1-4] - )| - 7(?: - 11[1-9]| - 22[1-9]| - 33[13-7]| - 44[13-6]| - 55[1-689] - ) - )| - 5(?: - 7(?: - 227| - 55[05]| - (?: - 66| - 77 - )[14-8] - )| - 8(?: - 11[149]| - 22[013-79]| - 33[0-68]| - 44[013-8]| - 550| - 66[1-5]| - 77\d - ) - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>111112345</exampleNumber> - </fixedLine> - <mobile> - <!-- The data here is not regularly updated by the Ethiopian authorities, and many more - numbers are visible online than are reported in the ITU document. This pattern is - therefore somewhat more relaxed than in the ITU document. --> - <nationalNumberPattern>91[0-8]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>911234567</exampleNumber> - </mobile> - </territory> - - <!-- Finland --> - <!-- http://www.ficora.fi/en/index/palvelut/palvelutaiheittain/numerointi/numerotyypitjaalueet.html --> - <territory id="FI" countryCode="358" internationalPrefix="00|99[049]" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4,10})"> - <leadingDigits> - 2[09]| - [14]| - 50| - 7[135] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{4,11})"> - <leadingDigits> - [25689][1-8]| - 3 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([6-8]00)(\d{4,7})"> - <leadingDigits>[6-8]0</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - 1\d{4,11}| - [2-9]\d{4,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- This is limited to geographic numbers - non-geographic nationwide - subscriber numbers are listed under UAN. --> - <nationalNumberPattern> - 1(?: - [35689][1-8]\d{3,9}| - [47]\d{5,10} - )| - 2[1-8]\d{3,9}| - 3(?: - [1-8]\d{3,9}| - 9\d{4,8} - )| - [5689][1-8]\d{3,9}| - </nationalNumberPattern> - <exampleNumber>1312345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 4\d{5,10}| - 50\d{4,8} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,11}</possibleNumberPattern> - <exampleNumber>412345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{4,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>[67]00\d{5,6}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>600123456</exampleNumber> - </premiumRate> - <uan> - <nationalNumberPattern> - 10[1-9]\d{3,7}| - 2(?: - 0(?: - [16-8]\d{3,7}| - 2[14-9]\d{1,6}| - [3-5]\d{2,7}| - 9[0-7]\d{1,6} - )| - 9\d{4,8} - )| - 30[1-9]\d{3,7}| - 7(?: - 1\d{7}| - 3\d{8}| - 5[03-9]\d{2,7} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - <exampleNumber>10112345</exampleNumber> - </uan> - </territory> - - <!-- Fiji --> - <!-- http://www.itu.int/oth/T0202000048/en --> - <!-- www.tfl.com.fj --> - <territory id="FJ" countryCode="679" internationalPrefix="0(?:0|52)" - preferredInternationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[36-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{3})(\d{4})"> - <leadingDigits>0</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [36-9]\d{6}| - 0\d{10} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Adding the prefixes 30X, 31X and 62X, since numbers with these prefixes have been found - online, including in the white pages. 35X and 85X were found in the exchanges listed on - www.tfl.com.fj. --> - <nationalNumberPattern> - (?: - 3[0-5]| - 6[25-7]| - 8[58] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>3212345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 7[0-4]| - 9[29] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>7012345</exampleNumber> - </mobile> - <tollFree> - <!-- Information found on www.tfl.com.fj. It is not clear if these are internationally - diallable, or if so, how. --> - <nationalNumberPattern>0800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>08001234567</exampleNumber> - </tollFree> - <shortCode> - <!-- From the Emergency Numbers page on the Telecom Fiji website. --> - <nationalNumberPattern> - 0(?: - 04| - 1[34]| - 8[1-4] - )| - 1(?: - 0[1-3]| - [25]9 - )| - 2[289]| - 30| - [45]4| - 75| - 91[137] - </nationalNumberPattern> - <possibleNumberPattern>\d{2,3}</possibleNumberPattern> - <exampleNumber>22</exampleNumber> - </shortCode> - </territory> - - <!-- Falkland Islands (Malvinas) --> - <!-- http://www.itu.int/oth/T0202000046/en --> - <territory id="FK" countryCode="500" internationalPrefix="00"> - <!-- All numbers are formatted together, as a block. --> - <generalDesc> - <nationalNumberPattern>[2-7]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{5}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2-47]\d{4}</nationalNumberPattern> - <exampleNumber>31234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[56]\d{4}</nationalNumberPattern> - <exampleNumber>51234</exampleNumber> - </mobile> - <shortCode> - <!-- Service numbers use 3 digit short codes --> - <nationalNumberPattern> - 1\d{2}| - 999 - </nationalNumberPattern> - <exampleNumber>123</exampleNumber> - </shortCode> - </territory> - - <!-- Micronesia, Federated States of --> - <!-- http://www.itu.int/oth/T020200008B/en --> - <territory id="FM" countryCode="691" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[39]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 3[2357]0[1-9]\d{3}| - 9[2-6]\d{5} - </nationalNumberPattern> - <exampleNumber>3201234</exampleNumber> - </fixedLine> - <mobile> - <!-- Note that most ranges are used for both fixed and mobile but numbers starting with 970 - are exclusively mobile. --> - <nationalNumberPattern> - 3[2357]0[1-9]\d{3}| - 9[2-7]\d{5} - </nationalNumberPattern> - <exampleNumber>3501234</exampleNumber> - </mobile> - </territory> - - <!-- Faroe Islands --> - <!-- http://www.itu.int/oth/T0202000047/en --> - <territory id="FO" countryCode="298" internationalPrefix="00" - nationalPrefixForParsing="(10(?:01|[12]0|88))" - carrierCodeFormattingRule="$CC $FG"> - <!-- All numbers are formatted together, as a block. --> - <availableFormats> - <numberFormat pattern="(\d{6})"> - <format>$1</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 20| - [3-4]\d| - 8[19] - )\d{4} - </nationalNumberPattern> - <exampleNumber>201234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 2[1-9]| - 5\d| - 7[1-79] - )\d{4} - </nationalNumberPattern> - <exampleNumber>211234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80[257-9]\d{3}</nationalNumberPattern> - <exampleNumber>802123</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 90(?: - [1345][15-7]| - 2[125-7]| - 99 - )\d{2} - </nationalNumberPattern> - <exampleNumber>901123</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern> - (?: - 6[0-36]| - 88 - )\d{4} - </nationalNumberPattern> - <exampleNumber>601234</exampleNumber> - </voip> - <shortCode> - <!-- Includes special numbers, special services and universal services. --> - <nationalNumberPattern> - 1(?: - 1[248]| - 4[124]\d| - 71\d| - 8[7-9]\d - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,4}</possibleNumberPattern> - <exampleNumber>211234</exampleNumber> - </shortCode> - </territory> - - <!-- France --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200004A0001MSWE.doc --> - <!-- http://www.arcep.fr/index.php?id=8146 --> - <!-- http://en.wikipedia.org/wiki/%2B33 --> - <territory id="FR" countryCode="33" internationalPrefix="[04579]0" - preferredInternationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([1-79])(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[1-79]</leadingDigits> - <format>$1 $2 $3 $4 $5</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP $FG" - pattern="(8\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[1-5]\d{8}</nationalNumberPattern> - <exampleNumber>123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 6\d{8}| - 7[5-9]\d{7} - </nationalNumberPattern> - <exampleNumber>612345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>89[1-37-9]\d{6}</nationalNumberPattern> - <exampleNumber>891123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 8(?: - 1[019]| - 2[0156]| - 84| - 90 - )\d{6} - </nationalNumberPattern> - <exampleNumber>810123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>9\d{8}</nationalNumberPattern> - <exampleNumber>912345678</exampleNumber> - </voip> - </territory> - - <!-- Gabon --> - <!-- http://www.itu.int/oth/T020200004E/en --> - <territory id="GA" countryCode="241" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[4-9]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(0\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits>0</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [4-9]\d{5}| - 0\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 4(?: - [04-8]\d| - 2[04] - )| - (?: - 5[04-689]| - 6[024-9]| - 7\d| - 8[236]| - 9[02368] - )\d - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>441234</exampleNumber> - </fixedLine> - <!-- The leading zero here is supposed to be temporary - at a later date, - Gabon intends to have a 0 as their national prefix for all numbers - instead. --> - <!-- http://www.wtng.info/wtng-241-ga.html was used as the basis for the acceptable prefixes, - with some supplementary prefixes added from internet research. There is supposedly a - resource on mobile prefixes on the Gabon Telecom website, but the site (www.ogooue.ga) - doesn't seem to work and no alternative can be found. Extra prefixes added: 07 12, 07 13, - 06 71, 07 33, 07 [67]\d --> - <mobile> - <nationalNumberPattern> - 0(?: - 5(?: - 0[89]| - 3[0-4]| - 8[0-26]| - 9[238] - )| - 6(?: - 0[3-7]| - 1[01]| - 2[0-7]| - 6[0-589]| - 71| - 83| - 9[57] - )| - 7(?: - 1[2-5]| - 2[89]| - 3[35-9]| - 4[01]| - 5[0-347-9]| - [67]\d| - 8[457-9]| - 9[0146] - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>06031234</exampleNumber> - </mobile> - </territory> - - <!-- United Kingdom --> - <!-- http://stakeholders.ofcom.org.uk/telecoms/numbering/ --> - <!-- http://en.wikipedia.org/wiki/List_of_United_Kingdom_dialling_codes --> - <!-- http://www.numberingplans.com/?page=dialling&sub=areacodes&ac=GB --> - <!-- Note that this excludes Isle of Man, Jersey and Guernsey prefixes for the purposes of - validation, although the formatting rules are shared. --> - <territory id="GB" countryCode="44" internationalPrefix="00" - nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG" - mainCountryForCode="true"> - <availableFormats> - <!-- 2d, 55, 56, 70, 76 with 10 digits. --> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits> - 2| - 5[56]| - 7[06] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 11d, 1d1, 3dd, 9dd with 10 digits. --> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 1(?: - 1| - \d1 - )| - 3| - 9[018] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 1dddd with 9 or 10 digits. - These area codes are very rare in GB, and are only available in the following places: - 13873(Langholm), 15242(Hornby), 15394(Hawkshead), 15395(Grange-over-Sands), - 15396(Sedbergh), 16973(Wigton), 16974(Raughton Head), 16977(Brampton), - 17683(Appleby), 17684(Pooley Bridge), 17687(Keswick), 19467(Gosforth). --> - <numberFormat pattern="(\d{5})(\d{4,5})"> - <leadingDigits> - 1(?: - 38| - 5[23]| - 69| - 76| - 94 - ) - </leadingDigits> - <leadingDigits> - 1(?: - 387| - 5(?: - 24| - 39 - )| - 697| - 768| - 946 - ) - </leadingDigits> - <leadingDigits> - 1(?: - 3873| - 5(?: - 242| - 39[456] - )| - 697[347]| - 768[347]| - 9467 - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- 1ddd with 9 or 10 digits. --> - <numberFormat pattern="(1\d{3})(\d{5,6})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- 7ddd (not 70, 76) with 10 digits. --> - <numberFormat pattern="(7\d{3})(\d{6})"> - <leadingDigits>7[1-5789]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- 800 1111 : UK ChildLine. --> - <numberFormat pattern="(800)(\d{4})"> - <leadingDigits>800</leadingDigits> - <leadingDigits>8001</leadingDigits> - <leadingDigits>80011</leadingDigits> - <leadingDigits>800111</leadingDigits> - <leadingDigits>8001111</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- 845 46 47 : UK NHS Direct. --> - <numberFormat pattern="(845)(46)(4\d)"> - <leadingDigits>845</leadingDigits> - <leadingDigits>8454</leadingDigits> - <leadingDigits>84546</leadingDigits> - <leadingDigits>845464</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 84d, 87d with 10 digits. --> - <numberFormat pattern="(8\d{2})(\d{3})(\d{4})"> - <leadingDigits> - 8(?: - 4[2-5]| - 7[0-3] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 80d (including 800) with 10 digits. --> - <numberFormat pattern="(80\d)(\d{3})(\d{4})"> - <leadingDigits>80</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 500, 800 with 9 digits. --> - <numberFormat pattern="([58]00)(\d{6})"> - <leadingDigits>[58]00</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{7,10}</nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - </generalDesc> - <areaCodeOptional> - <!-- These are a subset of the fixed-line rules, with digits 2-9 as the leading digit of the - subscriber number. There are patterns for 2+8, 3+7 and a combined pattern for all - 4+6/4+5 and 5+5/5+4 numbers. Note that numbers matching this pattern are not - necessarily valid numbers. --> - <nationalNumberPattern> - 2\d[2-9]\d{7}| - 1(?: - 1\d| - \d1 - )[2-9]\d{6}| - 1(?: - [248][02-9]\d[2-9]\d{4,5}| - (?: - 3(?: - [02-79]\d| - 8[0-69] - )| - 5(?: - [04-9]\d| - 2[0-35-9]| - 3[0-8] - )| - 6(?: - [02-8]\d| - 9[0-689] - )| - 7(?: - [02-5789]\d| - 6[0-79] - )| - 9(?: - [0235-9]\d| - 4[0-5789] - ) - )[2-9]\d{4,5}| - (?: - 387(?: - 3[2-9]| - [24-9]\d - )| - 5(?: - 24(?: - 2[2-9]| - [3-9]\d - )| - 39(?: - [4-6][2-9]| - [237-9]\d - ) - )| - 697(?: - [347][2-9]| - [25689]\d - )| - 768(?: - [347][2-9]| - [25679]\d - )| - 946(?: - 7[2-9]| - [2-689]\d - ) - )\d{3,4} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>1332456789</exampleNumber> - </areaCodeOptional> - <fixedLine> - <!-- http://en.wikipedia.org/wiki/List_of_United_Kingdom_dialling_codes --> - <!-- Pattern matches geographic NSN=10 numbers as follows: - - area code and local number first digit for 2+8, - - area code and local number first digit for 3+7, - - area code only for 4+6 (including areas with embedded 5+5). - Pattern matches geographic NSN=9 numbers as follows: - - area code and local number first two digits for 4+5, - - area code and local number first three digits for 4+5 special case (01768) 88Ddd, - - area code and local number first digit for 5+4 special case (016977) Dddd. - All patterns exclude ranges used in GG, IM, JE. --> - <nationalNumberPattern> - 2(?: - 0[01378]| - 3[0189]| - 4[017]| - 8[0-46-9]| - 9[012] - )\d{7}| - 1(?: - (?:1 - (?:3[0-48]| - [46][0-4]| - 5[012789]| - 7[0-39]| - 8[01349] - )| - 21[0-7]| - 31[0-8]| - [459]1\d| - 61[0-46-9] - ) - )\d{6}| - 1(?: - 2(?: - 0[024-9]| - 2[3-9]| - 3[3-79]| - 4[1-689]| - [58][02-9]| - 6[0-4789]| - 7[013-9]| - 9\d - )| - 3(?: - 0\d| - [25][02-9]| - 3[02-579]| - [468][0-46-9]| - 7[1235679]| - 9[24578] - )| - 4(?: - 0[03-9]| - [28][02-5789]| - [37]\d| - 4[02-69]| - 5[0-8]| - [69][0-79] - )| - 5(?: - 0[1235-9]| - 2[024-9]| - 3[015689]| - 4[02-9]| - 5[03-9]| - 6\d| - 7[0-35-9]| - 8[0-468]| - 9[0-5789] - )| - 6(?: - 0[034689]| - 2[0-35689]| - [38][013-9]| - 4[1-467]| - 5[0-69]| - 6[13-9]| - 7[0-8]| - 9[0124578] - )| - 7(?: - 0[0246-9]| - 2\d| - 3[023678]| - 4[03-9]| - 5[0-46-9]| - 6[013-9]| - 7[0-35-9]| - 8[024-9]| - 9[02-9] - )| - 8(?: - 0[35-9]| - 2[1-5789]| - 3[02-578]| - 4[0-578]| - 5[124-9]| - 6[2-69]| - 7\d| - 8[02-9]| - 9[02569] - )| - 9(?: - 0[02-589]| - 2[02-689]| - 3[1-5789]| - 4[2-9]| - 5[0-579]| - 6[234789]| - 7[0124578]| - 8\d| - 9[2-57] - ) - )\d{6}| - 1(?: - 2(?: - 0(?: - 46[1-4]| - 87[2-9] - )| - 545[1-79]| - 76(?: - 2\d| - 3[1-8]| - 6[1-6] - )| - 9(?: - 7(?: - 2[0-4]| - 3[2-5] - )| - 8(?: - 2[2-8]| - 7[0-4789]| - 8[345] - ) - ) - )| - 3(?: - 638[2-5]| - 647[23]| - 8(?: - 47[04-9]| - 64[015789] - ) - )| - 4(?: - 044[1-7]| - 20(?: - 2[23]| - 8\d - )| - 6(?: - 0(?: - 30| - 5[2-57]| - 6[1-8]| - 7[2-8] - )| - 140 - )| - 8(?: - 052| - 87[123] - ) - )| - 5(?: - 24(?: - 3[2-79]| - 6\d - )| - 276\d| - 6(?: - 26[06-9]| - 686 - ) - )| - 6(?: - 06(?: - 4\d| - 7[4-79] - )| - 295[567]| - 35[34]\d| - 47(?: - 24| - 61 - )| - 59(?: - 5[08]| - 6[67]| - 74 - )| - 955[0-4] - )| - 7(?: - 26(?: - 6[13-9]| - 7[0-7] - )| - 442\d| - 50(?: - 2[0-3]| - [3-68]2| - 76 - ) - )| - 8(?: - 27[56]\d| - 37(?: - 5[2-5]| - 8[239] - )| - 84(?: - 3[2-58] - ) - )| - 9(?: - 0(?: - 0(?: - 6[1-8]| - 85 - )| - 52\d - )| - 3583| - 4(?: - 66[1-8]| - 9(?: - 2[01]| - 81 - ) - )| - 63(?: - 23| - 3[1-4] - )| - 9561 - ) - )\d{3}| - 176888[234678]\d{2}| - 16977[23]\d{3} - </nationalNumberPattern> - <exampleNumber>1212345678</exampleNumber> - </fixedLine> - <mobile> - <!-- http://stakeholders.ofcom.org.uk/telecoms/numbering/telephone-no-availability/numbers-administered/ - 7100-7599, 7700-7999 with 10 digits; excluding ranges used in GG, IM, JE. --> - <nationalNumberPattern> - 7(?: - [1-4]\d\d| - 5(?: - 0[0-8]| - [13-9]\d| - 2[0-35-9] - )| - 7(?: - 0[1-9]| - [1-7]\d| - 8[02-9]| - 9[0-689] - )| - 8(?: - [014-9]\d| - [23][0-8] - )| - 9(?: - [04-9]\d| - 1[02-9]| - 2[0-35-9]| - 3[0-689] - ) - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7400123456</exampleNumber> - </mobile> - <pager> - <!-- 76 with 10 digits; excluding ranges used in IM. --> - <nationalNumberPattern> - 76(?: - 0[012]| - 2[356]| - 4[0134]| - 5[49]| - 6[0-369]| - 77| - 81| - 9[39] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7640123456</exampleNumber> - </pager> - <!-- Source for non geographic numbers: - http://en.wikipedia.org/wiki/Non-geographical_telephone_numbers_in_the_UK --> - <tollFree> - <!-- 800 1111 with 7 digits, 800 with 9 or 10 digits, 808 with 10 digits, 500 with 9 digits. --> - <nationalNumberPattern> - 80(?: - 0(?: - 1111| - \d{6,7} - )| - 8\d{7} - )| - 500\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{2,3})?</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <!-- 871, 872, 873 with 10 digits are now Controlled Premium Rate Services, so are listed - here as well as 900-909, 910-919, 980-983 with 10 digits. --> - <nationalNumberPattern> - (?: - 87[123]| - 9(?: - [01]\d| - 8[0-3] - ) - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9012345678</exampleNumber> - </premiumRate> - <sharedCost> - <!-- Using shared cost to deal with the various revenue sharing number prefixes in the - United Kingdom: 845 46 47 with 7 digits, 842-845, 870 with 10 digits. --> - <nationalNumberPattern> - 8(?: - 4(?: - 5464\d| - [2-5]\d{7} - )| - 70\d{7} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - <exampleNumber>8431234567</exampleNumber> - </sharedCost> - <personalNumber> - <!-- 70 with 10 digits. --> - <nationalNumberPattern>70\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7012345678</exampleNumber> - </personalNumber> - <voip> - <!-- 56 with 10 digits. --> - <nationalNumberPattern>56\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5612345678</exampleNumber> - </voip> - <uan> - <!-- 30d, 33d, 34d, 37d, 55 with 10 digits. --> - <nationalNumberPattern> - (?: - 3[0347]| - 55 - )\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5512345678</exampleNumber> - </uan> - <shortCode> - <!-- This is a list of the ones that can be called. --> - <nationalNumberPattern> - 1(?: - 0[01]| - 1(?: - [12]| - [68]\d{3} - )| - 2[123]| - 33| - 4(?: - 1| - 7\d - )| - 5\d| - 70\d| - 800\d| - 9[15] - )| - 2(?: - 02| - 2(?: - 02| - 11| - 2 - )| - 3(?: - 02| - 45 - ) - 425 - )| - 3[13]3| - 4(?: - 0[02]| - 35[01]| - 44[45]| - 5\d - )| - 650| - 789| - 9(?: - 01| - 99 - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,6}</possibleNumberPattern> - <exampleNumber>150</exampleNumber> - </shortCode> - </territory> - - <!-- Grenada --> - <!-- http://www.itu.int/oth/T0202000057/en --> - <territory id="GD" countryCode="1" leadingDigits="473" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[4589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 473(?: - 2(?: - 3[0-2]| - 69 - )| - 3(?: - 2[89]| - 86 - )| - 4(?: - [06]8| - 3[5-9]| - 4[0-49]| - 5[5-79]| - 73| - 90 - )| - 63[68]| - 7(?: - 58| - 84 - )| - 938 - )\d{4} - </nationalNumberPattern> - <exampleNumber>4732691234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 473(?: - 4(?: - 0[3-79]| - 1[04-9]| - 20| - 58 - )| - 53[3-8] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>4734031234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Georgia --> - <!-- http://www.itu.int/oth/T0202000050/en - http://en.wikipedia.org/wiki/Telephone_numbers_in_Georgia. --> - <territory id="GE" countryCode="995" internationalPrefix="8~10" - nationalPrefix="8" nationalPrefixFormattingRule="$NP $FG"> - <availableFormats> - <!-- Format isn't very strictly defined - the yellow pages omits area code and does 2 2 2, - the communications commission uses 2 3 3. Wikipedia says 3 2 3. Some use 2 6. --> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[13-79]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(800)(\d{2})(\d{2})(\d{2})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [13-79]\d{7}| - 8\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3(?: - [256]\d| - 4[124-9]| - 7[0-4] - )| - 4(?: - 1\d| - 2[2-7]| - 3[1-79]| - 4[2-8]| - 7[239]| - 9[1-7] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,8}</possibleNumberPattern> - <exampleNumber>32123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 14| - 5[01578]| - 6[28]| - 7[0147-9]| - 9[0-35-9] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>55123456</exampleNumber> - </mobile> - <!-- Information from www.yell.ge, examples such as Wissol Petroleum Georgia hotline. --> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <!-- It seems there may be special 6 digit numbers beginning with 91, but we are not sure, so - these are omitted for now. --> - </territory> - - <!-- French Guiana (French Dept. of) --> - <territory id="GF" countryCode="594" internationalPrefix="00"> - </territory> - - <!-- Guernsey --> - <!-- Inherits formatting rules from the UK. --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom --> - <territory id="GG" countryCode="44" internationalPrefix="00" - nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG"> - <generalDesc> - <nationalNumberPattern>[135789]\d{6,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <areaCodeOptional> - <nationalNumberPattern>1481[2-9]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1481250123</exampleNumber> - </areaCodeOptional> - <!-- Specific to GG. --> - <fixedLine> - <!-- 1481 with 10 digits. --> - <nationalNumberPattern>1481\d{6}</nationalNumberPattern> - <exampleNumber>1481456789</exampleNumber> - </fixedLine> - <mobile> - <!-- 7781, 7839, 7911 with 10 digits. --> - <nationalNumberPattern> - 7(?: - 781| - 839| - 911 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7781123456</exampleNumber> - </mobile> - <!-- Other numbers as per GB. --> - <pager> - <nationalNumberPattern> - 76(?: - 0[012]| - 2[356]| - 4[0134]| - 5[49]| - 6[0-369]| - 77| - 81| - 9[39] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7640123456</exampleNumber> - </pager> - <tollFree> - <nationalNumberPattern> - 80(?: - 0(?: - 1111| - \d{6,7} - )| - 8\d{7} - )| - 500\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{2,3})?</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - (?: - 87[123]| - 9(?: - [01]\d| - 8[0-3] - ) - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9012345678</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 8(?: - 4(?: - 5464\d| - [2-5]\d{7} - )| - 70\d{7} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - <exampleNumber>8431234567</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>70\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7012345678</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>56\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5612345678</exampleNumber> - </voip> - <uan> - <nationalNumberPattern> - (?: - 3[0347]| - 55 - )\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5512345678</exampleNumber> - </uan> - <shortCode> - <nationalNumberPattern> - 1\d{2}(?:\d{3})?| - 999 - </nationalNumberPattern> - <possibleNumberPattern>\d{3,6}</possibleNumberPattern> - <exampleNumber>150</exampleNumber> - </shortCode> - </territory> - - <!-- Ghana --> - <!-- http://www.itu.int/oth/T0202000052/en --> - <!-- http://www.nca.org.gh/index.php?option=com_content&view=article&id=90&Itemid=65 --> - <territory id="GH" countryCode="233" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[235]\d{6,8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 3(?: - 0[237]\d| - [167](?: - 2[0-6]| - 7\d - )| - 2(?: - 2[0-5]| - 7\d - )| - 3(?: - 2[0-37]| - 7\d - )| - 4(?: - [27]\d| - 30 - )| - 5(?: - 2[0-7]| - 7\d - )| - 8(?: - 2[0-2]| - 7\d - )| - 9(?: - 20| - 7\d - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>302345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 2(?: - (?: - [47]\d| - 08 - )\d{6}| - [368]\d{7} - )| - 54\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>231234567</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Gibraltar --> - <territory id="GI" countryCode="350" internationalPrefix="00"> - <!-- No formatting rules - numbers are always formatted as a block. --> - <generalDesc> - <nationalNumberPattern>[2568]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2(?: - 00\d| - 16[0-7]| - 22[2457] - )\d{4} - </nationalNumberPattern> - <exampleNumber>20012345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 5[4-8]| - 60 - )\d{6} - </nationalNumberPattern> - <exampleNumber>57123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{6}</nationalNumberPattern> - <exampleNumber>80123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>8[1-689]\d{6}</nationalNumberPattern> - <exampleNumber>88123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>87\d{6}</nationalNumberPattern> - <exampleNumber>87123456</exampleNumber> - </sharedCost> - <shortCode> - <nationalNumberPattern> - 1(?: - 00| - 1(?: - 2| - 6(?: - 00[06]| - 11[17] - )| - 8\d{2} - )| - 23| - 4(?: - 1| - 7[014] - )| - 5[015]| - 9[0349] - )| - 8(?: - 00| - 4[0-2]| - 8\d - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,6}</possibleNumberPattern> - <exampleNumber>116123</exampleNumber> - </shortCode> - </territory> - - <!-- Greenland --> - <!-- http://www.itu.int/oth/T0202000056/en --> - <territory id="GL" countryCode="299" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-689]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Including VSAT numbers here. --> - <nationalNumberPattern> - (?: - 19| - 3[1-6]| - 6[14689]| - 8[14-79]| - 9\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>321000</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[245][2-9]\d{4}</nationalNumberPattern> - <exampleNumber>221234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{4}</nationalNumberPattern> - <exampleNumber>801234</exampleNumber> - </tollFree> - <voip> - <nationalNumberPattern>3[89]\d{4}</nationalNumberPattern> - <exampleNumber>381234</exampleNumber> - </voip> - </territory> - - <!-- Gambia --> - <!-- http://www.itu.int/oth/T020200004F/en --> - <territory id="GM" countryCode="220" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 4(?: - [23]\d{2}| - 4(?: - 1[024679]| - [6-9]\d - ) - )| - 5(?: - 54[0-7]| - 6(?: - [67]\d - )| - 7(?: - 1[04]| - 2[035]| - 3[58]| - 48 - ) - )| - 8\d{3} - )\d{3} - </nationalNumberPattern> - <exampleNumber>5661234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[3679]\d{6}</nationalNumberPattern> - <exampleNumber>3012345</exampleNumber> - </mobile> - </territory> - - <!-- Guinea --> - <!-- http://www.itu.int/oth/T020200005B/en --> - <territory id="GN" countryCode="224" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3567]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 30(?: - 24| - 3[12]| - 4[1-35-7]| - 5[13]| - 6[189]| - [78]1| - 9[1478] - )\d{4} - </nationalNumberPattern> - <exampleNumber>30241234</exampleNumber> - </fixedLine> - <mobile> - <!-- WiMAX is in the plan - which is a wireless broadband protocol. Not including this in - the metadata for now unless this proves to be necessary. These would start with 79. --> - <nationalNumberPattern> - 55\d{6}| - 6(?: - 0(?: - 2\d| - 3[3467]| - 5[2457-9] - )| - [24578]\d{2}| - 3(?: - [14]0| - 35 - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>60201234</exampleNumber> - </mobile> - </territory> - - <!-- Guadeloupe --> - <!-- http://www.itu.int/oth/T0202000058/en --> - <territory id="GP" countryCode="590" internationalPrefix="00" - mainCountryForCode="true" nationalPrefix="0" - nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([56]90)(\d{2})(\d{4})"> - <format>$1 $2-$3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[56]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- The plan says 59011 and 59012 are not implemented yet, but is from 2006 and online - examples can be found. --> - <nationalNumberPattern> - 590(?: - 1[12]| - 2[0-68]| - 3[28]| - 4[126-8]| - 5[067]| - 6[018]| - [89]\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>590201234</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 1[1-9] and 2[013-5] as prefixes after SMSs have been successfully sent to - numbers with this prefix. starpy.net/rates.php also attributes this range to Guadeloupe - Digicel Mobile. --> - <nationalNumberPattern> - 690(?: - 00| - 1[1-9]| - 2[013-5]| - [3-5]\d| - 6[0-57-9]| - 7[1-6]| - 8[0-6]| - 9[09] - )\d{4} - </nationalNumberPattern> - <exampleNumber>690301234</exampleNumber> - </mobile> - </territory> - - <!-- Equatorial Guinea --> - <!-- http://www.itu.int/oth/T0202000041/en --> - <territory id="GQ" countryCode="240" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits>[235]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{6})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[23589]\d{8}</nationalNumberPattern> - <!-- The 6 here refers to the old number pattern - numbers written down may still be this - length although they can no longer be dialled. --> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 3(?: - 3(?: - 3\d[7-9]| - [0-24-9]\d[46] - )| - 5\d{2}[7-9] - )\d{4} - </nationalNumberPattern> - <exampleNumber>333091234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 222| - 551 - )\d{6} - </nationalNumberPattern> - <exampleNumber>222123456</exampleNumber> - </mobile> - <!-- Note that personal and sharedCost numbers are said to go under here too - hopefully when - they start allocating them there will be a differentiation of prefixes, but this is not - clear now. --> - <tollFree> - <nationalNumberPattern>80\d[1-9]\d{5}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d[1-9]\d{5}</nationalNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Greece --> - <!-- http://www.itu.int/oth/T0202000055/en --> - <!-- http://en.wikipedia.org/wiki/%2B30 --> - <territory id="GR" countryCode="30" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([27]\d)(\d{4})(\d{4})"> - <leadingDigits> - 21| - 7 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 2[2-9]1| - [689] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(2\d{3})(\d{6})"> - <leadingDigits>2[2-9][02-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[26-9]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2(?: - 1\d{2}| - 2(?: - 3[1-8]| - 4[1-7]| - 5[1-4]| - 6[1-8]| - 7[1-5]| - [289][1-9] - )| - 3(?: - 1\d| - 2[1-5]| - 3[1-4]| - [45][1-3]| - 7[1-7]| - 8[1-6]| - 9[1-79] - )| - 4(?: - 1\d| - 2[1-8]| - 3[1-4]| - 4[13-5]| - 6[1-578]| - 9[1-5] - )| - 5(?: - 1\d| - 2[1-3]| - 4[124]| - 5[1-6]| - [39][1-4] - )| - 6(?: - 1\d| - 3[24]| - 4[1-7]| - 5[13-9]| - [269][1-6]| - 7[14]| - 8[1-35] - )| - 7(?: - 1\d| - [23][1-5]| - 4[1-7]| - 5[1-57]| - 6[134]| - 9[15-7] - )| - 8(?: - 1\d| - 2[1-5]| - [34][1-4]| - 9[1-7] - ) - )\d{6} - </nationalNumberPattern> - <exampleNumber>2123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>69\d{8}</nationalNumberPattern> - <exampleNumber>6912345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[19]\d{7}</nationalNumberPattern> - <exampleNumber>9091234567</exampleNumber> - </premiumRate> - <!-- Including calls with maximum charge of 0,25 EUR/minute here instead of under premium - rate. --> - <sharedCost> - <nationalNumberPattern> - 8(?: - 0[16]| - 12| - 25 - )\d{7} - </nationalNumberPattern> - <exampleNumber>8011234567</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>70\d{8}</nationalNumberPattern> - <exampleNumber>7012345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Guatemala --> - <!-- http://www.itu.int/oth/T020200005A/en - http://www.sit.gob.gt/index.php?page=plan-de-numeracion - http://en.wikipedia.org/wiki/Telephone_numbers_in_Guatemala --> - <territory id="GT" countryCode="502" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <leadingDigits>[2-7]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{3})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2-7]\d{7}| - 1[89]\d{9} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[267][2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>22456789</exampleNumber> - </fixedLine> - <mobile> - <!-- Wikipedia claims numbers with 3 are also mobile although in ITU document it says that - they are just reserved. --> - <nationalNumberPattern>[345]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>51234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>18[01]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>18001112222</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>19\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>19001112222</exampleNumber> - </premiumRate> - <shortCode> - <nationalNumberPattern> - 1(?: - 2| - [57]\d - )\d - </nationalNumberPattern> - <possibleNumberPattern>\d{3,4}</possibleNumberPattern> - <exampleNumber>123</exampleNumber> - </shortCode> - </territory> - - <!-- Guam --> - <!-- http://www.nationalnanpa.com/nas/public/assigned_code_query_step1.do?method=resetCodeQueryModel --> - <territory id="GU" countryCode="1" leadingDigits="671" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Added 671 555/720/721 based on information from - http://www.area-codes.com/area-code/area-code-671.asp --> - <nationalNumberPattern> - 671(?: - 3(?: - 00| - 3[39]| - 4[349]| - 55| - 6[26] - )| - 4(?: - 56| - 7[1-9]| - 8[23678] - )| - 5(?: - 55| - 6[2-5]| - 88 - )| - 6(?: - 3[2-578]| - 4[24-9]| - 5[34]| - 78| - 8[5-9] - )| - 7(?: - [079]7| - 2[0167]| - 3[45]| - 8[789] - )| - 8(?: - [2-5789]8| - 6[48] - )| - 9(?: - 2[29]| - 6[79]| - 7[179]| - 8[789]| - 9[78] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>6713001234</exampleNumber> - </fixedLine> - <!-- We assume mobile phone numbers to be the same as fixed-line - further info unavailable --> - <mobile> - <nationalNumberPattern> - 671(?: - 3(?: - 00| - 3[39]| - 4[349]| - 55| - 6[26] - )| - 4(?: - 56| - 7[1-9]| - 8[23678] - )| - 5(?: - 55| - 6[2-5]| - 88 - )| - 6(?: - 3[2-578]| - 4[24-9]| - 5[34]| - 78| - 8[5-9] - )| - 7(?: - [079]7| - 2[0167]| - 3[45]| - 8[789] - )| - 8(?: - [2-5789]8| - 6[48] - )| - 9(?: - 2[29]| - 6[79]| - 7[179]| - 8[789]| - 9[78] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>6713001234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Guinea-Bissau --> - <!-- http://www.itu.int/oth/T020200005C/en --> - <territory id="GW" countryCode="245" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3567]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 3(?: - 2[0125]| - 3[1245]| - 4[12]| - 5[1-4]| - 70| - 9[1-467] - )\d{4} - </nationalNumberPattern> - <exampleNumber>3201234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[5-7]\d{6}</nationalNumberPattern> - <exampleNumber>5012345</exampleNumber> - </mobile> - </territory> - - <!-- Guyana --> - <!-- http://www.itu.int/oth/T020200005D/en --> - <territory id="GY" countryCode="592" internationalPrefix="001"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-4679]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - 1[6-9]| - 2[0-35-9]| - 3[1-4]| - 5[3-9]| - 6\d| - 7[0-24-79] - )| - 3(?: - 2[25-9]| - 3\d - )| - 4(?: - 4[0-24]| - 5[56] - )| - 77[1-57] - )\d{4} - </nationalNumberPattern> - <exampleNumber>2201234</exampleNumber> - </fixedLine> - <mobile> - <!-- The ITU document only describes a few ranges for mobile numbers but there is evidence - that SMS messages have been succesfully sent to numbers in the entire range prefixed - with 6. --> - <nationalNumberPattern>6\d{6}</nationalNumberPattern> - <exampleNumber>6091234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - (?: - 289| - 862 - )\d{4} - </nationalNumberPattern> - <exampleNumber>2891234</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>9008\d{3}</nationalNumberPattern> - <exampleNumber>9008123</exampleNumber> - </premiumRate> - <shortCode> - <nationalNumberPattern> - 0(?: - 02| - 171| - 444| - 7[67]7| - 801| - 9(?: - 0[78]| - [2-47] - ) - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,4}</possibleNumberPattern> - <exampleNumber>0801</exampleNumber> - </shortCode> - </territory> - - <!-- Hong Kong --> - <!-- http://www.ofta.gov.hk/numbering/main.html --> - <territory id="HK" countryCode="852" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <leadingDigits> - [235-7]| - [89](?: - 0[1-9]| - [1-9] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(800)(\d{3})(\d{3})"> - <leadingDigits>800</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(900)(\d{2})(\d{3})(\d{3})"> - <leadingDigits>900</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <!-- Slightly more complex pattern to allow the country code to be stripped off if - necessary. --> - <nationalNumberPattern> - [235-7]\d{7}| - 8\d{7,8}| - 9\d{7,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[23]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[5-79]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>51234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>90012345678</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>8[1-3]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>81123456</exampleNumber> - </personalNumber> - </territory> - - <!-- Honduras --> - <!-- http://www.itu.int/oth/T020200005F/en --> - <!-- It seems there is no longer a trunk prefix in use, based on websites like - http://www.howtocallabroad.com/codes.html and on seeing how locals write their numbers in - national format. --> - <territory id="HN" countryCode="504" internationalPrefix="00" > - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <format>$1-$2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[237-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2(?: - 2(?: - 0[019]| - 1[1-36]| - [23]\d| - 4[056]| - 5[57]| - 9[01] - )| - 4(?: - 2|3-59]| - 3[13-689]| - 4[0-68]| - 5[1-35] - )| - 5(?: - 4[3-5]| - 5\d| - 6[56]| - 74 - )| - 6(?: - 4[0-378]| - [56]\d| - [78][0-8]| - 9[01] - )| - 7(?: - 6[46-9]| - 7[02-9]| - 8[34] - )| - 8(?: - 79| - 8[0-35789]| - 9[1-57-9] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[37-9]\d{7}</nationalNumberPattern> - <exampleNumber>91234567</exampleNumber> - </mobile> - </territory> - - <!-- Croatia --> - <!-- http://www.itu.int/oth/T0202000032/en --> - <!-- http://en.wikipedia.org/wiki/%2B385 --> - <territory id="HR" countryCode="385" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- The plan says 1 XXX XXXX but the government and local telecom websites are formatted 1 - XXXX XXX, so we prefer that formatting here. These same sources prefer XXX XXX to XX - XXXX as well. --> - <numberFormat pattern="(1)(\d{4})(\d{3})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(6[029])(\d{4})(\d{3})"> - <leadingDigits>6[029]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([2-5]\d)(\d{3})(\d{3})"> - <leadingDigits>[2-5]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(9[12589])(\d{3,4})(\d{3,4})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(9[12589])(\d{3,4})(\d{3})(\d{3})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{2,3})"> - <leadingDigits> - 6[145]| - 7 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3,4})(\d{3})"> - <leadingDigits> - 6[145]| - 7 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(80[01])(\d{2})(\d{2,3})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(80[01])(\d{3,4})(\d{3})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [1-7]\d{5,8}| - [89]\d{6,11} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Supporting 060 (general service), 062 (universal access), 069 (children service) - numbers here too. --> - <nationalNumberPattern> - (?: - 1| - 6[029] - )\d{7}| - (?: - 2[0-3]| - 3[1-5]| - 4[02-47-9]| - 5[1-3] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9[12589]\d{6,10}</nationalNumberPattern> - <possibleNumberPattern>\d{8,12}</possibleNumberPattern> - <exampleNumber>912345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80[01]\d{4,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <!-- 061 is for TeleVoting numbers - but these are charged at similar rates to premium rate - so we include them here. --> - <nationalNumberPattern>6[145]\d{4,7}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>611234</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>7[45]\d{4,7}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>741234567</exampleNumber> - </personalNumber> - </territory> - - <!-- Haiti --> - <!-- http://www.itu.int/oth/T020200005E/en --> - <!-- http://www.numberingplans.com/ --> - <territory id="HT" countryCode="509" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{2})(\d{4})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-489]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- The prefix 24 seems to be also used, based on online searches. --> - <nationalNumberPattern> - 2(?: - [24]\d| - 5[1-5]| - 94 - )\d{5} - </nationalNumberPattern> - <exampleNumber>22453300</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 3[4-9]| - 4\d - )\d{6} - </nationalNumberPattern> - <exampleNumber>34101234</exampleNumber> - </mobile> - <tollFree> - <!-- ITU document says numbers with prefix 8 are "value-added services and free numbers - without making any further distinction. However, http://www.numberingplans.com/ seems - to suggest they are free. --> - <nationalNumberPattern>8\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <voip> - <!-- ITU document suggests 98\d{6}, but http://www.numberingplans.com/ restricts it to - 98[89]\d{5}. --> - <nationalNumberPattern>98[89]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>98901234</exampleNumber> - </voip> - <shortCode> - <nationalNumberPattern>1\d{2}</nationalNumberPattern> - <possibleNumberPattern>\d{3}</possibleNumberPattern> - <exampleNumber>114</exampleNumber> - </shortCode> - </territory> - - <!-- Hungary --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000610001MSWE.doc --> - <territory id="HU" countryCode="36" internationalPrefix="00" - nationalPrefix="06" nationalPrefixFormattingRule="($FG)"> - <!-- Although the national prefix is necessary for dialling, the preferred format (confirmed - by a Hungarian person and following the yellow pages) is to omit this when formatting. - Yellow pages: www.aranyoldalak.hu --> - <availableFormats> - <numberFormat pattern="(1)(\d{3})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})"> - <leadingDigits>[2-9]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{8,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Includes numbers for corporate networks. --> - <nationalNumberPattern> - (?: - 1\d| - 2(?: - 1\d| - [2-9] - )| - 3[2-7]| - 4[24-9]| - 5[2-79]| - 6[23689]| - 7(?: - 1\d| - [2-9] - )| - 8[2-57-9]| - 9[2-69] - )\d{6} - </nationalNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - [27]0| - 3[01] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>201234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>9[01]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>40\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>40123456</exampleNumber> - </sharedCost> - </territory> - - <!-- Indonesia --> - <!-- http://www.itu.int/oth/T0202000064/en (from 2001, very out-of-date) --> - <!-- http://en.wikipedia.org/wiki/%2B62 --> - <territory id="ID" countryCode="62" internationalPrefix="0(?:0[1789]|10(?:00|1[67]))" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="(\d{2})(\d{7,8})"> - <leadingDigits> - 2[124]| - [36]1 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="(\d{3})(\d{5,7})"> - <leadingDigits> - [4579]| - 2[035-9]| - [36][02-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(8\d{2})(\d{3,4})(\d{3,4})"> - <leadingDigits>8[1-35-9]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(177)(\d{6,8})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number, and examples on the web show - that sometimes they are followed by less digits. --> - <numberFormat pattern="(800)(\d{5,7})"> - <leadingDigits>800</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(809)(\d)(\d{3})(\d{3})"> - <leadingDigits>809</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{6,10}</nationalNumberPattern> - <possibleNumberPattern>\d{5,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Area codes taken from wikipedia, with missing ones added from - http://www.telkom.co.id/customer-services/area-and-country-code/?type=area. - We also added 0770 after user feedback because it seems to be used on Bintan island. - --> - <nationalNumberPattern> - 2[124]\d{7,8}| - (?: - 2(?: - [35][1-4]| - 6[0-8]| - 7[1-6]| - 8\d| - 9[1-8] - )| - 3(?: - 1| - 2[1-578]| - 3[1-68]| - 4[1-3]| - 5[1-8]| - 6[1-3568]| - 7[0-46]| - 8\d - )| - 4(?: - 0[1-589]| - 1[01347-9]| - 2[0-36-8]| - 3[0-24-68]| - 5[1-378]| - 6[1-5]| - 7[134]| - 8[1245] - )| - 5(?: - 1[1-35-9]| - 2[25-8]| - 3[1246-9]| - 4[1-3589]| - 5[1-46]| - 6[1-8] - )| - 6(?: - 19? | - [25]\d| - 3[1-469]| - 4[1-6] - )| - 7(?: - 1[1-46-9]| - 2[14-9]| - [36]\d| - 4[1-8]| - 5[1-9]| - 7[0-36-9] - )| - 9(?: - 0[12]| - 1[0134-8]| - 2[0-479]| - 5[125-8]| - 6[23679]| - 7[159]| - 8[01346] - ) - )\d{5,8} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,10}</possibleNumberPattern> - <exampleNumber>612345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>8[1-35-9]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{9,11}</possibleNumberPattern> - <exampleNumber>812345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 177\d{6,8}| - 800\d{5,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,11}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <!-- The infomation below is provided by an Indonesian --> - <premiumRate> - <nationalNumberPattern>809\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8091234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Ireland --> - <!-- http://www.comreg.ie/_fileupload/publications/ComReg0802.pdf --> - <!-- http://www.comreg.ie/_fileupload/publications/ComReg0435.pdf --> - <!-- http://www.comreg.ie/_fileupload/publications/ComReg03147.pdf --> - <territory id="IE" countryCode="353" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <numberFormat pattern="(1)(\d{3,4})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{5})"> - <leadingDigits> - 2[2-9]| - 4[347]| - 5[2-58]| - 6[2-47-9]| - 9[3-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{5})"> - <leadingDigits> - 40[24]| - 50[45] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(48)(\d{4})(\d{4})"> - <leadingDigits>48</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(818)(\d{3})(\d{3})"> - <leadingDigits>81</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})"> - <leadingDigits> - [24-69]| - 7[14] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="([78]\d)(\d{3,4})(\d{4})"> - <leadingDigits> - 76| - 8[35-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(700)(\d{3})(\d{3})"> - <leadingDigits>70</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" pattern="(\d{4})(\d{3})(\d{3})"> - <leadingDigits> - 1(?: - 8[059]| - 5 - ) - </leadingDigits> - <leadingDigits> - 1(?: - 8[059]0| - 5 - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[124-9]\d{6,9}</nationalNumberPattern> - <possibleNumberPattern>\d{5,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- We allow 6-7 digit subscriber numbers for the 021 area code since that seems to be - reflected by the numbers in the Yellow Pages. The 023, 043, 052 and 064 area codes also - may have 7 digit subscriber numbers, although limited to 5 in the plan. This was caused - by a numbering update in 2008 (http://www.wtng.info/wtng-353-ie.html has more details). - Other changes not in the plan include consolidating 0502, 0506 and 0509 into 057 and - 054, 055 and 053 into 053, and making 044 be followed by 7 digits in some cases. - Another peculiarity is that 048 actually replaces 00 44 28 when Irish people dial, - allowing them to easily dial Northern Ireland. We support these numbers here, although - technically they are numbers for the UK. --> - <nationalNumberPattern> - 1\d{7,8}| - 2(?: - 1\d{6,7}| - [24-9]\d{5}| - 3\d{5,7} - )| - 4(?: - 0[24]\d{5}| - [1269]\d{7}| - [34]\d{5,7}| - 5\d{6}| - 7\d{5}| - 8[0-46-9]\d{7} - )| - 5(?: - 0[45]\d{5}| - 1\d{6}| - 2\d{5,7}| - [3679]\d{7}| - 8\d{5} - )| - 6(?: - 1\d{6}| - 4\d{5,7}| - [237-9]\d{5}| - [56]\d{7} - )| - 7[14]\d{7}| - 9(?: - 1\d{6}| - [04]\d{7}| - [3-9]\d{5} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{5,10}</possibleNumberPattern> - <exampleNumber>2212345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 8(?: - 22\d{6}| - [35-9]\d{7,8} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>850123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 15(?: - 1[2-9]| - [2-8]0| - 59| - 9[089] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1520123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>18[59]0\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1850123456</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>700\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>700123456</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>76\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>761234567</exampleNumber> - </voip> - <uan> - <nationalNumberPattern>818\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>818123456</exampleNumber> - </uan> - </territory> - - <!-- Israel --> - <!-- http://www.itu.int/oth/T020200006A/en --> - <!-- http://en.wikipedia.org/wiki/%2B972 --> - <!-- http://www.wtng.info/wtng-972-il.html --> - <!-- http://www.moc.gov.il/new/documents/engineering/MISP0200.ppt (in Hebrew) --> - <!-- Formatting practice following wikipedia, and government sites. --> - <territory id="IL" countryCode="972" internationalPrefix="0(?:0|1[2-48])" - nationalPrefix="0" nationalPrefixFormattingRule="$FG"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="([2-489])(\d{3})(\d{4})"> - <leadingDigits>[2-489]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="([57]\d)(\d{3})(\d{4})"> - <leadingDigits>[57]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(1)([7-9]\d{2})(\d{3})(\d{3})"> - <leadingDigits>1[7-9]</leadingDigits> - <format>$1-$2-$3-$4</format> - </numberFormat> - <!-- The following number is for hospitals. --> - <numberFormat pattern="(1255)(\d{3})"> - <leadingDigits>125</leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(1200)(\d{3})(\d{3})"> - <leadingDigits>120</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(1212)(\d{2})(\d{2})"> - <leadingDigits>121</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <!-- These are 4-digit star numbers which are only accessible within Israel and must be - dialed with a star in front of the number. --> - <numberFormat pattern="(\d{4})"> - <leadingDigits>[2-689]</leadingDigits> - <format>*$1</format> - </numberFormat> - </availableFormats> - <generalDesc > - <nationalNumberPattern> - [17]\d{6,9}| - [2-589]\d{3}(?:\d{3,6})?| - 6\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - </generalDesc> - <noInternationalDialling> - <nationalNumberPattern> - 1700\d{6}| - [2-689]\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - <exampleNumber>1700123456</exampleNumber> - </noInternationalDialling> - <fixedLine> - <nationalNumberPattern> - (?: - [2-489]| - 7[2-46-8] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>5[024679]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>501234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 1(?: - 80[01]\d{3}| - 255 - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <premiumRate> - <!-- Peculiarly, one source states that 1956 and 1957 are the new premium rate prefixes. - However, no online numbers starting with these prefixes can be found, and this data - is not found in any other source. Instead, 1919 numbers are commonly used online for - these services, so we support them. --> - <!-- 1200 and 1212 numbers are for televoting. --> - <nationalNumberPattern> - 1(?: - 212| - (?: - 919| - 200 - )\d{2} - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - <exampleNumber>1919123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 1(?: - 700| - 809 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1700123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>77\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>771234567</exampleNumber> - </voip> - <uan> - <!-- 4-digit star numbers. --> - <nationalNumberPattern>[2-689]\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{4}</possibleNumberPattern> - <exampleNumber>2250</exampleNumber> - </uan> - <shortCode> - <nationalNumberPattern>1\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{4}</possibleNumberPattern> - <exampleNumber>1455</exampleNumber> - </shortCode> - </territory> - - <!-- Isle of Man --> - <!-- Inherits formatting rules from the UK. --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom --> - <territory id="IM" countryCode="44" internationalPrefix="00" - nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG"> - <generalDesc> - <nationalNumberPattern>[135789]\d{6,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <areaCodeOptional> - <nationalNumberPattern>1624[2-9]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1624250123</exampleNumber> - </areaCodeOptional> - <!-- Specific to IM. --> - <fixedLine> - <!-- 1624 with 10 digits. --> - <nationalNumberPattern>1624\d{6}</nationalNumberPattern> - <exampleNumber>1624456789</exampleNumber> - </fixedLine> - <mobile> - <!-- 7524, 7624, 7924 with 10 digits. --> - <nationalNumberPattern>7[569]24\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7924123456</exampleNumber> - </mobile> - <tollFree> - <!-- 808 162 with 10 digits. --> - <nationalNumberPattern>808162\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8081624567</exampleNumber> - </tollFree> - <premiumRate> - <!-- 872 299, 900 624, 901 624, 906 624, 907 624 with 10 digits. --> - <nationalNumberPattern> - (?: - 872299| - 90[0167]624 - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9016247890</exampleNumber> - </premiumRate> - <sharedCost> - <!-- 844 040 6, 844 090 6, 845 624, 870 624 with 10 digits. --> - <nationalNumberPattern> - 8(?: - 4(?: - 40[49]06| - 5624\d - )| - 70624\d - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8456247890</exampleNumber> - </sharedCost> - <!-- Other numbers as per GB. --> - <personalNumber> - <nationalNumberPattern>70\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7012345678</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>56\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5612345678</exampleNumber> - </voip> - <uan> - <!-- 308 162, 33d, 344 040 6, 344 090 6, 345 624, 370 624, 372 299, 55 with 10 digits. --> - <nationalNumberPattern> - 3(?: - 08162\d| - 3\d{5}| - 4(?: - 40[49]06| - 5624\d - )| - 7(?: - 0624\d| - 2299\d - ) - )\d{3}| - 55\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5512345678</exampleNumber> - </uan> - <shortCode> - <nationalNumberPattern> - 1\d{2}(?:\d{3})?| - 999 - </nationalNumberPattern> - <possibleNumberPattern>\d{3,6}</possibleNumberPattern> - <exampleNumber>150</exampleNumber> - </shortCode> - </territory> - - <!-- India --> - <!-- http://www.itu.int/oth/T0202000063/en --> - <!-- http://en.wikipedia.org/wiki/%2B91 --> - <!-- Note that several changes in area codes have occurred since the numbering plan was released - - changes are notified on the www.bsnl.co.in website. Area codes can be verified here at - http://www.bsnl.co.in/stdsearch.php. --> - <territory id="IN" countryCode="91" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Mobile numbers. --> - <numberFormat pattern="(\d{2})(\d{2})(\d{6})"> - <leadingDigits> - 7(?: - 2[0579]| - 39| - 4[0-389]| - 5[04-9]| - 6| - 7[02-9]| - 8[0-79] - )| - 8(?: - 0[01589]| - 1[024]| - 8[0479]| - 9[057-9] - )| - 9 - </leadingDigits> - <leadingDigits> - 7(?: - 2[0579]| - 39| - 4[0-389]| - 5(?: - 0[0-5]| - 49| - 50| - [6-9] - )| - 6| - 7[02-9]| - 8[0-79] - )| - 8(?: - 0[01589]| - 1[024]| - 8(?: - [079]| - 44 - )| - 9[057-9] - )| - 9 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 2 digits area code --> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits> - 11| - 2[02]| - 33| - 4[04]| - 79| - 80[2-6] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 3 digits area code --> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 1(?: - 2[0-249]| - 3[0-25]| - 4[145]| - [569][14]| - 7[1257]| - 8[1346]| - [68][1-9] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 2(?: - 1[257]| - 3[013]| - 4[01]| - 5[0137]| - 6[0158]| - 78| - 8[1568]| - 9[14] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 3(?: - 26| - 4[1-3]| - 5[34]| - 6[01489]| - 7[02-46]| - 8[159] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 4(?: - 1[36]| - 2[1-47]| - 3[15]| - 5[12]| - 6[126-9]| - 7[0-24-9]| - 8[013-57]| - 9[014-7] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 5(?: - [136][25]| - 22| - 4[28]| - 5[12]| - [78]1| - 9[15] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 6(?: - 12| - [2345]1| - 57| - 6[13]| - 7[14]| - 80 - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 7(?: - 12| - 2[14]| - 3[134]| - 4[47]| - 5[15]| - [67]1| - 88 - ) - </leadingDigits> - <leadingDigits> - 7(?: - 12| - 2[14]| - 3[134]| - 4[47]| - 5(?: - 1| - 5[1-9] - )| - [67]1| - 88 - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 8(?: - 16| - 2[014]| - 3[126]| - 6[136]| - 7[078]| - 8[34]| - 91 - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 4 digits area code --> - <!-- Fallback for fixed-line numbers. --> - <numberFormat pattern="(\d{4})(\d{3})(\d{3})"> - <leadingDigits> - 1(?: - [2-579]| - [68][1-9] - )| - [2-8] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(1600)(\d{2})(\d{4})"> - <leadingDigits>160</leadingDigits> - <leadingDigits>1600</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(1800)(\d{4,5})"> - <leadingDigits>180</leadingDigits> - <leadingDigits>1800</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(18[06]0)(\d{2,4})(\d{4})"> - <leadingDigits>18[06]</leadingDigits> - <leadingDigits>18[06]0</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - 1\d{7,11}| - [2-9]\d{9,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- This is a list of the 2 and 3 digit area codes and the first 3 - digits of 4 digit area codes, so we can check the following digit - belongs to one of the operator-codes (2-6). Operator codes from - wikipedia, with the addition of 5 (HFCL Infotel). Area codes starting - with a 7 are listed separately, since the prefixes need to be more - detailed as they would otherwise clash with mobile phone prefixes. --> - <nationalNumberPattern> - (?: - 11| - 2[02]| - 33| - 4[04]| - 79| - 80 - )[2-6]\d{7}| - (?: - 1(?: - 2[0-249]| - 3[0-25]| - 4[145]| - [59][14]| - 6[014]| - 7[1257]| - 8[01346] - )| - 2(?: - 1[257]| - 3[013]| - 4[01]| - 5[0137]| - 6[0158]| - 78| - 8[1568]| - 9[14] - )| - 3(?: - 26| - 4[1-3]| - 5[34]| - 6[01489]| - 7[02-46]| - 8[159] - )| - 4(?: - 1[36]| - 2[1-47]| - 3[15]| - 5[12]| - 6[126-9]| - 7[0-24-9]| - 8[013-57]| - 9[014-7] - )| - 5(?: - [136][25]| - 22| - 4[28]| - 5[12]| - [78]1| - 9[15] - )| - 6(?: - 12| - [2345]1| - 57| - 6[13]| - 7[14]| - 80 - )| - 7(?: - 12| - 2[14]| - 3[134]| - 4[47]| - 5[15]| - [67]1| - 88 - )| - 8(?: - 16| - 2[014]| - 3[126]| - 6[136]| - 7[078]| - 8[34]| - 91 - ) - )[2-6]\d{6}| - (?: - (?: - 1(?: - 2[35-8]| - 3[346-9]| - 4[236-9]| - [59][0235-9]| - 6[235-9]| - 7[34689]| - 8[257-9] - )| - 2(?: - 1[134689]| - 3[24-8]| - 4[2-8]| - 5[25689]| - 6[2-4679]| - 7[13-79]| - 8[2-479]| - 9[235-9] - )| - 3(?: - 01| - 1[79]| - 2[1-5]| - 4[25-8]| - 5[125689]| - 6[235-7]| - 7[157-9]| - 8[2-467] - )| - 4(?: - 1[14578]| - 2[5689]| - 3[2-467]| - 5[4-7]| - 6[35]| - 73| - 8[2689]| - 9[2389] - )| - 5(?: - [16][146-9]| - 2[14-8]| - 3[1346]| - 4[14-69]| - 5[46]| - 7[2-4]| - 8[2-8]| - 9[246] - )| - 6(?: - 1[1358]| - 2[2457]| - 3[2-4]| - 4[235-7]| - 5[2-689]| - 6[24-58]| - 7[23-689]| - 8[1-6] - )| - 8(?: - 1[1357-9]| - 2[235-8]| - 3[03-57-9]| - 4[0-24-9]| - 5\d| - 6[2457-9]| - 7[1-6]| - 8[1256]| - 9[2-4] - ) - )\d| - 7(?: - (?: - 1[013-9]| - 2[0235-9]| - 3[2679]| - 4[1-35689]| - 5[2-46-9]| - [67][02-9]| - 9\d - )\d| - 8(?: - 2[0-6]| - [013-8]\d - ) - ) - )[2-6]\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - <exampleNumber>1123456789</exampleNumber> - </fixedLine> - <!-- http://en.wikipedia.org/wiki/Mobile_telephone_numbering_in_India --> - <mobile> - <!-- A couple of additional prefixes not found on the wikipedia page, such as 7796, are - added because SMS messages have been successfully sent to these numbers. It seems - almost impossible to know for some of these numbers whether they are land-line or - mobile, since the ranges overlap. --> - <nationalNumberPattern> - (?: - 7(?: - 2(?: - 0[04-9]| - 5[09]| - 7[568]| - 9[39] - )| - 3(?: - 07| - 7[3679]| - 9[689] - )| - 4(?: - 05| - 1[15-9]| - [29][89]| - 39| - 8[389] - )| - 5(?: - 0[0-5]| - [47]9| - 50| - 6[6-9]| - [89][7-9] - )| - 6(?: - 0[027]| - 12| - 20| - 3[19]| - 5[45]| - 6[5-9]| - 7[67]| - 9[6-9] - )| - 7(?: - 0[289]| - 3[5-9]| - 42| - 60| - 9[5-9] - )| - 8(?: - [03][07-9]| - 14| - 2[7-9]| - 4[25]| - 6[09]| - 7[015689]| - 9[0357-9] - ) - )\d| - 9\d{4}| - 8(?: - (?: - 0[01589]| - 1[24]| - 2[2369]| - 4[023458]| - 52| - 6[0589]| - 7[2569] - )\d| - 8(?: - [079]\d| - 44 - )| - 9[057-9]\d - )\d - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9123456789</exampleNumber> - </mobile> - <tollFree> - <!-- Information gathered from sites such as - http://www.surfindia.com/india-facts/toll-free-no.html and - http://indmusings.blogspot.com/2008/09/free-help-line-numbersindia.html --> - <nationalNumberPattern> - 1(?: - 600\d{6}| - 800\d{4,8} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{8,12}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <!-- The metadata on premium rate is temporarily commented out as wikipedia says 900 is - mobile, conflicting with the national numbering plan. --> - <!-- - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - --> - <uan> - <!-- Information gathered from sites such as http://www.calcutta.bsnl.co.in/insuan.html --> - <nationalNumberPattern>1860345\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>18603451234</exampleNumber> - </uan> - </territory> - - <!-- British Indian Ocean Territory / Diego Garcia --> - <!-- http://www.itu.int/oth/T0202000039/en --> - <territory id="IO" countryCode="246" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>3\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>37\d{5}</nationalNumberPattern> - <exampleNumber>3709100</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>38\d{5}</nationalNumberPattern> - <exampleNumber>3801234</exampleNumber> - </mobile> - </territory> - - <!-- Iraq --> - <!-- http://en.wikipedia.org/wiki/%2B964 --> - <!-- http://wtng.info/wtng-964-ik.html --> - <territory id="IQ" countryCode="964" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(1)(\d{3})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([2-6]\d)(\d{3})(\d{3,4})"> - <leadingDigits>[2-6]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(7[5-9]\d)(\d{3})(\d{4})"> - <leadingDigits>7</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-7]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 1\d{7}| - (?: - 2[13-5]| - 3[02367]| - 4[023]| - 5[03]| - 6[026] - )\d{6,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[5-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7912345678</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Iran, Islamic Republic of --> - <!-- http://en.wikipedia.org/wiki/%2B98 --> - <!-- http://www.itu.int/oth/T0202000066/en --> - <territory id="IR" countryCode="98" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Formatting follows wikipedia. --> - <numberFormat pattern="(21)(\d{4})(\d{4})"> - <leadingDigits>21</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - [13-89]| - 2[02-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-6]\d{4,9}|[1789]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{5,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- The patterns here are organized such that numbers with variable lengths come first, - followed by numbers that are 10 digits long. --> - <nationalNumberPattern> - 2(?: - 1[2-9]\d{2,7}| - 51\d{3,7} - )| - (?: - 241| - 3(?: - 11| - 5[23] - )| - 441| - 5[14]1 - )\d{4,7}| - (?: - 3(?: - 34| - 41 - )| - 6(?: - 11| - 52 - )| - )\d{6,7}| - (?: - 1(?: - [134589][12]| - [27][1-4] - )| - 2(?: - 2[189]| - [3689][12]| - 42| - 5[256]| - 7[34] - )| - 3(?: - 12| - 2[1-4]| - 3[125]| - 4[24-9]| - 51| - [6-9][12] - )| - 4(?: - [135-9][12]| - 2[1-467]| - 4[2-4] - )| - 5(?: - 12| - 2[89]| - 3[1-5]| - 4[2-8]| - [5-7][12]| - 8[1245] - )| - 6(?: - 12| - [347-9][12]| - 51| - 6[1-6] - )| - 7(?: - [13589][12]| - 2[1289]| - 4[1-4]| - 6[1-6]| - 7[1-3] - )| - 8(?: - [145][12]| - 3[124578]| - 6[1256]| - 7[1245] - ) - )\d{7} - </nationalNumberPattern> - <exampleNumber>2123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 9(?: - 1\d| - 3[124-8] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9123456789</exampleNumber> - </mobile> - <pager> - <nationalNumberPattern>943[24678]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9432123456</exampleNumber> - </pager> - <!-- No tollFree or premiumRate information can be found. --> - <voip> - <!-- Includes VSAT and Boomehen Satellite numbers. --> - <nationalNumberPattern>993[12]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9932123456</exampleNumber> - </voip> - <uan> - <!-- TCI Public Relations numbers --> - <nationalNumberPattern>9990\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9990123456</exampleNumber> - </uan> - </territory> - - <!-- Iceland --> - <!-- http://www.pta.is/default.aspx?cat_id=85 --> - <territory id="IS" countryCode="354" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[4-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(3\d{2})(\d{3})(\d{3})"> - <leadingDigits>3</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [4-9]\d{6}| - 38\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Including 87[23] XXXX here as it is listed as a fax number. --> - <nationalNumberPattern> - (?: - 4(?: - 1[0-245]| - 2[0-7]| - [37][0-8]| - 4[0245]| - 5[0-356]| - 6\d| - 8[0-46-8]| - 9[013-79] - )| - 5(?: - 05| - [156]\d| - 2[02578]| - 3[013-6]| - 4[03-6]| - 7[0-2578]| - 8[0-25-9]| - 9[013-689] - )| - 87[23] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>4101234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 38[59]\d{6}| - (?: - 6(?: - 1[014-8]| - 2[0-8]| - 3[0-27-9]| - 4[0-29]| - 5[029]| - [67][0-69]| - [89]\d - )| - 7(?: - 5[057]| - 7[0-7] - )| - 8(?: - 2[0-5]| - [469]\d| - 5[1-9] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>6101234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>8001234</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>9011234</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>49[013-79]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>4931234</exampleNumber> - </voip> - </territory> - - <!-- Italy --> - <!-- http://en.wikipedia.org/wiki/%2B39 --> - <territory id="IT" countryCode="39" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <!-- The leading zero for fixed numbers will be prepended before the matching of these - regular expressions. --> - <numberFormat pattern="(0[26])(\d{3,4})(\d{4})"> - <leadingDigits>0[26]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(0[26])(\d{4})(\d{5})"> - <leadingDigits>0[26]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(0[26])(\d{4,6})"> - <leadingDigits>0[26]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(0\d{2})(\d{3,4})(\d{4})"> - <leadingDigits>0[13-57-9][0159]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(0\d{2})(\d{4,6})"> - <leadingDigits>0[13-57-9][0159]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(0\d{3})(\d{3})(\d{4})"> - <leadingDigits>0[13-57-9][2-46-8]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(0\d{3})(\d{4,6})"> - <leadingDigits>0[13-57-9][2-46-8]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{3,4})"> - <leadingDigits> - [13]| - 8(?: - 00| - 4[78] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3,6})"> - <leadingDigits> - 8(?: - 03| - 9 - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[01389]\d{5,10}</nationalNumberPattern> - <possibleNumberPattern>\d{6,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 0(?: - [26]\d{4,9}| - [13-57-9](?: - [0159]\d{4,8}| - [2-46-8]\d{5,8} - ) - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{6,11}</possibleNumberPattern> - <exampleNumber>0212345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>3\d{8,9}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>312345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 80(?: - 0\d{6}| - 3\d{3} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 89(?: - 2\d{3}| - 9\d{6} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>899123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>84[78]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>8481234567</exampleNumber> - </sharedCost> - <!-- The plan says these should be 6 digits long, but when you go to telephone companies in - Italy, such as http://www.gnetwork.it/EmailServizi/Numerazioni178/tabid/91/Default.aspx - and when you search for 178 numbers, they seem to all be 7 digits, so we cover both - lengths here. --> - <personalNumber> - <nationalNumberPattern>178\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>1781234567</exampleNumber> - </personalNumber> - </territory> - - <!-- Jersey --> - <!-- Inherits formatting rules from the UK. --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom --> - <!-- http://www.jcra.je/cms3/v2/public/cmsChild.asp?pageID=1024&childID=1036 --> - <territory id="JE" countryCode="44" internationalPrefix="00" - nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG"> - <generalDesc> - <nationalNumberPattern>[135789]\d{6,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <areaCodeOptional> - <nationalNumberPattern>1534[2-9]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1534250123</exampleNumber> - </areaCodeOptional> - <!-- Specific to JE. --> - <fixedLine> - <!-- 1534 with 10 digits. --> - <nationalNumberPattern>1534\d{6}</nationalNumberPattern> - <exampleNumber>1534456789</exampleNumber> - </fixedLine> - <mobile> - <!-- 7509, 7700, 7797, 7829, 7937 with 10 digits. --> - <nationalNumberPattern> - 7(?: - 509| - 7(?: - 00| - 97 - )| - 829| - 937 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7797123456</exampleNumber> - </mobile> - <pager> - <!-- Pager numbers as per GB. --> - <nationalNumberPattern> - 76(?: - 0[012]| - 2[356]| - 4[0134]| - 5[49]| - 6[0-369]| - 77| - 81| - 9[39] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7640123456</exampleNumber> - </pager> - <!-- Specific to JE. --> - <tollFree> - <!-- 800 735, 800 781, 808 901 with 10 digits. --> - <nationalNumberPattern> - 80(?: - 07(?: - 35| - 81 - )| - 8901 - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8007354567</exampleNumber> - </tollFree> - <premiumRate> - <!-- 871 206, 900 665, 900 669, 901 810, 907 107, 907 155 with 10 digits. --> - <nationalNumberPattern> - (?: - 871206| - 90(?: - 066[59]| - 1810| - 71(?: - 07| - 55 - ) - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9018105678</exampleNumber> - </premiumRate> - <sharedCost> - <!-- 844 405, 844 442, 844 469, 844 703, 845 041, 845 800, 870 002 with 10 digits. --> - <nationalNumberPattern> - 8(?: - 4(?: - 4(?: - 4(?: - 05| - 42| - 69 - )| - 703 - )| - 5(?: - 041| - 800 - ) - )| - 70002 - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8447034567</exampleNumber> - </sharedCost> - <personalNumber> - <!-- 70 1511 with 10 digits. --> - <nationalNumberPattern>701511\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7015115678</exampleNumber> - </personalNumber> - <voip> - <!-- VoIP numbers as per GB. --> - <nationalNumberPattern>56\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5612345678</exampleNumber> - </voip> - <uan> - <!-- 300 735, 300 781, 308 901, 33d, 344 405, 344 442, 344 469, 344 703, 345 041, 345 800, - 370 002, 371 206, 55 with 10 digits. --> - <nationalNumberPattern> - 3(?: - 0(?: - 07(?: - 35| - 81 - )| - 8901 - )| - 3\d{4}| - 4(?: - 4(?: - 4(?: - 05| - 42| - 69 - )| - 703 - )| - 5(?: - 041| - 800 - ) - )| - 7(?: - 0002| - 1206 - ) - )\d{4}| - 55\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5512345678</exampleNumber> - </uan> - <shortCode> - <!-- http://www.jcra.je/cms3/v2/public/cmsChild.asp?pageID=1024&childID=1036 --> - <nationalNumberPattern> - 1(?: - 00| - 1(?: - 2| - 8\d{3} - )| - 23| - 4(?: - [14]| - 28| - 7\d - )| - 5\d| - 7(?: - 0[12]| - [128]| - 35? - )| - 808| - 9[135] - )| - 23[234]| - 999 - </nationalNumberPattern> - <possibleNumberPattern>\d{3,6}</possibleNumberPattern> - <exampleNumber>150</exampleNumber> - </shortCode> - </territory> - - <!-- Jamaica --> - <!-- http://www.itu.int/oth/T020200006C/en --> - <territory id="JM" countryCode="1" leadingDigits="876" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 876(?: - (?: - 5[0-26]| - 6\d - )\d{5}| - (?: - 7(?: - 0[2-689]| - [1-6]\d| - 8[056]| - 9[45] - )| - 9(?: - 0[1-8]| - 1[02378]| - [2-8]\d| - 9[2-468] - ) - )\d{4} - ) - </nationalNumberPattern> - <exampleNumber>8765123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 27, 28 and 31 as extra prefixes, as they have been found to be valid by sending - SMSs and looking at online number lookup sites. --> - <nationalNumberPattern> - 876(?: - (?: - 2[178]| - [348]\d| - 5[78] - )\d| - 7(?: - 0[07]| - 7\d| - 8[1-47-9]| - 9[0-36-9] - )| - 9(?: - [01]9| - 9[0579] - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8762101234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Jordan --> - <!-- http://www.trc.gov.jo/images/stories/pdf/NNP_ver200[1].pdf?lang=english --> - <!-- http://www.itu.int/oth/T020200006E/en --> - <!-- http://en.wikipedia.org/wiki/%2B962 --> - <territory id="JO" countryCode="962" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="(\d)(\d{3})(\d{4})"> - <leadingDigits> - [2356] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(7)(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>7[457-9]</leadingDigits> - <format>$1 $2 $3 $4 $5</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{5,6})"> - <leadingDigits> - 70| - [89] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[235-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Used the plan from www.trc.gov.jo since it is much more complete than the plan on the - ITU website. --> - <nationalNumberPattern>[2356][2-8]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>62001234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 7(?: - [1-8]\d| - 9[02-9] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>790123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90012345</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>85\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>85012345</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>70\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>700123456</exampleNumber> - </personalNumber> - <uan> - <!-- These numbers are Location Independent Services / Fixed cost according to - http://www.trc.gov.jo --> - <nationalNumberPattern> - 8(?: - 10| - [78]\d - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>87101234</exampleNumber> - </uan> - </territory> - - <!-- Japan --> - <!-- http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/fixed.html --> - <!-- http://www.numberingplans.com/?page=dialling&sub=areacodes&ac=JP --> - <territory id="JP" countryCode="81" internationalPrefix="010" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Toll-free numbers --> - <numberFormat pattern="(\d{3})(\d{3})(\d{3})"> - <leadingDigits> - (?: - 12| - 99 - )0 - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <!-- Some leading digits are explicitly reserved for a particular purpose. - We handle them first in this rule, and let the following rules ignore those exceptions. - Note: The rule here is not in the files we rely on when creating the other rules. - We would need to manually modify it if the Japanese goverment - decided to change the rule. - - (prefix): purpose - "50": IP phone - "90" and "80": Mobile phone - "70": PHS (Personal Handy-phone System, which has been used in Japan - with Non-3G, Japanese-specific protocol). - See also http://ja.wikipedia.org/wiki/PHS (Japanese) - --> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>[57-9]0</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <!-- The order of the reg-exps are important. - Examples (not all): - - "15": 15420 -> 154-20, 15472 -> 1547-2, 15410 -> 15-410, - - "22": 22200 -> 22-200, 22300 -> 22-300, 22320 -> 223-20, 22350 -> 22-350 - - "42": 42000 -> 4-2000, 42901 -> 4-2901, 42910 -> 42-910 - - "82": 82200 -> 82-200, 82020 -> 820-20, 82400 -> 82-400 - - "99": 99400 -> 99-400, 99430 -> 994-30, 99692 -> 9969-2, 99750 -> 997-50 - - "993": 99330 -> 993-30, 99331 -> 99-331, 99332 -> 993-32 - --> - <numberFormat pattern="(\d{4})(\d)(\d{4})"> - <leadingDigits> - 1(?: - 26| - 3[79]| - 4[56]| - 5[4-68]| - 6[3-5] - )| - 5(?: - 76| - 97 - )| - 499| - 746| - 8(?: - 3[89]| - 63| - 47| - 51 - )| - 9(?: - 49| - 80| - 9[16] - ) - </leadingDigits> - <leadingDigits> - 1(?: - 267| - 3(?: - 7[247]| - 9[278] - )| - 4(?: - 5[67]| - 66 - )| - 5(?: - 47| - 58| - 64| - 8[67] - )| - 6(?: - 3[245]| - 48| - 5[4-68] - ) - )| - 5(?: - 76| - 97 - )9| - 499[2468]| - 7468| - 8(?: - 3(?: - 8[78]| - 96 - )| - 636| - 477| - 51[24] - )| - 9(?: - 496| - 802| - 9(?: - 1[23]| - 69 - ) - ) - </leadingDigits> - <leadingDigits> - 1(?: - 267| - 3(?: - 7[247]| - 9[278] - )| - 4(?: - 5[67]| - 66 - )| - 5(?: - 47| - 58| - 64| - 8[67] - )| - 6(?: - 3[245]| - 48| - 5[4-68] - ) - )| - 5(?: - 769| - 979[2-69] - )| - 499[2468]| - 7468| - 8(?: - 3(?: - 8[78]| - 96[2457-9] - )| - 636[2-57-9]| - 477| - 51[24] - )| - 9(?: - 496| - 802| - 9(?: - 1[23]| - 69 - ) - ) - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{4})"> - <leadingDigits> - 1(?: - 2[3-6]| - 3[3-9]| - 4[2-6]| - 5[2-8]| - [68][2-7]| - 7[2-689]| - 9[1-578] - )| - 2(?: - 2[034-9]| - 3[3-58]| - 4[0-468]| - 5[04-8]| - 6[013-8]| - 7[06-9]| - 8[02-57-9]| - 9[13] - )| - 4(?: - 2[28]| - 3[689]| - 6[035-7]| - 7[05689]| - 80| - 9[3-5] - )| - 5(?: - 3[1-36-9]| - 4[4578]| - 5[013-8]| - 6[1-9]| - 7[2-8]| - 8[14-7]| - 9[4-9] - )| - 7(?: - 2[15]| - 3[5-9]| - 4[02-9]| - 6[135-8]| - 7[0-4689]| - 9[014-9] - )| - 8(?: - 2[49]| - 3[3-8]| - 4[5-8]| - 5[2-9]| - 6[35-9]| - 7[579]| - 8[03-579]| - 9[2-8] - )| - 9(?: - [23]0| - 4[02-46-9]| - 5[0245-79]| - 6[4-9]| - 7[2-47-9]| - 8[02-7]| - 9[3-7] - ) - </leadingDigits> - <leadingDigits> - 1(?: - 2[3-6]| - 3[3-9]| - 4[2-6]| - 5(?: - [236-8]| - [45][2-69] - )| - [68][2-7]| - 7[2-689]| - 9[1-578] - )| - 2(?: - 2(?: - [04-9]| - 3[23] - )| - 3[3-58]| - 4[0-468]| - 5(?: - 5[78]| - 7[2-4]| - [0468][2-9] - )| - 6(?: - [0135-8]| - 4[2-5] - )| - 7(?: - [0679]| - 8[2-7] - )| - 8(?: - [024578]| - 3[25-9]| - 9[6-9] - )| - 9(?: - 11| - 3[2-4] - ) - )| - 4(?: - 2(?: - 2[2-9]| - 8[237-9] - )| - 3[689]| - 6[035-7]| - 7(?: - [059][2-8]| - [68] - )| - 80| - 9[3-5] - )| - 5(?: - 3[1-36-9]| - 4[4578]| - 5[013-8]| - 6[1-9]| - 7[2-8]| - 8[14-7]| - 9(?: - [89][2-8]| - [4-7] - ) - )| - 7(?: - 2[15]| - 3[5-9]| - 4[02-9]| - 6[135-8]| - 7[0-4689]| - 9(?: - [017-9]| - 4[6-8]| - 5[2-478]| - 6[2-589] - ) - )| - 8(?: - 2(?: - 4[4-8]| - 9[2-8] - )| - 3(?: - 7[2-56]| - [3-6][2-9]| - 8[2-5] - )| - 4[5-8]| - 5[2-9]| - 6(?: - [37]| - 5[4-7]| - 6[2-9]| - 8[2-8]| - 9[236-9] - )| - 7[579]| - 8[03-579]| - 9[2-8] - )| - 9(?: - [23]0| - 4[02-46-9]| - 5[0245-79]| - 6[4-9]| - 7[2-47-9]| - 8[02-7]| - 9(?: - 3[34]| - [4-7] - ) - ) - </leadingDigits> - <leadingDigits> - 1(?: - 2[3-6]| - 3[3-9]| - 4[2-6]| - 5(?: - [236-8]| - [45][2-69] - )| - [68][2-7]| - 7[2-689]| - 9[1-578] - )| - 2(?: - 2(?: - [04-9]| - 3[23] - )| - 3[3-58]| - 4[0-468]| - 5(?: - 5[78]| - 7[2-4]| - [0468][2-9] - )| - 6(?: - [0135-8]| - 4[2-5] - )| - 7(?: - [0679]| - 8[2-7] - )| - 8(?: - [024578]| - 3[25-9]| - 9[6-9] - )| - 9(?: - 11| - 3[2-4] - ) - )| - 4(?: - 2(?: - 2[2-9]| - 8[237-9] - )| - 3[689]| - 6[035-7]| - 7(?: - [059][2-8]| - [68] - )| - 80| - 9[3-5] - )| - 5(?: - 3[1-36-9]| - 4[4578]| - 5[013-8]| - 6[1-9]| - 7[2-8]| - 8[14-7]| - 9(?: - [89][2-8]| - [4-7] - ) - )| - 7(?: - 2[15]| - 3[5-9]| - 4[02-9]| - 6[135-8]| - 7[0-4689]| - 9(?: - [017-9]| - 4[6-8]| - 5[2-478]| - 6[2-589] - ) - )| - 8(?: - 2(?: - 4[4-8]| - 9(?: - [3578]| - 20| - 4[04-9]| - 6[56] - ) - )| - 3(?: - 7(?: - [2-5]| - 6[0-59] - )| - [3-6][2-9]| - 8[2-5] - )| - 4[5-8]| - 5[2-9]| - 6(?: - [37]| - 5(?: - [467]| - 5[014-9] - )| - 6(?: - [2-8]| - 9[02-69] - )| - 8[2-8]| - 9(?: - [236-8]| - 9[23] - ) - )| - 7[579]| - 8[03-579]| - 9[2-8] - )| - 9(?: - [23]0| - 4[02-46-9]| - 5[0245-79]| - 6[4-9]| - 7[2-47-9]| - 8[02-7]| - 9(?: - 3(?: - 3[02-9]| - 4[0-24689] - )| - 4[2-69]| - [5-7] - ) - ) - </leadingDigits> - <leadingDigits> - 1(?: - 2[3-6]| - 3[3-9]| - 4[2-6]| - 5(?: - [236-8]| - [45][2-69] - )| - [68][2-7]| - 7[2-689]| - 9[1-578] - )| - 2(?: - 2(?: - [04-9]| - 3[23] - )| - 3[3-58]| - 4[0-468]| - 5(?: - 5[78]| - 7[2-4]| - [0468][2-9] - )| - 6(?: - [0135-8]| - 4[2-5] - )| - 7(?: - [0679]| - 8[2-7] - )| - 8(?: - [024578]| - 3[25-9]| - 9[6-9] - )| - 9(?: - 11| - 3[2-4] - ) - )| - 4(?: - 2(?: - 2[2-9]| - 8[237-9] - )| - 3[689]| - 6[035-7]| - 7(?: - [059][2-8]| - [68] - )| - 80| - 9[3-5] - )| - 5(?: - 3[1-36-9]| - 4[4578]| - 5[013-8]| - 6[1-9]| - 7[2-8]| - 8[14-7]| - 9(?: - [89][2-8]| - [4-7] - ) - )| - 7(?: - 2[15]| - 3[5-9]| - 4[02-9]| - 6[135-8]| - 7[0-4689]| - 9(?: - [017-9]| - 4[6-8]| - 5[2-478]| - 6[2-589] - ) - )| - 8(?: - 2(?: - 4[4-8]| - 9(?: - [3578]| - 20| - 4[04-9]| - 6(?: - 5[25]| - 60 - ) - ) - )| - 3(?: - 7(?: - [2-5]| - 6[0-59] - )| - [3-6][2-9]| - 8[2-5] - )| - 4[5-8]| - 5[2-9]| - 6(?: - [37]| - 5(?: - [467]| - 5[014-9] - )| - 6(?: - [2-8]| - 9[02-69] - )| - 8[2-8]| - 9(?: - [236-8]| - 9[23] - ) - )| - 7[579]| - 8[03-579]| - 9[2-8] - )| - 9(?: - [23]0| - 4[02-46-9]| - 5[0245-79]| - 6[4-9]| - 7[2-47-9]| - 8[02-7]| - 9(?: - 3(?: - 3[02-9]| - 4[0-24689] - )| - 4[2-69]| - [5-7] - ) - ) - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits> - 1| - 2(?: - 23| - 5[5-89]| - 64| - 78| - 8[39]| - 91 - )| - 4(?: - 2[2689]| - 64| - 7[347] - )| - 5(?: - [2-589]| - 39 - )| - 60| - 8(?: - [46-9]| - 3[279]| - 2[124589] - )| - 9(?: - [235-8]| - 93 - ) - </leadingDigits> - <leadingDigits> - 1| - 2(?: - 23| - 5(?: - [57]| - [68]0| - 9[19] - )| - 64| - 78| - 8[39]| - 917 - )| - 4(?: - 2(?: - [68]| - 20| - 9[178] - )| - 64| - 7[347] - )| - 5(?: - [2-589]| - 39[67] - )| - 60| - 8(?: - [46-9]| - 3[279]| - 2[124589] - )| - 9(?: - [235-8]| - 93[34] - ) - </leadingDigits> - <leadingDigits> - 1| - 2(?: - 23| - 5(?: - [57]| - [68]0| - 9(?: - 17| - 99 - ) - )| - 64| - 78| - 8[39]| - 917 - )| - 4(?: - 2(?: - [68]| - 20| - 9[178] - )| - 64| - 7[347] - )| - 5(?: - [2-589]| - 39[67] - )| - 60| - 8(?: - [46-9]| - 3[279]| - 2[124589] - )| - 9(?: - [235-8]| - 93(?: - 31| - 4 - ) - ) - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{4})"> - <leadingDigits> - 2(?: - 9[14-79]| - 74| - [34]7| - [56]9 - )| - 82| - 993 - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{4})(\d{4})"> - <leadingDigits> - 3| - 4(?: - 2[09]| - 7[01] - )| - 6[1-9] - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits>[2479]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{9,10}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1(?: - 1[236-8]| - 2[3-6]| - 3[3-9]| - 4[2-6]| - [58][2-8]| - 6[2-7]| - 7[2-9]| - 9[1-8] - )| - 2[2-9]\d| - [36][1-9]\d| - 4(?: - 6[0235-8]| - [2-578]\d| - 9[2-59] - )| - 5(?: - 6[1-9]| - 7[2-8]| - [2-589]\d - )| - 7(?: - 3[4-9]| - 4[02-9]| - [25-9]\d - )| - 8(?: - 3[2-9]| - 4[5-9]| - 5[1-9]| - 8[03-9]| - [2679]\d - )| - 9(?: - [679][1-9]| - [2-58]\d - ) - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>312345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[7-9]0\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7012345678</exampleNumber> - </mobile> - <!-- Toll free and premium rate numbers are not clearly defined in the official Japanese - number plan, and do not seem to have been standardized. The information below is - collected from searching the web. --> - <tollFree> - <nationalNumberPattern>120\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>120123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>990\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>990123456</exampleNumber> - </premiumRate> - <!-- Uncertain on number length allowed here. --> - <personalNumber> - <nationalNumberPattern>60\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>601234567</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>50\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5012345678</exampleNumber> - </voip> - </territory> - - <!-- Kenya --> - <!-- http://www.cck.go.ke/licensing/numbering/plan.html --> - <territory id="KE" countryCode="254" internationalPrefix="000" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4,7})"> - <leadingDigits> - [2-6]| - 91 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{6,7})"> - <leadingDigits> - [78]| - 90 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{6,10}</nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 20| - 4[0-6]| - 5\d| - 6[0-24-9] - )\d{4,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{4,9}</possibleNumberPattern> - <exampleNumber>202012345</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 716 after successful delivery of SMSs. --> - <nationalNumberPattern> - 7(?: - 1[0-6]| - 2\d| - 3[2-8]| - 5[0-2]| - 7[023] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>712123456</exampleNumber> - </mobile> - <!-- There is no document that has the information on the actual length of premium rates and - tollfree numbers. The information below comes from research on existing numbers. --> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 88 - )\d{6,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 9(?: - 00| - 1 - )\d{6,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Kyrgyzstan --> - <!-- http://www.itu.int/oth/T0202000074/en --> - <territory id="KG" countryCode="996" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})(\d{3})"> - <leadingDigits> - 31[25]| - [5-8] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{5})"> - <leadingDigits> - 3(?: - 1[36]| - [2-9] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[356-8]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3(?: - 1(?: - 2\d| - 3[1-9]| - 52| - 6[1-8] - )| - 2(?: - 22| - 3[0-479]| - 6[0-7] - )| - 4(?: - 22| - 5[6-9]| - 6[0-4] - )| - 5(?: - 22| - 3[4-7]| - 59| - 6[0-5] - )| - 6(?: - 22| - 5[35-7]| - 6[0-3] - )| - 7(?: - 22| - 3[468]| - 4[1-8]| - 59| - 6\d| - 7[5-7] - )| - 9(?: - 22| - 4[1-7]| - 6[0-8] - ) - )| - 6(?: - 09| - 12| - 2[2-4] - )\d - )\d{5} - </nationalNumberPattern> - <exampleNumber>312123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Added 705 since SMS messages have been successfully sent to numbers with this prefix. - --> - <nationalNumberPattern> - 5[124-7]\d{7}| - 7(?: - 0[05]| - 7\d - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>700123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <!-- No premiumRate information can be found. --> - </territory> - - <!-- Cambodia --> - <!-- http://www.itu.int/oth/T0202000023/en --> - <territory id="KH" countryCode="855" internationalPrefix="00[178]" - nationalPrefix="0"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 1\d[1-9]| - [2-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(1[89]00)(\d{3})(\d{3})"> - <leadingDigits>1[89]0</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2[3-6]| - 3[2-6]| - 4[2-4]| - [5-7][2-5] - )[2-47-9]\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>23456789</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 171, 13X, 80[89], 85[2-689] and 921 prefixes as SMS messages could be - successfully delivered to these mobile numbers. --> - <nationalNumberPattern> - (?: - (?: - 1[0-35-9]| - 9[1-49] - )[1-9]| - 8(?: - 0[89]| - 5[2-689] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>91234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 1800(?: - 1\d| - 2[09] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 1900(?: - 1\d| - 2[09] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Kiribati --> - <!-- http://www.itu.int/oth/T0202000071/en --> - <territory id="KI" countryCode="686" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{5})"> - <format>$1</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-689]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{5}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [234]\d| - 50| - 8[1-5] - )\d{3} - </nationalNumberPattern> - <exampleNumber>31234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[69]\d{4}</nationalNumberPattern> - <exampleNumber>61234</exampleNumber> - </mobile> - <shortCode> - <nationalNumberPattern> - 10(?: - [0-8]| - 5[01259] - )| - 99[234] - </nationalNumberPattern> - <possibleNumberPattern>\d{3,4}</possibleNumberPattern> - <exampleNumber>992</exampleNumber> - </shortCode> - </territory> - - <!-- Comoros --> - <!-- http://www.itu.int/oth/T020200002D/en --> - <territory id="KM" countryCode="269" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d)(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[37]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- CDMA phones are included here, as they are considered as an extension of fixed line: - http://www.comorestelecom.km/presentationcdma.php --> - <nationalNumberPattern> - 7(?: - 6[0-37-9]| - 7[0-57-9] - )\d{4} - </nationalNumberPattern> - <exampleNumber>7712345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>3[23]\d{5}</nationalNumberPattern> - <exampleNumber>3212345</exampleNumber> - </mobile> - </territory> - - <!-- Saint Kitts and Nevis --> - <!-- http://www.itu.int/oth/T02020000B0/en --> - <territory id="KN" countryCode="1" leadingDigits="869" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 869(?: - 2(?: - 29| - 36 - )| - 4(?: - 6[5-9]| - 70 - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>8692361234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 869(?: - 5(?: - 5[6-8]| - 6[5-7] - )| - 66[2-9]| - 76[2-5] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8695561234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Korea, Dem. People's Rep. of --> - <territory id="KP" countryCode="850" internationalPrefix="00" - nationalPrefix="0"> - </territory> - - <!-- Korea (Rep. of) --> - <!-- http://www.itu.int/oth/T0202000072/en --> - <!-- http://en.wikipedia.org/wiki/%2B82 --> - <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2349 --> - <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2240 --> - <!-- http://www.telecentro.co.kr/sub/index.php?job=detail&ebcf_id=faq&page=1&mid=0503&eb_seq=36 --> - <!-- Exceptions : - internationalPrefix - 0031, 0033, 0071, 0073 - Special services of KT and DACOM, ignorable - nationalPrefix - 1[4-6]XX-YYYY - Country-wide common number services, display as it is without hyphens --> - <territory id="KR" countryCode="82" internationalPrefix="00(?:[124-68]|[37]\d{2})" - nationalPrefix="0" nationalPrefixForParsing="0(8[1-46-8]|85\d{2})?" - nationalPrefixFormattingRule="$NP$FG" carrierCodeFormattingRule="$NP$CC-$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits> - 1(?: - 0| - 1[19]| - [69]9| - 5[458] - )| - [57]0 - </leadingDigits> - <leadingDigits> - 1(?: - 0| - 1[19]| - [69]9| - 5(?: - 44| - 59| - 8 - ) - )| - [57]0 - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits> - 1(?: - [169][2-8]| - [78]| - 5[1-4] - )| - [68]0| - [3-9][1-9][2-9] - </leadingDigits> - <leadingDigits> - 1(?: - [169][2-8]| - [78]| - 5(?: - [1-3]| - 4[56] - ) - )| - [68]0| - [3-9][1-9][2-9] - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d)(\d{4})"> - <leadingDigits>131</leadingDigits> - <leadingDigits>1312</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{4})"> - <leadingDigits>131</leadingDigits> - <leadingDigits>131[13-9]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>13[2-9]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{3})(\d{4})"> - <leadingDigits>30</leadingDigits> - <format>$1-$2-$3-$4</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{4})(\d{4})"> - <leadingDigits> - 2(?: - [26]| - 3[0-467] - ) - </leadingDigits> - <leadingDigits> - 2(?: - [26]| - 3(?: - 01| - 1[45]| - 2[17-9]| - 39| - 4| - 6[67]| - 7[078] - ) - ) - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3})(\d{4})"> - <leadingDigits> - 2(?: - 3[0-35-9]| - [457-9] - ) - </leadingDigits> - <leadingDigits> - 2(?: - 3(?: - 0[02-9]| - 1[0-36-9]| - 2[02-6]| - 3[0-8]| - 6[0-589]| - 7[1-69]| - [589] - )| - [457-9] - ) - </leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3,4})"> - <leadingDigits>21[0-46-9]</leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3,4})"> - <leadingDigits>[3-9][1-9]1</leadingDigits> - <leadingDigits> - [3-9][1-9]1(?: - [0-46-9] - ) - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - <!-- Company numbers. --> - <numberFormat pattern="(\d{4})(\d{4})" - nationalPrefixFormattingRule="$FG"> - <leadingDigits> - 1(?: - 5[46-9]| - 6[04678] - ) - </leadingDigits> - <leadingDigits> - 1(?: - 5(?: - 44| - 66| - 77| - 88| - 99 - )| - 6(?: - 00| - 44| - 6[16]| - 70| - 88 - ) - ) - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [1-79]\d{3,9}| - 8\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2| - [34][1-3]| - 5[1-5]| - 6[1-4] - )(?: - 1\d{2,3}| - [2-9]\d{6,7} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>1[0-25-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>1023456789</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - <!-- The information below is provided by a Korean person. --> - <premiumRate> - <nationalNumberPattern>60[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>602345678</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>50\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5012345678</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>70\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7012345678</exampleNumber> - </voip> - <uan> - <nationalNumberPattern> - 1(?: - 5(?: - 44| - 66| - 77| - 88| - 99 - )| - 6(?: - 00| - 44| - 6[16]| - 70| - 88 - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>15441234</exampleNumber> - </uan> - </territory> - - <!-- Kuwait --> - <!-- http://www.itu.int/oth/T0202000073/en --> - <territory id="KW" countryCode="965" internationalPrefix="00" - nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Format is from ITU. --> - <numberFormat pattern="(\d{4})(\d{3,4})"> - <leadingDigits>[1269]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(5[05]\d)(\d{5})"> - <leadingDigits>5</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[12569]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 18\d| - 2(?: - [23]\d{2}| - 4[1-35-9]\d| - 5(?: - 0[034]| - [2-46]\d| - 5[1-3]| - 7[1-7] - ) - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>22345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 5(?: - 0[0-2]| - 5\d - )| - 6(?: - 0[034679]| - 5[015-9]| - 6\d| - 7[067]| - 99 - )| - 9(?: - 0[09]| - 4[049]| - 66| - [79]\d - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>50012345</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - <shortCode> - <nationalNumberPattern>1\d{2}</nationalNumberPattern> - <possibleNumberPattern>\d{3}</possibleNumberPattern> - <exampleNumber>177</exampleNumber> - </shortCode> - </territory> - - <!-- Cayman Islands --> - <!-- http://www.itu.int/oth/T0202000027/en --> - <territory id="KY" countryCode="1" leadingDigits="345" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[3589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 345(?: - 2(?: - 22| - 44 - )| - 444| - 6(?: - 23| - 38| - 40 - )| - 7(?: - 6[6-9]| - 77 - )| - 8(?: - 00| - 1[45]| - 25| - 4[89]| - 88 - )| - 9(?: - 14| - 4[035-9] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>3452221234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 345(?: - 32[3-79]| - 5(?: - 1[467]| - 2[5-7]| - 4[5-9] - )| - 9(?: - 1[679]| - 2[4-9]| - 3[89] - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>3453231234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 900[2-9]\d{6}| - 345976\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Kazakhstan --> - <!-- http://www.itu.int/oth/T020200006F/en --> - <territory id="KZ" countryCode="7" internationalPrefix="8~10" - nationalPrefix="8" nationalPrefixFormattingRule="$NP$FG"> - <!-- Formatting rules obtained from Russia. --> - <generalDesc> - <nationalNumberPattern> - (?: - 7\d{2}| - 80[09] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </generalDesc> - <noInternationalDialling> - <nationalNumberPattern>751\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7511234567</exampleNumber> - </noInternationalDialling> - <fixedLine> - <!-- VSAT numbers are also included here. --> - <nationalNumberPattern> - 7(?: - 1(?: - 0(?: - [23]\d| - 4[023]| - 59| - 63 - )| - 1(?: - [23]\d| - 4[0-79]| - 59 - )| - 2(?: - [23]\d| - 59 - )| - 3(?: - 2\d| - 3[1-79]| - 4[0-35-9]| - 59 - )| - 4(?: - 2\d| - 3[013-79]| - 4[0-8]| - 5[1-79] - )| - 5(?: - 2\d| - 3[1-8]| - 4[1-7]| - 59 - )| - 6(?: - 2\d| - [34]\d| - 5[19]| - 61 - )| - 72\d| - 8(?: - [27]\d| - 3[1-46-9]| - 4[0-5]| - ) - )| - 2(?: - 1(?: - [23]\d| - 4[46-9]| - 5[3469] - )| - 2(?: - 2\d| - 3[0679]| - 46| - 5[12679]| - )| - 3(?: - [234]\d| - 5[139]| - )| - 4(?: - 2\d| - 3[1235-9]| - 59 - )| - 5(?: - [23]\d| - 4[01246-8]| - 59| - 61 - )| - 6(?: - 2\d| - 3[1-9]| - 4[0-4]| - 59 - )| - 7(?: - [23]\d| - 40| - 5[279]| - 7\d - )| - 8(?: - [23]\d| - 4[0-3]| - 59 - )| - 9(?: - 2\d| - 3[124578]| - 59 - ) - )| - 3622 - )\d{5} - </nationalNumberPattern> - <exampleNumber>7123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 7(?: - 0[01257]\d{2}| - 6[02-4]\d{2}| - 7[157]\d{2} - )\d{5} - </nationalNumberPattern> - <exampleNumber>7710009998</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>809\d{7}</nationalNumberPattern> - <exampleNumber>8091234567</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>751\d{7}</nationalNumberPattern> - <exampleNumber>7511234567</exampleNumber> - </voip> - </territory> - - <!-- Lao People's Dem. Rep. --> - <!-- http://www.itu.int/oth/T0202000075/en --> - <territory id="LA" countryCode="856" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(20)(\d{2})(\d{3})(\d{3})"> - <leadingDigits>20</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([2-57]\d)(\d{3})(\d{3})"> - <leadingDigits> - 21| - [3-57] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-57]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [2-57]1| - 54 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>21212862</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 20(?: - 2[23]| - 5[4-6]| - 77| - 9[89] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2023123456</exampleNumber> - </mobile> - <!-- No information on other types of phone numbers for Lao P.D.R. has been found. --> - </territory> - - <!-- Lebanon --> - <!-- http://www.itu.int/oth/T0202000077/en --> - <!-- http://en.wikipedia.org/wiki/%2B961 --> - <territory id="LB" countryCode="961" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d)(\d{3})(\d{3})"> - <leadingDigits> - [13-6]| - 7(?: - [2-57-9]| - 62)| - [89][2-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([7-9]\d)(\d{3})(\d{3})"> - <leadingDigits> - [89][01]| - 7(?: - [01]| - 6[67]) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[13-9]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [14-6]\d{2}| - 7(?: - [2-57-9]\d| - 62)| - [89][2-9]\d - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>1123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 3\d| - 7(?: - [01]\d| - 6[67] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>71123456</exampleNumber> - </mobile> - <premiumRate> - <nationalNumberPattern>9[01]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>8[01]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80123456</exampleNumber> - </sharedCost> - </territory> - - <!-- Saint Lucia --> - <!-- http://www.itu.int/oth/T02020000B1/en --> - <territory id="LC" countryCode="1" leadingDigits="758" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5789]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 758(?: - 234| - 4(?: - 5[0-9]| - 6[2-9]| - 8[0-2] - )| - 638| - 758 - )\d{4} - </nationalNumberPattern> - <exampleNumber>7582345678</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 721 and 722 as these prefixes are found widely on the internet and SMS messages - have been successfully delivered to these numbers. --> - <nationalNumberPattern> - 758(?: - 28[4-7]| - 384| - 4(?: - 6[01]| - 8[4-9] - )| - 5(?: - 1[89]| - 20| - 84 - )| - 7(?: - 1[2-9]| - 2[0-4] - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7582845678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Liechtenstein --> - <!-- http://www.llv.li/amtsstellen/llv-ak-nummerierung.htm --> - <!-- http://www.telecom.li has some different patterns for tollfree and shared cost numbers - - look at "Mehrwertnummer". --> - <territory id="LI" countryCode="423" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{2})(\d{2})"> - <leadingDigits> - [23]| - 7[4-9]| - 87 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(6\d)(\d{3})(\d{3})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([7-9]0\d)(\d{2})(\d{2})"> - <leadingDigits>[7-9]0</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 0800 and 0900 are valid prefixes, but Liechtenstein - doesn't have a general national prefix, so we include it manually here - when formatting. We can tell whether it needs one by number length. --> - <numberFormat pattern="([89]0\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[89]0</leadingDigits> - <format>0$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - 66| - 80| - 90 - )\d{7}| - [237-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Regular Cost services are included here as well. --> - <nationalNumberPattern> - (?: - 2(?: - 17| - 3\d| - 6[02-58]| - 96 - )| - 3(?: - 02| - 7[01357]| - 8[048]| - 9[0269] - )| - 870 - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>2345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 66(?: - [0178][0-4]| - 2[025-9]| - [36]\d| - 4[129]| - 5[45]| - 9[019] - )\d{5}| - 7(?: - 4[2-59]| - 56| - [6-9]\d - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>661234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 80(?: - 0(?: - 07| - 2[238]| - 79| - \d{4} - )| - 9\d{2} - )\d{2} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>8002222</exampleNumber> - </tollFree> - <sharedCost> - <nationalNumberPattern> - 90(?: - 0(?: - 2[278]| - 79| - \d{4} - )| - 1(?: - 23| - \d{4} - )| - 6(?: - 66| - \d{4} - ) - )\d{2} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>9002222</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>701\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>7011234</exampleNumber> - </personalNumber> - </territory> - - <!-- Sri Lanka --> - <!-- http://en.wikipedia.org/wiki/%2B94 --> - <!-- http://www.itu.int/oth/T02020000C3/en --> - <territory id="LK" countryCode="94" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{1})(\d{6})"> - <leadingDigits>[1-689]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits>7</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [189]1| - 2[13-7]| - 3[1-8]| - 4[157]| - 5[12457]| - 6[35-7] - )[2-57]\d{6} - </nationalNumberPattern> - <exampleNumber>112345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[12578]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>712345678</exampleNumber> - </mobile> - </territory> - - <!-- Liberia --> - <!-- http://www.itu.int/oth/T0202000079/en --> - <territory id="LR" countryCode="231" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Formatting from Ministry of Agriculture, - http://www.moa.gov.lr/content.php?sub=Email&?related=Contacts --> - <numberFormat pattern="([279]\d)(\d{3})(\d{3})"> - <leadingDigits>[279]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([4-6])(\d{3})(\d{3})"> - <leadingDigits>[4-6]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - [279]\d| - [4-6] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <!-- Added 66, 67 and 68 as prefixes because of online numbers fitting this pattern. --> - <nationalNumberPattern> - (?: - 4[67]| - 5\d| - 6[4-8]| - 7\d{2} - )\d{5} - </nationalNumberPattern> - <exampleNumber>4612345</exampleNumber> - </mobile> - <premiumRate> - <!-- Telemedia service is listed under premium rate. --> - <nationalNumberPattern>90\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Lesotho --> - <!-- http://www.itu.int/oth/T0202000078/en --> - <territory id="LS" countryCode="266" internationalPrefix="00"> - <availableFormats> - <!-- Formatting following yellow pages: www.yellowpages.co.ls --> - <numberFormat pattern="(\d{4})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2568]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2\d{7}</nationalNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[56]\d{7}</nationalNumberPattern> - <exampleNumber>50123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800[256]\d{4}</nationalNumberPattern> - <exampleNumber>80021234</exampleNumber> - </tollFree> - </territory> - - <!-- Lithuania --> - <!-- http://www.itu.int/oth/T020200007C/en --> - <territory id="LT" countryCode="370" internationalPrefix="00" - nationalPrefix="8" nationalPrefixFormattingRule="$NP $FG"> - <availableFormats> - <!-- Two-digit area codes --> - <numberFormat pattern="([34]\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits> - 37| - 4(?: - 1| - 5[45]| - 6[2-4] - ) - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <!-- Three-digit area codes --> - <numberFormat pattern="([3-689]\d{2})(\d{2})(\d{3})"> - <leadingDigits> - 3[148]| - 4(?: - [24]| - 6[09] - )| - 5(?: - [0189]| - 28 - )| - [689] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(5)(2[0-79]\d)(\d{4})"> - <leadingDigits>52[0-79]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3[1478]| - 4[124-6]| - 52 - )\d{6} - </nationalNumberPattern> - <exampleNumber>31234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6\d{7}</nationalNumberPattern> - <exampleNumber>61234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[0239]\d{5}</nationalNumberPattern> - <exampleNumber>90012345</exampleNumber> - </premiumRate> - </territory> - - <!-- Luxembourg --> - <!-- http://www.ilr.public.lu/communications_electroniques/numerotation/index.html - --> - <territory id="LU" countryCode="352" internationalPrefix="00" - nationalPrefixForParsing="(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\d)" - carrierCodeFormattingRule="$CC $FG"> - <availableFormats> - <!-- Patterns overlap because of variable number length. --> - <numberFormat pattern="(\d{2})(\d{3})"> - <leadingDigits> - [23-5]| - 7[1-9]| - [89](?: - [1-9]| - 0[2-9] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})"> - <leadingDigits> - [23-5]| - 7[1-9]| - [89](?: - [1-9]| - 0[2-9] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{3})"> - <leadingDigits>20</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- The pattern for 7-digit numbers starting with 20 here will never be reached - but since - we want this pattern to apply for 8-digit numbers with a 20 prefix, we include 20 in - the leading digits. This is also done for 9-10 digit numbers starting with 20 below. - --> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{1,2})"> - <leadingDigits> - 2(?: - [0367]| - 4[3-8] - ) - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{3})"> - <leadingDigits>20</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})(\d{1,2})"> - <leadingDigits> - 2(?: - [0367]| - 4[3-8] - ) - </leadingDigits> - <format>$1 $2 $3 $4 $5</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{1,4})"> - <leadingDigits> - 2(?: - [12589]| - 4[12] - )| - [3-5]| - 7[1-9]| - [89](?: - [1-9]| - 0[2-9] - ) - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{3})"> - <leadingDigits> - [89]0[01]| - 70 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{3})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <!-- The country-code is an impossible number prefix, so has been excluded here. This is - necessary since the numbers have a variable number length. --> - <nationalNumberPattern> - [24-9]\d{3,10}| - 3(?: - [0-46-9]\d{2,9}| - 5[013-9]\d{1,8} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{4,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Note that numbers starting with 2[367] can be a maximum of 10 digits - all others a - maximum of 11. --> - <nationalNumberPattern> - (?: - 2(?: - 2\d{1,2}| - 3[2-9]| - [67]\d| - 4[1-8]\d?| - 5[1-5]\d?| - 9[0-24-9]\d? - )| - 3(?: - [059][05-9]| - [13]\d| - [26][015-9]| - 4[0-26-9]| - 7[0-389]| - 8[08] - )\d?| - 4\d{2,3}| - 5(?: - [01458]\d| - [27][0-69]| - 3[0-3]| - [69][0-7] - )\d?| - 7(?: - 1[019]| - 2[05-9]| - 3[05]| - [45][07-9]| - [679][089]| - 8[06-9] - )\d?| - 8(?: - 0[2-9]| - 1[0-36-9]| - 3[3-9]| - [469]9| - [58][7-9]| - 7[89] - )\d?| - 9(?: - 0[89]| - 2[0-49]| - 37| - 49| - 5[0-27-9]| - 7[7-9]| - 9[0-478] - )\d? - )\d{1,7} - </nationalNumberPattern> - <exampleNumber>27123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6[269][18]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>628123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[01]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90012345</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>801\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80112345</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>70\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>70123456</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>20\d{2,8}</nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - <exampleNumber>2012345</exampleNumber> - </voip> - <shortCode> - <nationalNumberPattern> - 1(?: - 1[23]| - 2\d{3} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,5}</possibleNumberPattern> - <exampleNumber>12123</exampleNumber> - </shortCode> - </territory> - - <!-- Latvia --> - <!-- http://www.itu.int/oth/T0202000076/en --> - <territory id="LV" countryCode="371" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([2689]\d)(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2689]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>6\d{7}</nationalNumberPattern> - <exampleNumber>61234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>2\d{7}</nationalNumberPattern> - <exampleNumber>21234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{6}</nationalNumberPattern> - <exampleNumber>80123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d{6}</nationalNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Libya (Soc. People’s Libyan Arab Jamahiriya) --> - <!-- Status as of 21 Jan 2011: a lot of outdated information on the web including on wikipedia - and itu.int. The new area codes are on the Arabic website of the main telecommunication - operator (Hatef Libya). A new mobile operator Aljeel Aljadeed for Technology will start - using 096 (they are allowing customers to register numbers currently), so their code has - also been added. --> - <!-- http://hlc.ly/price.php --> - <territory id="LY" countryCode="218" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([25679]\d)(\d{7})"> - <format>$1-$2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[25679]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2[1345]| - 5[1347]| - 6[123479]| - 71 - )\d{7} - </nationalNumberPattern> - <exampleNumber>212345678</exampleNumber> - </fixedLine> - <mobile> - <!-- The prefix 094 has been added on the strength of numbers found online, and numbers - where SMS messages have been apparently successfully received. --> - <nationalNumberPattern>9[1-6]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>912345678</exampleNumber> - </mobile> - </territory> - - <!-- Morocco --> - <!-- http://www.itu.int/oth/T0202000090/en --> - <!-- http://en.wikipedia.org/wiki/+212 --> - <territory id="MA" countryCode="212" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([56]\d{2})(\d{6})"> - <leadingDigits> - 5(?: - 2[015-7]| - 3[0-4] - )| - 6 - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="([58]\d{3})(\d{5})"> - <leadingDigits> - 5(?: - 2[2-489]| - 3[5-9] - )| - 892 - </leadingDigits> - <leadingDigits> - 5(?: - 2(?: - [2-48]| - 90 - )| - 3(?: - [5-79]| - 80 - ) - )| - 892 - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(5\d{4})(\d{4})"> - <leadingDigits> - 5(?: - 29| - 38 - ) - </leadingDigits> - <leadingDigits> - 5(?: - 29| - 38 - )[89] - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(8[09])(\d{7})"> - <leadingDigits> - 8(?: - 0| - 9[013-9] - ) - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[5689]\d{8}</nationalNumberPattern> - <!-- Closed numbering plan. --> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 5(?: - 2(?: - (?: - [015-7]\d| - 2[2-9]| - 3[2-57]| - 4[2-8]| - 8[235-9]| - )\d| - 9(?: - 0\d| - [89]0 - ) - )| - 3(?: - (?: - [0-4]\d| - [57][2-9]| - 6[235-8]| - 9[3-9] - )\d| - 8(?: - 0\d| - [89]0 - ) - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>520123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 6(?: - 0[06]| - [14-7]\d| - 2[236]| - 33| - 99 - )\d{6} - </nationalNumberPattern> - <exampleNumber>650123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>89\d{7}</nationalNumberPattern> - <exampleNumber>891234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Monaco --> - <!-- http://www.itu.int/oth/T020200008D/en --> - <!-- We support Kosovo mobile numbers (044, 045) with a Monaco country-code here, as we do not - support Kosovo at the moment. Kosovo seems to use a variety of country codes currently. --> - <territory id="MC" countryCode="377" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Following formatting found online rather than in the ITU document example. --> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{3})"> - <leadingDigits>4</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(6)(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2 $3 $4 $5</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[4689]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - </generalDesc> - <noInternationalDialling> - <nationalNumberPattern>8\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </noInternationalDialling> - <fixedLine> - <!-- Restricted to this as no numbers with the prefix of 91, 95 or 96 have been found. --> - <nationalNumberPattern>9[2-47-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>99123456</exampleNumber> - </fixedLine> - <mobile> - <!-- 4X mobile numbers are actually used by Kosovo. --> - <nationalNumberPattern> - 6\d{8}| - 4\d{7} - </nationalNumberPattern> - <exampleNumber>612345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - (?: - 8\d| - 90 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </tollFree> - </territory> - - <!-- Moldova, Rep. of --> - <!-- http://www.itu.int/oth/T020200008C/en --> - <territory id="MD" countryCode="373" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(22)(\d{3})(\d{3})"> - <leadingDigits>22</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([25-7]\d{2})(\d{2})(\d{3})"> - <leadingDigits> - 2[13-79]| - [5-7] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([89]00)(\d{5})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[256-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - 1[0569]| - 2\d| - 3[015-7]| - 4[1-46-9]| - 5[0-24689]| - 6[2-589]| - 7[1-37]| - 9[1347-9] - )| - 5(?: - 33| - 5[257] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,8}</possibleNumberPattern> - <exampleNumber>22212345</exampleNumber> - </fixedLine> - <mobile> - <!-- Added 688 and 689 since SMS messages have been successfully sent to these numbers. --> - <nationalNumberPattern> - (?: - 6(?: - 50| - 7[12]| - [89]\d - )| - 7(?: - 80| - 9\d - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>65012345</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{5}</nationalNumberPattern> - <exampleNumber>90012345</exampleNumber> - </premiumRate> - </territory> - - <!-- Montenegro --> - <!-- http://www.itu.int/oth/T02020000DA/en - http://en.wikipedia.org/wiki/Telephone_numbers_in_Montenegro - http://www.ekip.me/numeracija/dodijeljena.php --> - <territory id="ME" countryCode="382" internationalPrefix="00" nationalPrefix="0" - nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{3})"> - <leadingDigits>[2-57-9]|6[3789]</leadingDigits> - <leadingDigits> - [2-57-9]| - 6(?: - [389]| - 7(?: - [0-8]| - 9[3-9] - ) - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(67)(9)(\d{3})(\d{3})"> - <leadingDigits>679</leadingDigits> - <leadingDigits>679[0-2]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Fixed line numbers have prefix 20,30,31,32,33,40,41,50,51,52 followed by 6 digits. - The valid options for the third digit were from - http://www.ekip.me/numeracija/dodijeljena.php --> - <nationalNumberPattern> - (?: - 20[2-8]| - 3(?: - 0[2-7]| - 1[35-7]| - 2[367]| - 3[4-7] - )| - 4(?: - 0[237]| - 1[2467] - )| - 5(?: - 0[47]| - 1[27]| - 2[378] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>30234567</exampleNumber> - </fixedLine> - <mobile> - <!-- Mobile numbers start with 632, 67, 68 or 69. --> - <nationalNumberPattern> - 6(?: - 32\d| - [89]\d{2}| - 7(?: - [0-8]\d| - 9(?: - [3-9]| - [0-2]\d - ) - ) - )\d{4} - </nationalNumberPattern> - <!-- According to ITU it is possible for the numbers to be between length 4-12 - (http://www.itu.int/oth/T02020000DA/en). However, in reality they seem to be 8 or 9 - digits long. --> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>67622901</exampleNumber> - </mobile> - <tollFree> - <!-- All toll free numbers have prefix 80 followed by 02 or 08. --> - <nationalNumberPattern>800[28]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80080002</exampleNumber> - </tollFree> - <premiumRate> - <!-- Numbers with prefix 88, 94 or 95 are services with additional charges. --> - <nationalNumberPattern> - (?: - 88\d| - 9(?: - 4[13-8]| - 5[16-8] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>94515151</exampleNumber> - </premiumRate> - <voip> - <!-- VOIP are prefixed with 78. --> - <nationalNumberPattern>78[134579]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>78108780</exampleNumber> - </voip> - <uan> - <!-- Corporate Telephony are prefixed with 77. --> - <nationalNumberPattern>77\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>77273012</exampleNumber> - </uan> - <shortCode> - <!-- Emergency and other services. --> - <nationalNumberPattern> - 1(?: - 16\d{3}| - 2\d{1,2}| - [0135]\d{2}| - 4\d{2,3}| - 9\d{3} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,6}</possibleNumberPattern> - <exampleNumber>123</exampleNumber> - </shortCode> - </territory> - - <!-- Madagascar --> - <!-- http://www.itu.int/oth/T020200007F/en --> - <territory id="MG" countryCode="261" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([23]\d)(\d{2})(\d{3})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[23]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Added the prefixes 20 44 and 20 47 as they seem popular on the internet - the plan says - 20 4 is for the rest of the province of Antanarivo, but then fails to mention any area - codes beginning with 4. --> - <nationalNumberPattern> - 2(?: - 0(?: - (?: - 2\d| - 4[47]| - 5[3467]| - 6[279]| - 8[268]| - 9[245] - )\d| - 7(?: - 2[29]| - [35]\d - ) - )| - 210\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>202123456</exampleNumber> - </fixedLine> - <mobile> - <!-- The numbering plan suggests the third digit, Z, should be 24-9, - but this is not borne out by reality. --> - <nationalNumberPattern>3[02-4]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>301234567</exampleNumber> - </mobile> - </territory> - - <!-- Saint-Martin, French Antilles --> - <!-- http://www.itu.int/oth/T0202000058/en --> - <territory id="MF" countryCode="590" internationalPrefix="00" - nationalPrefix="0"> - <!-- Formatting rules borrowed from Guadeloupe. --> - <generalDesc> - <nationalNumberPattern>[56]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 590(?: - 10| - 2[79]| - 5[128]| - [78]7 - )\d{4} - </nationalNumberPattern> - <exampleNumber>590271234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 690(?: - 10| - 2[27]| - 66| - 77| - 8[78] - )\d{4} - </nationalNumberPattern> - <exampleNumber>690221234</exampleNumber> - </mobile> - </territory> - - <!-- Marshall Islands --> - <territory id="MH" countryCode="692" internationalPrefix="011" - nationalPrefix="1"> - </territory> - - <!-- Macedonia, Former Yugoslav Rep. of --> - <!-- http://en.wikipedia.org/wiki/%2B389 - http://www.aek.mk/ go to Telecommunications, Numbering, then Numbering plan. --> - <territory id="MK" countryCode="389" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Formats follow wikipedia. --> - <numberFormat pattern="(2)(\d{3})(\d{4})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([347]\d)(\d{3})(\d{3})"> - <leadingDigits>[347]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([58]\d{2})(\d)(\d{2})(\d{2})"> - <leadingDigits>[58]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-578]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - [23]\d| - 5[125]| - 61 - )| - 3(?: - 1[3-6]| - 2[2-6]| - 3[2-5]| - 4[235] - )| - 4(?: - [23][2-6]| - 4[3-6]| - 5[25]| - 6[25-8]| - 7[24-6]| - 8[4-6] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>22212345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[0-25-8]\d{6}</nationalNumberPattern> - <exampleNumber>72345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>5[02-9]\d{6}</nationalNumberPattern> - <exampleNumber>50012345</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 8(?: - 0[1-9]| - [1-9]\d - )\d{5} - </nationalNumberPattern> - <exampleNumber>80123456</exampleNumber> - </sharedCost> - </territory> - - <!-- Mali --> - <!-- http://www.itu.int/oth/T0202000083/en --> - <!-- http://crt-mali.org/pdf/plan_num --> - <territory id="ML" countryCode="223" internationalPrefix="00" - nationalPrefix="0"> - <availableFormats> - <numberFormat pattern="([246-8]\d)(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[246-8]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- 20 70 seems a common pattern, in addition to 21 25. --> - <nationalNumberPattern> - (?: - 2(?: - 0(?: - 2[0-589]| - 7[027-9] - )| - 1(?: - 2[5-7]| - [3-689]\d - ) - )| - 442\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>20212345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 6(?: - [569]\d - )| - 7(?: - [08][1-9]| - [3579][0-4]| - 4[014-7]| - 6\d - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>65012345</exampleNumber> - </mobile> - <tollFree> - <!-- Online examples have not been found, but this seems to follow the prescriptions in the - plan. --> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - </territory> - - <!-- Myanmar --> - <!-- http://www.itu.int/oth/T0202000092/en --> - <territory id="MM" countryCode="95" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(1)(\d{3})(\d{3})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- This overlaps the previous pattern. --> - <numberFormat pattern="(1)(3)(33\d)(\d{3})"> - <leadingDigits>133</leadingDigits> - <leadingDigits>1333</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(2)(\d{2})(\d{3})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{3})"> - <leadingDigits>[4-8]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Format is from http://www.aitaa.ait.ac.th/chapters/copy17_of_aitaa-national-chapters-1 --> - <numberFormat pattern="(9444)(\d{5})"> - <leadingDigits>94</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(9)([25689]\d{2})(\d{4})"> - <leadingDigits>9[25689]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [124-8]\d{5,7}| - 9\d{7,8} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Fixed satellite network numbers (1 3 33X XXX) are also included here. --> - <nationalNumberPattern> - (?: - 1\d| - 2| - 4[2-6]| - 5[2-9]| - 6\d| - 7[0-5]| - 8[1-6] - )\d{5}| - 1333\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,8}</possibleNumberPattern> - <exampleNumber>1234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 9(?: - [25689]\d| - 444 - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>92123456</exampleNumber> - </mobile> - <!-- No information on other types of phone numbers for Myanmar has been found. --> - </territory> - - <!-- Mongolia --> - <!-- http://www.itu.int/oth/T020200008E/en --> - <territory id="MN" countryCode="976" internationalPrefix="001" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([12]\d)(\d{2})(\d{4})"> - <leadingDigits>[12]1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([12]2\d)(\d{5,6})"> - <leadingDigits>[12]2[1-3]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([12]\d{3})(\d{5})"> - <leadingDigits> - [12](?: - 27| - [3-5] - ) - </leadingDigits> - <leadingDigits> - [12](?: - 27| - [3-5]\d - )2 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- It seems from online formatting that the national prefix is not written (or perhaps - needed?) for numbers in these ranges. --> - <numberFormat pattern="(\d{4})(\d{4})" - nationalPrefixFormattingRule="$FG"> - <leadingDigits>[57-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([12]\d{4})(\d{4,5})"> - <leadingDigits> - [12](?: - 27| - [3-5] - ) - </leadingDigits> - <leadingDigits> - [12](?: - 27| - [3-5]\d - )[4-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [12]\d{7,9}| - [57-9]\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Note the leading digit is the access code: 1 is used by Mongolia Telecom subscribers - and 2 is used by Mongolian Railway subscribers. The area code then follows the access - code, and could be 1 to 4 digits long. We also cover wireless local loop numbers here - as well, even though we are not certain whether they are in fact fixed or mobile in - this country. 5-digit subscriber numbers for 4-digit area codes have been added due to - online numbers being found. --> - <nationalNumberPattern> - [12](?: - 1\d| - 2(?: - [1-3]\d?| - 7\d - )| - 3[2-8]\d{1,2}| - 4[2-68]\d{1,2}| - 5[1-4689]\d{1,2} - )\d{5}| - (?: - 5[0568]| - 70 - )\d{6} - </nationalNumberPattern> - <exampleNumber>70123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding prefix 98 from numbers found on the internet. --> - <nationalNumberPattern> - (?: - 8[89]| - 9[15689] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>88123456</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - <voip> - <nationalNumberPattern>7[569]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>75123456</exampleNumber> - </voip> - </territory> - - <!-- Macao, China --> - <!-- http://www.itu.int/oth/T020200007E/en --> - <territory id="MO" countryCode="853" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([268]\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[268]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 28[2-57-9]| - 8[2-57-9]\d - )\d{5} - </nationalNumberPattern> - <exampleNumber>28212345</exampleNumber> - </fixedLine> - <mobile> - <!-- The 62 prefix is added as SMS messages have been successfully delivered to these - numbers, and they are also widely present on the Internet. --> - <nationalNumberPattern>6[26]\d{6}</nationalNumberPattern> - <exampleNumber>66123456</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Northern Mariana Islands --> - <!-- http://www.itu.int/oth/T02020000EE/en --> - <!-- www.cnmiphonebook.com/ --> - <territory id="MP" countryCode="1" leadingDigits="670" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 670(?: - 2(?: - 3[3-5]| - 88| - 56 - )| - 32[23]| - 4[38]3| - 532| - 6(?: - 64| - 70| - 8\d - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>6702345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 670(?: - 2(?: - 3[3-5]| - 88| - 56 - )| - 32[23]| - 4[38]3| - 532| - 6(?: - 64| - 70| - 8\d - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>6702345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Martinique (French Dept. of) --> - <territory id="MQ" countryCode="596" internationalPrefix="00" - nationalPrefix="0"> - </territory> - - <!-- Mauritania --> - <!-- http://www.itu.int/oth/T0202000087/en --> - <!-- http://www.are.mr/com-1-4-1.html --> - <territory id="MR" countryCode="222" internationalPrefix="00" > - <availableFormats> - <numberFormat pattern="([2-48]\d)(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-48]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 25[08]\d{5}| - 35\d{6}| - 45[1-7]\d{5} - </nationalNumberPattern> - <exampleNumber>35123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 2(?: - 2\d| - 70 - )| - 3(?: - 3\d| - 6[1-36]| - 7[1-3] - )| - 4(?: - 4\d| - 6[0457-9]| - 7[4-9] - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>22123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - </territory> - - <!-- Montserrat --> - <!-- http://www.itu.int/oth/T020200008F/en --> - <territory id="MS" countryCode="1" leadingDigits="664" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>664491\d{4}</nationalNumberPattern> - <exampleNumber>6644912345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>664492\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>6644923456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002123456</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Malta --> - <!-- www.itu.int/oth/T0202000084/en --> - <!-- www.mca.org.mt (Numbering link in the LHS menu - has more up-to-date allocations) --> - <territory id="MT" countryCode="356" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2579]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2(?: - 0(?: - 1[0-6]| - [69]\d - )| - [1-357]\d{2} - )\d{4} - </nationalNumberPattern> - <exampleNumber>21001234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 7(?: - 210| - [79]\d{2}| - )| - 9(?: - 2[13]\d| - 696| - 8(?: - 1[1-3]| - 89| - 97 - )| - 9\d{2} - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>96961234</exampleNumber> - </mobile> - <pager> - <nationalNumberPattern>7117\d{4}</nationalNumberPattern> - <exampleNumber>71171234</exampleNumber> - </pager> - <premiumRate> - <nationalNumberPattern> - 50(?: - 0(?: - 3[1679]| - 4\d - )| - [169]\d{2}| - 7[06]\d - )\d{3} - </nationalNumberPattern> - <exampleNumber>50031234</exampleNumber> - </premiumRate> - </territory> - - <!-- Mauritius --> - <!-- http://www.itu.int/oth/T0202000088/en - covers mobile only --> - <!-- http://www.icta.mu/telecommunications/numbering.htm --> - <territory id="MU" countryCode="230" internationalPrefix="0(?:[2-7]0|33)" - preferredInternationalPrefix="020"> - <!-- There is a proposal to change this to 8 digits - this is supposed to happen August 2010, - and 7 digit numbers will be phased out by 1 November 2010. Update Aug 9th: Changeover - postponed to indeterminate later date. --> - <availableFormats> - <numberFormat pattern="([2-9]\d{2})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Wireless local loop numbers are considered to be fixed, since there is almost no - roaming capability. --> - <nationalNumberPattern> - (?: - 2(?: - [034789]\d| - 1[0-8]| - 2[0-79] - )| - 4(?: - [013-8]\d| - 2[4-7] - )| - [56]\d{2}| - 8(?: - 14| - 3[129] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>2012345</exampleNumber> - </fixedLine> - <mobile> - <!--Adding 92 as SMS messages have been successfully sent to this prefix. --> - <nationalNumberPattern> - (?: - 25\d| - 4(?: - 2[12389]| - 9\d - )| - 7\d{2}| - 87[15-7]| - 9[1-8]\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>2512345</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80[012]\d{4}</nationalNumberPattern> - <exampleNumber>8001234</exampleNumber> - </tollFree> - <!-- These may be either shared cost or premium rate - they don't differentiate between these - in the plan. This is expected to change with the introduction of the new numbering plan - in late 2010 - at that time, this will be updated appropriately. --> - <premiumRate> - <nationalNumberPattern>30\d{5}</nationalNumberPattern> - <exampleNumber>3012345</exampleNumber> - </premiumRate> - </territory> - - <!-- Maldives --> - <!-- http://www.itu.int/oth/T0202000082/en --> - <!-- www.dhiraagu.com.mv --> - <territory id="MV" countryCode="960" internationalPrefix="0(?:0|19)" - preferredInternationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits> - [367]| - 9(?: - [1-9]| - 0[1-9] - ) - </leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>900</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [367]\d{6}| - 9(?: - 00\d{7}| - \d{6} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- 300 has been added as prefixes from online searches, since the numbers seemed to be - diallable. --> - <nationalNumberPattern> - (?: - 3(?: - 0[01]| - 3[0-59]| - )| - 6(?: - [567][02468]| - 8[024689]| - 90 - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>6701234</exampleNumber> - </fixedLine> - <mobile> - <!-- 7[45] has been added as many numbers online have been found with this prefix. --> - <nationalNumberPattern> - (?: - 7[3-9]| - 9[6-9] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>7712345</exampleNumber> - </mobile> - <pager> - <nationalNumberPattern>781\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>7812345</exampleNumber> - </pager> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - <shortCode> - <nationalNumberPattern> - 1(?: - [19]0| - 23 - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3}</possibleNumberPattern> - <exampleNumber>123</exampleNumber> - </shortCode> - </territory> - - <!-- Malawi --> - <!-- http://www.itu.int/oth/T0202000080/en --> - <!-- The plan doesn't state that a national prefix exists, but numbers found on the internet are - consistent in having one. --> - <territory id="MW" countryCode="265" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d)(\d{3})(\d{3})"> - <leadingDigits>[13-5]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(2\d{2})(\d{3})(\d{3})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{4})(\d{4})"> - <leadingDigits>7</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3,4})(\d{3,4})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <!-- According to the plan, the switch from 7 to 9 digits for mobile numbers happened in July - 2009. However, online numbers don't seem to reflect this - even on the telephone company - websites such as www.mw.zain.com. Allowing both for now. --> - <generalDesc> - <nationalNumberPattern> - (?: - [13-5]| - [27]\d{2}| - [89](?: - \d{2} - )? - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1[2-9]| - 21\d{2} - )\d{5} - </nationalNumberPattern> - <exampleNumber>1234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - [3-5]| - 77| - 8(?: - 8\d - )? | - 9(?: - 9\d - )? - )\d{6} - </nationalNumberPattern> - <exampleNumber>991234567</exampleNumber> - </mobile> - </territory> - - <!-- Mexico --> - <!-- http://www.itu.int/oth/T020200008A/en --> - <!-- http://en.wikipedia.org/wiki/%2B52 --> - <!-- http://en.wikipedia.org/wiki/Premium-rate_telephone_number#Mexico --> - <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number --> - <territory id="MX" countryCode="52" internationalPrefix="0[09]" - nationalPrefix="01" - nationalPrefixForParsing="0[12]|04[45](\d{10})" - nationalPrefixTransformRule="1$1" - nationalPrefixFormattingRule="$NP $FG"> - <!-- When a number starts with 01 or 02, we remove the prefixes; when a number starts with 045 - or 046 followed by 10 digits, we replace the prefixes with 1. This way all the mobile - numbers, regardless of whether they are written in international format (leading 1) or - national format (leading 045/046), will be parsed into the same form. --> - <availableFormats> - <numberFormat pattern="([358]\d)(\d{4})(\d{4})"> - <leadingDigits> - 33| - 55| - 81 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="([358]\d)(\d{4})(\d{4})"> - <leadingDigits> - 33| - 55| - 81 - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - [2467]| - 3[12457-9]| - 5[89]| - 8[02-9]| - 9[0-35-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - [2467]| - 3[12457-9]| - 5[89]| - 8[02-9]| - 9[0-35-9] - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="1([358]\d)(\d{4})(\d{4})"> - <leadingDigits> - 1(?: - 33| - 55| - 81 - ) - </leadingDigits> - <format>045 $1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(1)([358]\d)(\d{4})(\d{4})"> - <leadingDigits> - 1(?: - 33| - 55| - 81 - ) - </leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="1(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 1(?: - [2467]| - 3[12457-9]| - 5[89]| - 8[2-9]| - 9[1-35-9] - ) - </leadingDigits> - <format>045 $1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(1)(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - 1(?: - [2467]| - 3[12457-9]| - 5[89]| - 8[2-9]| - 9[1-35-9] - ) - </leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{9,10}</nationalNumberPattern> - <possibleNumberPattern>\d{7,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- http://en.wikipedia.org/wiki/Area_codes_in_Mexico_by_code --> - <nationalNumberPattern> - (?: - 33| - 55| - 81 - )\d{8}| - (?: - 2(?: - 2[2-9]| - 3[1-35-8]| - 4[13-9]| - 7[1-689]| - 8[1-58]| - 9[467] - )| - 3(?: - 1[1-79]| - [2458][1-9]| - 7[1-8]| - 9[1-5] - )| - 4(?: - 1[1-57-9]| - [24-6][1-9]| - [37][1-8]| - 8[1-35-9]| - 9[2-689] - )| - 5(?: - 88| - 9[1-79] - )| - 6(?: - 1[2-68]| - [234][1-9]| - 5[1-3689]| - 6[12457-9]| - 7[1-7]| - 8[67]| - 9[4-8] - )| - 7(?: - [13467][1-9]| - 2[1-8]| - 5[13-9]| - 8[1-69]| - 9[17] - )| - 8(?: - 2[13-689]| - 3[1-6]| - 4[124-6]| - 6[1246-9]| - 7[1-378]| - 9[12479] - )| - 9(?: - 1[346-9]| - 2[1-4]| - 3[2-46-8]| - 5[1348]| - [69][1-9]| - 7[12]| - 8[1-8] - ) - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>2221234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 1(?: - (?: - 33| - 55| - 81 - )\d{8}| - (?: - 2(?: - 2[2-9]| - 3[1-35-8]| - 4[13-9]| - 7[1-689]| - 8[1-58]| - 9[467] - )| - 3(?: - 1[1-79]| - [2458][1-9]| - 7[1-8]| - 9[1-5] - )| - 4(?: - 1[1-57-9]| - [24-6][1-9]| - [37][1-8]| - 8[1-35-9]| - 9[2-689] - )| - 5(?: - 88| - 9[1-79] - )| - 6(?: - 1[2-68]| - [2-4][1-9]| - 5[1-3689]| - 6[12457-9]| - 7[1-7]| - 8[67]| - 9[4-8] - )| - 7(?: - [13467][1-9]| - 2[1-8]| - 5[13-9]| - 8[1-69]| - 9[17] - )| - 8(?: - 2[13-689]| - 3[1-6]| - 4[124-6]| - 6[1246-9]| - 7[1-378]| - 9[12479] - )| - 9(?: - 1[346-9]| - 2[1-4]| - 3[2-46-8]| - 5[1348]| - [69][1-9]| - 7[12]| - 8[1-8] - ) - )\d{7} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>12221234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Malaysia --> - <!-- http://en.wikipedia.org/wiki/%2B60 --> - <!-- http://www.skmm.gov.my/what_we_do/numbering/index.asp --> - <territory id="MY" countryCode="60" internationalPrefix="00" - nationalPrefix="0"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="([4-79])(\d{3})(\d{4})"> - <leadingDigits>[4-79]</leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(3)(\d{4})(\d{4})"> - <leadingDigits>3</leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="([18]\d)(\d{3})(\d{3,4})"> - <leadingDigits> - 1[0-46-9][1-9]| - 8 - </leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <numberFormat pattern="(1)([36-8]00)(\d{2})(\d{4})"> - <leadingDigits>1[36-8]0</leadingDigits> - <format>$1-$2-$3-$4</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(154)(\d{3})(\d{4})"> - <leadingDigits>15</leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[13-9]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3\d{2}| - [4-79]\d| - 8[2-9] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>312345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>1[0-46-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>123456789</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1[38]00\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1300123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>1600\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1600123456</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>1700\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1700123456</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>154\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1541234567</exampleNumber> - </voip> - </territory> - - <!-- Mozambique --> - <!-- http://www.itu.int/oth/T0202000091/en --> - <territory id="MZ" countryCode="258" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([28]\d)(\d{3})(\d{3,4})"> - <leadingDigits> - 2| - 8[24] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(80\d)(\d{3})(\d{3})"> - <leadingDigits>80</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[28]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2(?: - [1346]\d| - 5[0-2]| - [78][12]| - 93 - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>21123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>8[24]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>821234567</exampleNumber> - </mobile> - <tollFree> - <!-- Unsure of the length requirement on toll-free numbers, so using 9 - based on online examples. --> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <!-- The plan suggests 801 and 802 numbers are shared-cost numbers, and numbers beginning with - a 9 are premium rate, but no online examples can be found of any of these so they are - omitted for the time-being. --> - </territory> - - <!-- Namibia --> - <!-- http://www.itu.int/oth/T0202000093/en --> - <territory id="NA" countryCode="264" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(8\d)(\d{3})(\d{4})"> - <leadingDigits>8[125]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(6\d)(\d{2,3})(\d{4})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(88)(\d{3})(\d{3})"> - <leadingDigits>88</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(870)(\d{3})(\d{3})"> - <leadingDigits>870</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[68]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Includes VSAT service. --> - <nationalNumberPattern> - 6(?: - 1(?: - 17| - 2(?: - [0189]\d| - [23-6]| - 7\d? - )| - 3(?: - 2\d| - 3[378] - )| - 4[01]| - 69| - 7[014] - )| - 2(?: - 17| - 25| - 5(?: - [0-36-8]| - 4\d? - )| - 69| - 70 - )| - 3(?: - 17| - 2(?: - [0237]\d?| - [14-689] - )| - 34| - 6[29]| - 7[01]| - 81 - )| - 4(?: - 17| - 2(?: - [012]| - 7? - )| - 4(?: - [06]| - 1\d - )| - 5(?: - [01357]| - [25]\d? - )| - 69| - 7[01] - )| - 5(?: - 17| - 2(?: - [0459]| - [23678]\d? - )| - 69| - 7[01] - )| - 6(?: - 17| - 2(?: - 5| - 6\d? - )| - 38| - 42| - 69| - 7[01] - )| - 7(?: - 17| - 2(?: - [569]| - [234]\d? - )| - 3(?: - 0\d?| - [13] - )| - 69| - 7[01] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>612012345</exampleNumber> - </fixedLine> - <mobile> - <!-- Includes the Switch CDMA Service. --> - <nationalNumberPattern> - (?: - 60| - 8[125] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>811234567</exampleNumber> - </mobile> - <premiumRate> - <nationalNumberPattern>8701\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>870123456</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>886\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>88612345</exampleNumber> - </voip> - <shortCode> - <nationalNumberPattern> - 1(?: - 0111| - \d{3} - )| - 9(?: - 3111| - \d{2} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3,5}</possibleNumberPattern> - <exampleNumber>93111</exampleNumber> - </shortCode> - </territory> - - <!-- New Caledonia (Territoire français d'outre-mer) --> - <territory id="NC" countryCode="687" internationalPrefix="00" - nationalPrefix="0"> - </territory> - - <!-- Niger --> - <!-- http://www.itu.int/oth/T020200009B/en --> - <territory id="NE" countryCode="227" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="([029]\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits> - [29]| - 09 - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(08)(\d{3})(\d{3})"> - <leadingDigits>08</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[029]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Adding 20 61 from online numbers. --> - <nationalNumberPattern> - 2(?: - 0(?: - 20| - 3[1-7]| - 4[134]| - 5[14]| - 6[14578]| - 7[1-578] - )| - 1(?: - 4[145]| - 5[14]| - 6[14-68]| - 7[169]| - 88 - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>20201234</exampleNumber> - </fixedLine> - <mobile> - <!-- Added 90 and 97 from online data. Zain have confirmed that they use the 97 prefix. --> - <nationalNumberPattern>9[03467]\d{6}</nationalNumberPattern> - <exampleNumber>93123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>08\d{6}</nationalNumberPattern> - <exampleNumber>08123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>09\d{6}</nationalNumberPattern> - <exampleNumber>09123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Norfolk Island --> - <!-- http://www.itu.int/oth/T020200009D/en --> - <!-- Including numbers for Australian Antarctic stations. --> - <territory id="NF" countryCode="672" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{5})"> - <leadingDigits>3</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[13]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{5,6}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- ITU says all 3X numbers except 38 are fixed-line, but 3[3-79] numbers don't seem to - connect after we tried calling them. --> - <nationalNumberPattern> - (?: - 1(?: - 06| - 17| - 28| - 39 - )| - 3[012]\d - )\d{3} - </nationalNumberPattern> - <exampleNumber>106609</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>38\d{4}</nationalNumberPattern> - <exampleNumber>381234</exampleNumber> - </mobile> - </territory> - - <!-- Nigeria --> - <!-- http://www.itu.int/oth/T020200009C/en --> - <territory id="NG" countryCode="234" internationalPrefix="009" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([129])(\d{3})(\d{3,4})"> - <leadingDigits>[129]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([3-8]\d)(\d{3})(\d{2,3})"> - <leadingDigits> - [3-6]| - 7(?: - [1-79]| - 0[1-9] - )| - 8[2-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([78]\d{2})(\d{3})(\d{3,4})"> - <leadingDigits> - 70| - 8[01] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([78]00)(\d{4})(\d{4,5})"> - <leadingDigits>[78]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([78]00)(\d{5})(\d{5,6})"> - <leadingDigits>[78]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(78)(\d{2})(\d{3})"> - <leadingDigits>78</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [1-69]\d{5,8}| - [78]\d{5,13} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,14}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - [12]\d{6,7}| - 9\d{7}| - (?: - 4[023568]| - 5[02368]| - 6[02-469]| - 7[569]| - 8[2-9] - )\d{6}| - (?: - 4[47]| - 5[14579]| - 6[1578]| - 7[0-357] - )\d{5,6}| - (?: - 78| - 41 - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <!-- More 81X prefixes have been added based on online numbers. --> - <nationalNumberPattern> - (?: - 70(?: - [3-9]\d| - 2[1-9] - )| - 8(?: - 0[2-9]| - 1[23689] - )\d - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8021234567</exampleNumber> - </mobile> - <!-- Info on these numbers from http://www.alphatechnologieslimited.com. --> - <tollFree> - <nationalNumberPattern>800\d{7,11}</nationalNumberPattern> - <possibleNumberPattern>\d{10,14}</possibleNumberPattern> - <exampleNumber>80017591759</exampleNumber> - </tollFree> - <personalNumber> - <nationalNumberPattern>700\d{7,11}</nationalNumberPattern> - <possibleNumberPattern>\d{10,14}</possibleNumberPattern> - <exampleNumber>7001234567</exampleNumber> - </personalNumber> - </territory> - - <!-- Nicaragua --> - <!-- http://www.itu.int/oth/T020200009A/en --> - <territory id="NI" countryCode="505" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[128]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2\d{7}</nationalNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>8\d{7}</nationalNumberPattern> - <exampleNumber>81234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1800\d{4}</nationalNumberPattern> - <exampleNumber>18001234</exampleNumber> - </tollFree> - </territory> - - <!-- Netherlands --> - <!-- http://en.wikipedia.org/wiki/%2B31 --> - <!-- http://www2.opta.nl/asp/en/numbers/ --> - <territory id="NL" countryCode="31" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([1-578]\d)(\d{3})(\d{4})"> - <leadingDigits> - 1[035]| - 2[0346]| - 3[03568]| - 4[0356]| - 5[0358]| - 7| - 8[458] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([1-5]\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 1[16-8]| - 2[259]| - 3[124]| - 4[17-9]| - 5[124679] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(6)(\d{8})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([89]0\d)(\d{4,7})"> - <leadingDigits> - 80| - 9 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{6,9}</nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1[0135-8]| - 2[02-69]| - 3[0-68]| - 4[0135-9]| - [57]\d| - 8[478] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>101234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6[1-58]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>612345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{4,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>8001234</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[069]\d{4,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>9001234</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>85\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </voip> - </territory> - - <!-- Norway --> - <!-- Metadata (excluding fixed-line) shared with Svalbard. --> - <!-- http://www.npt.no/pt_internet/numsys/E.164.pdf --> - <territory id="NO" countryCode="47" internationalPrefix="00" leadingZeroPossible="true" - mainCountryForCode="true"> - <availableFormats> - <numberFormat pattern="([489]\d{2})(\d{2})(\d{3})"> - <leadingDigits>[489]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([235-7]\d)(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[235-7]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - 0\d{4}| - [2-9]\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{5}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Excludes Svalbard fixed-line numbers. --> - <nationalNumberPattern> - (?: - 2[1-4]| - 3[1-3578]| - 5[1-35-7]| - 6[1-4679]| - 7[0-8] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 4[015-8]| - 9\d - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>41234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80[01]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>82[09]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>82012345</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 810(?: - 0[0-6]| - [2-8]\d - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>81021234</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>880\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>88012345</exampleNumber> - </personalNumber> - <uan> - <!-- Includes some 810 local-rate numbers, and long-distance rate numbers. --> - <nationalNumberPattern> - 0\d{4}| - 81(?: - 0(?: - 0[7-9]| - 1\d - )| - 5\d{2} - )\d{3} - </nationalNumberPattern> - <exampleNumber>01234</exampleNumber> - </uan> - </territory> - - <!-- Nepal --> - <!-- http://www.itu.int/oth/T0202000095/en --> - <!-- http://www.ntc.net.np/mobile/mob_postpaid_number_scheme.php --> - <territory id="NP" countryCode="977" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(1)([4-6]\d{3})(\d{3})"> - <leadingDigits>1[4-6]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 1[01]| - [2-8]| - 9[1-79] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Format is from http://www.fco.gov.uk/en/travel-and-living-abroad/travel-advice-by-country/country-profile/asia-oceania/nepal/ --> - <numberFormat pattern="(98[45])(\d{3})(\d{4})"> - <leadingDigits>98</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [1-8]\d{5,7}| - 98[45]\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1[014-6]| - 2[13-79]| - 3[135-8]| - 4[146-9]| - 5[135-7]| - 6[13-9]| - 7[15-9]| - 8[1-4679]| - 9[1-79] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>14567890</exampleNumber> - </fixedLine> - <!-- There is no definitive source of information for mobile numbers in Nepal. The infomation - here is collected by searching the Internet. --> - <mobile> - <nationalNumberPattern>98[45]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9841234567</exampleNumber> - </mobile> - <!-- No information on other types of phone numbers for Nepal has been found. --> - </territory> - - <!-- Nauru --> - <!-- http://www.itu.int/oth/T0202000094/en --> - <territory id="NR" countryCode="674" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[458]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 444| - 888 - )\d{4} - </nationalNumberPattern> - <exampleNumber>4441234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>55[5-9]\d{4}</nationalNumberPattern> - <exampleNumber>5551234</exampleNumber> - </mobile> - <shortCode> - <nationalNumberPattern> - 1(?: - 1[012]| - 23| - 92 - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{3}</possibleNumberPattern> - <exampleNumber>110</exampleNumber> - </shortCode> - </territory> - - <!-- Niue --> - <!-- http://www.itu.int/oth/T02020000EC/en --> - <territory id="NU" countryCode="683" internationalPrefix="00"> - <!-- Numbers are always formatted as a block. --> - <generalDesc> - <nationalNumberPattern>[1-5]\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{4}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Putting FWT (fixed-wireless-terminals) numbers here too. --> - <nationalNumberPattern>[34]\d{3}</nationalNumberPattern> - <exampleNumber>4002</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>[125]\d{3}</nationalNumberPattern> - <exampleNumber>1234</exampleNumber> - </mobile> - </territory> - - <!-- New Zealand --> - <!-- http://www.itu.int/oth/T0202000099/en --> - <!-- Includes Ross Dependency, Antarctica --> - <!-- Does not currently support 083 "Enhanced voice services", New Zealand direct service - numbers and 050 "Nation-Wide Service". --> - <territory id="NZ" countryCode="64" internationalPrefix="0(?:0|161)" - preferredInternationalPrefix="00" nationalPrefix="0" - nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([34679])(\d{3})(\d{4})"> - <leadingDigits> - [3467]| - 9[1-9] - </leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <!-- Mobile numbers do not have exclusive leading digits - formatting depends on number - length. --> - <!-- Vodafone numbers are formatted with 021 separated. --> - <numberFormat pattern="(21)(\d{4})(\d{3,4})"> - <leadingDigits>21</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Adding in the toll free numbers here as well since they follow the same format. --> - <numberFormat pattern="([2589]\d{2})(\d{3})(\d{3,4})"> - <leadingDigits> - 2[0247-9]| - 5| - [89]00 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Vodafone and Orcon numbers can also be 8 digits (without leading 0), and these are - formatted differently. --> - <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})"> - <leadingDigits>2[0169]|86</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Antarctica --> - <numberFormat pattern="(24099)(\d{3})"> - <leadingDigits>240</leadingDigits> - <leadingDigits>2409</leadingDigits> - <leadingDigits>24099</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - 6[235-9]\d{6}| - [2-57-9]\d{7,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3[2-79]| - [49][2-689]| - 6[235-9]| - 7[2-589] - )\d{6}| - 24099\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>32345678</exampleNumber> - </fixedLine> - <mobile> - <!-- Includes mobile radio service numbers. --> - <nationalNumberPattern> - 2(?: - [079]\d{7}| - 1(?: - 0\d{5,7}| - [12]\d{5,6}| - [3-9]\d{5} - )| - [28]\d{7,8}| - 4[1-9]\d{6} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - <exampleNumber>211234567</exampleNumber> - </mobile> - <pager> - <nationalNumberPattern>[28]6\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>26123456</exampleNumber> - </pager> - <!-- These are the toll free patterns used, by Telecom and Telstra/Clear, but they are - referred to as 'Value-added service' in the phone plan for some reason. 85 numbers are - not covered, as telecom companies don't seem to support them yet. --> - <tollFree> - <nationalNumberPattern> - 508\d{6,7}| - 80\d{6,8} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{9,11}</possibleNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Oman --> - <!-- http://www.itu.int/oth/T020200009F/en --> - <territory id="OM" countryCode="968" internationalPrefix="00" > - <availableFormats> - <numberFormat pattern="(2\d)(\d{6})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(9\d{3})(\d{4})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([58]00)(\d{4,6})"> - <leadingDigits>[58]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - (?: - 2[3-6]| - 5| - 9[2-9] - )\d{6}| - 800\d{5,6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2[3-6]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>23123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>92123456</exampleNumber> - </mobile> - <tollFree> - <!-- Link to document about toll-free numbers on www.tra.gov.om, which suggests they should - be 8007 followed by 4 digits. However, the only examples I can find, including the - customer help line for the main telephony company there (omantel), is 8007 followed by - 5 digits, so am allowing both for now to be on the safe side. 500 numbers seem to offer - international toll-free dialing numbers - +968 500 1300 for international help desk for - omantel, for example. --> - <nationalNumberPattern> - 8007\d{4,5}| - 500\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>80071234</exampleNumber> - </tollFree> - <!-- No premiumRate information can be found. --> - </territory> - - <!-- Panama --> - <territory id="PA" countryCode="507" internationalPrefix="00" - nationalPrefix="0"> - </territory> - - <!-- Peru --> - <!-- http://www.itu.int/oth/T02020000A6/en --> - <!-- http://en.wikipedia.org/wiki/+51 --> - <territory id="PE" countryCode="51" internationalPrefix="19(?:1[124]|77|90)00" - nationalPrefix="0" nationalPrefixFormattingRule="($FG)" - preferredExtnPrefix=" Anexo "> - <availableFormats> - <numberFormat pattern="(1)(\d{7})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([4-8]\d)(\d{6})"> - <leadingDigits>[4-8]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- Formatting from common usage found on the internet, supported by ITU doc. --> - <numberFormat pattern="(9\d{2})(\d{3})(\d{3})" - nationalPrefixFormattingRule="$FG"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[14-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1\d| - 4[1-4]| - 5[1-46]| - 6[1-7]| - 7[2-46]| - 8[2-4] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>11234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>912345678</exampleNumber> - </mobile> - </territory> - - <!-- French Polynesia (Tahiti) (Territoire français d'outre-mer) --> - <territory id="PF" countryCode="689" internationalPrefix="00"> - </territory> - - <!-- Papua New Guinea --> - <!-- http://www.itu.int/oth/T02020000A4/en --> - <!-- http://en.wikipedia.org/wiki/%2B675 --> - <territory id="PG" countryCode="675" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[1-689]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(7[1-36]\d)(\d{2})(\d{3})"> - <leadingDigits>7[1-36]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Fixed line patterns are from the numbering plan, with additions for 4XX since many - numbers in the yellow pages seem to be outside the 47X range prescribed by the plan. - The same applies to extra 64X numbers. --> - <nationalNumberPattern> - (?: - 3\d{2}| - 4[257]\d| - 5[34]\d| - 6(?: - 29| - 4[1-9] - )| - 85[02-46-9]| - 9[78]\d - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>3123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Mobile number patterns from the numbering plan are included here, - as well as 68x from wikipedia. --> - <nationalNumberPattern> - (?: - 68| - 7(?: - [126]\d| - 3[1-9] - ) - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>6812345</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>180\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>1801234</exampleNumber> - </tollFree> - <voip> - <!-- VSAT prefixes are here. --> - <nationalNumberPattern>275\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>2751234</exampleNumber> - </voip> - </territory> - - <!-- Philippines --> - <!-- http://en.wikipedia.org/wiki/%2B63 --> - <territory id="PH" countryCode="63" internationalPrefix="00" - nationalPrefix="0"> - <availableFormats> - <!--Area code separated from number. Area codes found here: - http://en.wikipedia.org/wiki/Telecommunications_in_the_Philippines#Area_Codes --> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="(2)(\d{3})(\d{4})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="(\d{4})(\d{5})"> - <leadingDigits> - 3(?: - 23| - 39| - 46 - )| - 4(?: - 2[3-6]| - [35]9| - 4[26]| - 76 - )| - 5(?: - 22| - 44 - )| - 642| - 8(?: - 62| - 8[245] - ) - </leadingDigits> - <leadingDigits> - 3(?: - 230| - 397| - 461 - )| - 4(?: - 2(?: - 35| - [46]4| - 51 - )| - 396| - 4(?: - 22| - 63 - )| - 59[347]| - 76[15] - )| - 5(?: - 221| - 446 - )| - 642[23]| - 8(?: - 622| - 8(?: - [24]2| - 5[13] - ) - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="(\d{5})(\d{4})"> - <leadingDigits> - 346| - 4(?: - 27| - 9[35] - )| - 883 - </leadingDigits> - <leadingDigits> - 3469| - 4(?: - 279| - 9(?: - 30| - 56 - ) - )| - 8834 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- This rule is a fallback for the more specific area codes. --> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="([3-8]\d)(\d{3})(\d{4})"> - <leadingDigits>[3-8]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" - pattern="(9\d{2})(\d{3})(\d{4})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Formatting from http://www.uniontelecard.com/calling-guides/philippines/guide1.aspx --> - <numberFormat pattern="(1800)(\d{3})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(1800)(\d{1,2})(\d{3})(\d{4})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2-9]\d{7,9}| - 1800\d{7,9} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,13}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2| - 3[2-68]| - 4[2-9]| - 5[2-6]| - 6[2-58]| - 7[24578]| - 8[2-8] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 9(?: - 0[5-9]| - 1[025-9]| - 2[0-36-9]| - 3[0235-9]| - 7[349]| - [89]9 - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9051234567</exampleNumber> - </mobile> - <!-- Information on toll-free numbers collected from searching the internet --> - <tollFree> - <nationalNumberPattern>1800\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{11,13}</possibleNumberPattern> - <exampleNumber>180012345678</exampleNumber> - </tollFree> - <!-- No information can be found about other types of numbers (such as premium rate) in the - Philippines. --> - </territory> - - <!-- Pakistan --> - <!-- http://www.itu.int/oth/T02020000A1/en --> - <!-- http://en.wikipedia.org/wiki/%2B92 --> - <territory id="PK" countryCode="92" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <!-- Universal Access Numbers (UAN) number format patterns first, so that these numbers are - formatted nicely by the AYTF. --> - <numberFormat pattern="(\d{2})(111)(\d{3})(\d{3})"> - <leadingDigits> - (?: - 2[125]| - 4[0-246-9]| - 5[1-35-7]| - 6[1-8]| - 7[14]| - 8[16]| - 91 - )1 - </leadingDigits> - <leadingDigits> - (?: - 2[125]| - 4[0-246-9]| - 5[1-35-7]| - 6[1-8]| - 7[14]| - 8[16]| - 91 - )11 - </leadingDigits> - <leadingDigits> - (?: - 2[125]| - 4[0-246-9]| - 5[1-35-7]| - 6[1-8]| - 7[14]| - 8[16]| - 91 - )111 - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{3})(111)(\d{3})(\d{3})"> - <leadingDigits> - 2[349]| - 45| - 54| - 60| - 72| - 8[2-5]| - 9[2-9] - </leadingDigits> - <leadingDigits> - (?: - 2[349]| - 45| - 54| - 60| - 72| - 8[2-5]| - 9[2-9] - )\d1 - </leadingDigits> - <leadingDigits> - (?: - 2[349]| - 45| - 54| - 60| - 72| - 8[2-5]| - 9[2-9] - )\d11 - </leadingDigits> - <leadingDigits> - (?: - 2[349]| - 45| - 54| - 60| - 72| - 8[2-5]| - 9[2-9] - )\d111 - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{7,8})"> - <leadingDigits> - (?: - 2[125]| - 4[0-246-9]| - 5[1-35-7]| - 6[1-8]| - 7[14]| - 8[16]| - 91 - )[2-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{6,7})"> - <leadingDigits> - 2[349]| - 45| - 54| - 60| - 72| - 8[2-5]| - 9[2-9] - </leadingDigits> - <leadingDigits> - (?: - 2[349]| - 45| - 54| - 60| - 72| - 8[2-5]| - 9[2-9] - )\d[2-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(3\d{2})(\d{7})" nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits>3</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([15]\d{3})(\d{5,6})"> - <leadingDigits> - 58[12]| - 1 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- This is from online examples. --> - <numberFormat pattern="(586\d{2})(\d{5})"> - <leadingDigits>586</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([89]00)(\d{3})(\d{2})" nationalPrefixFormattingRule="$NP$FG"> - <leadingDigits>[89]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <!-- This is horribly complex because the country code is 92, and several area codes start - with 92, and the number length is widely variable. --> - <nationalNumberPattern> - 1\d{8}| - [2-8]\d{5,11}| - 9(?: - [013-9]\d{4,9}| - 2\d(?: - 111\d{6}| - \d{3,7} - ) - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{6,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- The subscriber number length is not well defined for some area codes. From online - examples, we have come up with a heuristic that for 3-digit area codes, the subscriber - number will be 6 or 7 digits - for 2-digit area codes it will be 7, with the exceptions - of Karachi and Lahore (both 8). --> - <nationalNumberPattern> - (?: - 21| - 42 - )[2-9]\d{7}| - (?: - 2[25]| - 4[0146-9]| - 5[1-35-7]| - 6[1-8]| - 7[14]| - 8[16]| - 91 - )[2-9]\d{6}| - (?: - 2(?: - 3[2358]| - 4[2-4]| - 9[2-8] - )| - 45[3479]| - 54[2-467]| - 60[468]| - 72[236]| - 8(?: - 2[2-689]| - 3[23578]| - 4[3478]| - 5[2356] - )| - 9(?: - 1| - 2[2-8]| - 3[27-9]| - 4[2-6]| - 6[3569]| - 9[25-8] - ) - )[2-9]\d{5,6}| - 58[126]\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - <exampleNumber>2123456789</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 347 as SMSs have been successfully sent to these numbers and numbers can be - found online with these prefixes. --> - <nationalNumberPattern> - 3(?: - 0\d| - 1[2-5]| - 2[1-3]| - 3[1-6]| - 4[2-7]| - 64 - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>3012345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90012345</exampleNumber> - </premiumRate> - <!-- These are referred to as UPT numbers in the plan. --> - <personalNumber> - <nationalNumberPattern>122\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <!-- The example number here is the test number from the plan. --> - <exampleNumber>122044444</exampleNumber> - </personalNumber> - <uan> - <!-- Data on what a UAN is is hard to come by. http://www.ptcl.com.pk has information under - http://www.ptcl.com.pk/contentb.php?NID=143#uan - which defines their format - but not - what type of number they are. We exclude Azad Jammu, Kashmir and Northern Areas here - since no online example UANs can be found, and they have an "access code" at the start, - making it difficult to guess what a UAN in these areas would look like. --> - <nationalNumberPattern> - (?: - 2(?: - [125]| - 3[2358]| - 4[2-4]| - 9[2-8] - )| - 4(?: - [0-246-9]| - 5[3479] - )| - 5(?: - [1-35-7]| - 4[2-467] - )| - 6(?: - [1-8]| - 0[468] - )| - 7(?: - [14]| - 2[236] - )| - 8(?: - [16]| - 2[2-689]| - 3[23578]| - 4[3478]| - 5[2356] - )| - 9(?: - 1| - 22| - 3[27-9]| - 4[2-6]| - 6[3569]| - 9[2-7] - ) - )111\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{11,12}</possibleNumberPattern> - <exampleNumber>21111825888</exampleNumber> - </uan> - </territory> - - <!-- Poland --> - <!-- http://en.wikipedia.org/wiki/%2B48 --> - <!-- - http://www.uke.gov.pl/uke/index.jsp?place=Lead24&news_cat_id=277&news_id=3791&layout=9&page=text - (in Polish) --> - <territory id="PL" countryCode="48" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})"> - <leadingDigits> - [124]| - 3[2-4]| - 5[24-689]| - 6[1-3578]| - 7[14-7]| - 8[1-79]| - 9[145] - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <!-- We are formatting 70 numbers as per mobile numbers, based on information from some - Poles that this is more usual. --> - <numberFormat pattern="(\d{3})(\d{3})(\d{3})"> - <leadingDigits> - 39| - 5[013]| - 6[069]| - 7[0289]| - 8[08] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1[2-8]| - 2[2-59]| - 3[2-4]| - 4[1-468]| - 5[24-689]| - 6[1-3578]| - 7[14-7]| - 8[1-79]| - 9[145] - )\d{7} - </nationalNumberPattern> - <exampleNumber>123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 5[013]| - 6[069]| - 7[289]| - 88 - )\d{7} - </nationalNumberPattern> - <exampleNumber>512345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>70\d{7}</nationalNumberPattern> - <exampleNumber>701234567</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>801\d{6}</nationalNumberPattern> - <exampleNumber>801234567</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>39\d{7}</nationalNumberPattern> - <exampleNumber>391234567</exampleNumber> - </voip> - </territory> - - <!-- Saint Pierre and Miquelon (Collectivité territoriale de la République française) --> - <territory id="PM" countryCode="508" internationalPrefix="00" - nationalPrefix="0"> - </territory> - - <!-- Puerto Rico --> - <!-- http://www.itu.int/oth/T02020000AA/en --> - <territory id="PR" countryCode="1" leadingDigits="787|939" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5789]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 787| - 939 - )[2-9]\d{6} - </nationalNumberPattern> - <exampleNumber>7872345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 787| - 939 - )[2-9]\d{6} - </nationalNumberPattern> - <exampleNumber>7872345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Palestinian Authority --> - <!-- http://en.wikipedia.org/wiki/%2B970 --> - <!-- http://www.wtng.info/wtng-970-ps.html --> - <!-- http://www.paltel.ps --> - <!-- Palestinian phone numbers can be reached through the Israeli country code (972) in addition - to the Palestinian country code (970) and so Palestinian landlines and mobile lines are a - subset of the Israeli formats. --> - <territory id="PS" countryCode="970" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([2489])(2\d{2})(\d{4})"> - <leadingDigits>[2489]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(5[69]\d)(\d{3})(\d{3})"> - <leadingDigits>5</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(1[78]00)(\d{3})(\d{3})"> - <leadingDigits>1[78]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- 4 and 5 digit premium numbers will be formatted as one block by default. --> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [24589]\d{7,8}| - 1(?: - [78]\d{8}| - [49]\d{2,3} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 22[234789]| - 42[45]| - 82[01458]| - 92[369] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>22234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>5[69]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>599123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <premiumRate> - <!-- According to Paltel, premium numbers are 14xx and 19xxx --> - <nationalNumberPattern> - 1(?: - 4| - 9\d - )\d{2} - </nationalNumberPattern> - <possibleNumberPattern>\d{4,5}</possibleNumberPattern> - <exampleNumber>19123</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>1700\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1700123456</exampleNumber> - </sharedCost> - </territory> - - <!-- Portugal --> - <!-- http://www.anacom.pt/render.jsp?categoryId=279098 --> - <territory id="PT" countryCode="351" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([2-46-9]\d{2})(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-46-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 2(?: - [12]\d| - [35][1-689]| - 4[1-59]| - 6[1-35689]| - 7[1-9]| - 8[1-69]| - 9[1256] - )\d{6} - </nationalNumberPattern> - <exampleNumber>212345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 9(?: - [136]\d{2}| - 2[124-79]\d| - 4(?: - 80| - 9\d - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>912345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 4\d{8}| - 80[02]\d{6} - </nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>71\d{7}</nationalNumberPattern> - <exampleNumber>712345678</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>808\d{6}</nationalNumberPattern> - <exampleNumber>808123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>30\d{7}</nationalNumberPattern> - <exampleNumber>301234567</exampleNumber> - </voip> - </territory> - - <!-- Palau --> - <territory id="PW" countryCode="680" internationalPrefix="011"> - </territory> - - <!-- Paraguay --> - <territory id="PY" countryCode="595" internationalPrefix="002" - nationalPrefix="0"> - </territory> - - <!-- Qatar --> - <!-- http://www.itu.int/oth/T02020000AB/en --> - <!-- http://wtng.info/wtng-qq.html --> - <territory id="QA" countryCode="974" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(8\d{2})(\d{4})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([3-7]\d{3})(\d{4})"> - <leadingDigits>[3-7]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3-8]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>44\d{6}</nationalNumberPattern> - <exampleNumber>44123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 33| - 55| - 66| - 77 - )\d{6} - </nationalNumberPattern> - <exampleNumber>33123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{4}</nationalNumberPattern> - <exampleNumber>8001234</exampleNumber> - </tollFree> - <!-- No premiumRate information can be found. --> - </territory> - - <!-- Réunion (French Departments and Territories in the Indian Ocean) --> - <!-- Note this shares the same country code as La Mayotte and French Southern Territories, and - the formatting patterns here are used by all of them. --> - <!-- http://www.itu.int/oth/T020200004B/en --> - <territory id="RE" countryCode="262" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG" - leadingDigits="262|6[49]|8" mainCountryForCode="true" > - <availableFormats> - <numberFormat pattern="([268]\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[268]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- 0876 numbers are mentioned in the plan, but none in use can be found. --> - <nationalNumberPattern>262\d{6}</nationalNumberPattern> - <exampleNumber>262161234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 6(?: - 9[23]| - 47 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>692123456</exampleNumber> - </mobile> - <!-- 08* Numbers in Réunion are the same as those valid in France. --> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>89[1-37-9]\d{6}</nationalNumberPattern> - <exampleNumber>891123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 8(?: - 1[019]| - 2[0156]| - 84| - 90 - )\d{6} - </nationalNumberPattern> - <exampleNumber>810123456</exampleNumber> - </sharedCost> - </territory> - - <!-- Romania --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000AC0001MSWE.doc --> - <!-- http://en.wikipedia.org/wiki/Romania_telephone_area_codes --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Romania --> - <!-- Extension prefix found online, confirmed by a Romanian. --> - <territory id="RO" countryCode="40" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG" - preferredExtnPrefix=" int "> - <availableFormats> - <numberFormat pattern="([237]\d)(\d{3})(\d{4})"> - <leadingDigits> - [23]1| - 7 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{3})"> - <leadingDigits> - [23][02-9]| - [89] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[237-9]\d{8}</nationalNumberPattern> - <!-- Although the ITU plan says the number plan is open, this was changed in 2008 according - to wikipedia and people must dial the full number. For this reason the possible number - pattern is restricted to 9 digits. --> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[23][13-6]\d{7}</nationalNumberPattern> - <exampleNumber>211234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[1-8]\d{7}</nationalNumberPattern> - <exampleNumber>712345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[036]\d{6}</nationalNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>801\d{6}</nationalNumberPattern> - <exampleNumber>801123456</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>802\d{6}</nationalNumberPattern> - <exampleNumber>802123456</exampleNumber> - </personalNumber> - </territory> - - <!-- Serbia --> - <!-- http://www.itu.int/oth/T02020000B9/en --> - <territory id="RS" countryCode="381" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([23]\d{2})(\d{4,7})"> - <leadingDigits> - (?: - 2[389]| - 39 - )0 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([1-4]\d)(\d{4,8})"> - <leadingDigits> - 1| - 2(?: - [0-24-7]| - [389][1-9] - )| - 3(?: - [0-8]| - 9[1-9] - )| - 42 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(6[0-689])(\d{3,10})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([89]\d{2})(\d{3,6})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-46-9]\d{4,11}</nationalNumberPattern> - <possibleNumberPattern>\d{5,12}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[1-3]\d{6,9}</nationalNumberPattern> - <possibleNumberPattern>\d{5,10}</possibleNumberPattern> - <exampleNumber>1012345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6[0-689]\d{3,10}</nationalNumberPattern> - <possibleNumberPattern>\d{5,12}</possibleNumberPattern> - <exampleNumber>6012345</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{3,6}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - (?: - 9[0-2]| - 42 - )\d{4,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>90012345</exampleNumber> - </premiumRate> - </territory> - - <!-- Russian Federation --> - <!-- http://www.itu.int/oth/T02020000AD/en --> - <!-- http://en.wikipedia.org/wiki/%2B7 --> - <territory id="RU" countryCode="7" internationalPrefix="8~10" - nationalPrefix="8" nationalPrefixFormattingRule="$NP ($FG)" - mainCountryForCode="true" > - <availableFormats> - <!-- Formatting from wikipedia, confirmed on Goverment websites such as - http://www.minjust.ru/ru/structure/contact/. Contains formatting instructions for - Kazakhstan as well. --> - <numberFormat pattern="([3489]\d{2})(\d{3})(\d{2})(\d{2})"> - <leadingDigits>[34689]</leadingDigits> - <format>$1 $2-$3-$4</format> - </numberFormat> - <numberFormat pattern="(7\d{2})(\d{3})(\d{4})"> - <leadingDigits>7</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3489]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- The Ivanovo area code 493 was omitted on the official document, but this is still used - in the yellow pages, and on their own website and is listed on wikipedia. This applies - also to 395 (Irkutsk). Also including the 840 prefix for Abkhazia. --> - <nationalNumberPattern> - (?: - 3(?: - 0[12]| - 4[1-35-79]| - 5[1-3]| - 8[1-58]| - 9[0145] - )| - 4(?: - 01| - 1[1356]| - 2[13467]| - 7[1-5]| - 8[1-7]| - 9[1-689] - )| - 8(?: - 1[1-8]| - 2[01]| - 3[13-6]| - 4[0-8]| - 5[15]| - 6[1-35-7]| - 7[1-37-9] - ) - )\d{7} - </nationalNumberPattern> - <exampleNumber>3011234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9\d{9}</nationalNumberPattern> - <exampleNumber>9123456789</exampleNumber> - </mobile> - <tollFree> - <!-- The metadata states that 804 numbers are UAN numbers, but - teleum.ru/numbers/toll_free_804 states that they are now being offered as toll-free - numbers. --> - <nationalNumberPattern>80[04]\d{7}</nationalNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <!-- Covers tele-voting numbers as well. --> - <nationalNumberPattern>80[39]\d{7}</nationalNumberPattern> - <exampleNumber>8091234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Rwanda --> - <!-- http://www.rura.gov.rw/docs/RWANDA_NATIONAL_NUMBERING_PLAN.pdf --> - <territory id="RW" countryCode="250" internationalPrefix="000" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(25\d)(\d{3})(\d{3})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([7-9]\d{2})(\d{3})(\d{3})"> - <leadingDigits>[7-9]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[27-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>25\d{7}</nationalNumberPattern> - <exampleNumber>250123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[258]\d{7}</nationalNumberPattern> - <exampleNumber>720123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{6}</nationalNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Saudi Arabia --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Saudi_Arabia --> - <!-- http://www.itu.int/oth/T02020000B7/en --> - <territory id="SA" countryCode="966" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([1-467])(\d{3})(\d{4})"> - <leadingDigits>[1-467]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(9200)(\d{3})(\d{4})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(5\d)(\d{3})(\d{4})"> - <leadingDigits>5</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(800)(\d{3})(\d{4})"> - <leadingDigits>80</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(8111)(\d{3})(\d{3})"> - <leadingDigits>81</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{7,10}</nationalNumberPattern> - <possibleNumberPattern>\d{7,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1[24-7]| - 2[24-8]| - 3[35-8]| - 4[34-68]| - 6[2-5]| - 7[235-7] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <!-- Including "Nomadic" numbers from the Telecom Company "Go" --> - <nationalNumberPattern> - (?: - 5[013-69]\d| - 8111 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>512345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>9200\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>92001234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Solomon Islands --> - <territory id="SB" countryCode="677" internationalPrefix="00"> - </territory> - - <!-- Seychelles --> - <!-- http://www.itu.int/oth/T02020000BA/en --> - <!-- No evidence can be found that they still use their national prefix, so this is not - currently supported. --> - <territory id="SC" countryCode="248" internationalPrefix="0[0-2]" - preferredInternationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})"> - <leadingDigits> - [23578]| - [46][0-35-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3})(\d{3})"> - <leadingDigits>[46]4</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-8]\d{5,6}</nationalNumberPattern> - <possibleNumberPattern>\d{6,7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Includes Fixed Cellular. We are putting Fixed Services numbers here for now, as we - cannot find any evidence that they are more expensive to call than other Fixed Line - services. ISDN and DID services are here too, since they seem to be also fixed-line - phone numbers. --> - <nationalNumberPattern> - (?: - 2(?: - 1[78]| - 2[14-69]| - 3[2-4]| - 4[1-36-8]| - 6[167]| - [89]\d - )| - 3(?: - 2[1-6]| - 4[4-6]| - 55| - 6[016]| - 7\d| - 8[0-589]| - 9[0-5] - )| - 5(?: - 5\d| - 6[0-2] - )| - 6(?: - 0[0-27-9]| - 1[0-478]| - 2[145]| - 3[02-4]| - 4[124]| - 6[015]| - 7\d| - 8[1-3] - )| - 78[0138] - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>217123</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 5(?: - [1247-9]\d| - 6[3-9] - )| - 7(?: - [14679]\d| - 2[1-9]| - 8[24-79] - ) - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>510123</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>8000\d{2}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>800000</exampleNumber> - </tollFree> - <voip> - <nationalNumberPattern> - (?: - 44[1-3]| - 647 - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <exampleNumber>4410123</exampleNumber> - </voip> - </territory> - - <!-- Sudan --> - <!-- http://www.itu.int/oth/T02020000C4/en --> - <territory id="SD" countryCode="249" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[19]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Retaining previous prefix as 18 since it seems still to be used. --> - <nationalNumberPattern> - 1(?: - [25]\d| - 8[3567] - )\d{6} - </nationalNumberPattern> - <exampleNumber>121231234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9[1259]\d{7}</nationalNumberPattern> - <exampleNumber>911231234</exampleNumber> - </mobile> - </territory> - - <!-- Sweden --> - <!-- http://www.pts.se/upload/Ovrigt/Tele/Nummerfragor/Sv_nrplan_telefoni_enl_TU-T_rek_E.164.pdf --> - <!-- Formatting patterns are from that document and from the Swedish yellow pages - http://gulasidorna.eniro.se --> - <territory id="SE" countryCode="46" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(8)(\d{2,3})(\d{2,3})(\d{2})"> - <leadingDigits>8</leadingDigits> - <format>$1-$2 $3 $4</format> - </numberFormat> - <intlNumberFormat pattern="(8)(\d{2,3})(\d{2,3})(\d{2})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <numberFormat pattern="([1-69]\d)(\d{2,3})(\d{2})(\d{2})"> - <leadingDigits> - 1[013689]| - 2[0136]| - 3[1356]| - 4[0246]| - 54| - 6[03]| - 90 - </leadingDigits> - <format>$1-$2 $3 $4</format> - </numberFormat> - <intlNumberFormat pattern="([1-69]\d)(\d{2,3})(\d{2})(\d{2})"> - <leadingDigits> - 1[013689]| - 2[0136]| - 3[1356]| - 4[0246]| - 54| - 6[03]| - 90 - </leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <numberFormat pattern="([1-69]\d)(\d{3})(\d{2})"> - <leadingDigits> - 1[13689]| - 2[136]| - 3[1356]| - 4[0246]| - 54| - 6[03]| - 90 - </leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <intlNumberFormat pattern="([1-69]\d)(\d{3})(\d{2})"> - <leadingDigits> - 1[13689]| - 2[136]| - 3[1356]| - 4[0246]| - 54| - 6[03]| - 90 - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})"> - <leadingDigits> - 1[2457]| - 2[2457-9]| - 3[0247-9]| - 4[1357-9]| - 5[0-35-9]| - 6[124-9]| - 9(?: - [125-8]| - 3[0-5]| - 4[0-3] - ) - </leadingDigits> - <format>$1-$2 $3 $4</format> - </numberFormat> - <intlNumberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})"> - <leadingDigits> - 1[2457]| - 2[2457-9]| - 3[0247-9]| - 4[1357-9]| - 5[0-35-9]| - 6[124-9]| - 9(?: - [125-8]| - 3[0-5]| - 4[0-3] - ) - </leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <numberFormat pattern="(\d{3})(\d{2,3})(\d{2})"> - <leadingDigits> - 1[2457]| - 2[2457-9]| - 3[0247-9]| - 4[1357-9]| - 5[0-35-9]| - 6[124-9]| - 9(?: - [125-8]| - 3[0-5]| - 4[0-3] - ) - </leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(\d{3})(\d{2,3})(\d{2})"> - <leadingDigits> - 1[2457]| - 2[2457-9]| - 3[0247-9]| - 4[1357-9]| - 5[0-35-9]| - 6[124-9]| - 9(?: - [125-8]| - 3[0-5]| - 4[0-3] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <numberFormat pattern="(7[02-467])(\d{3})(\d{2})(\d{2})"> - <leadingDigits>7[02-467]</leadingDigits> - <format>$1-$2 $3 $4</format> - </numberFormat> - <intlNumberFormat pattern="(7[02-467])(\d{3})(\d{2})(\d{2})"> - <leadingDigits>7[02-467]</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <numberFormat pattern="(20)(\d{2,3})(\d{2})"> - <leadingDigits>20</leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(20)(\d{2,3})(\d{2})"> - <leadingDigits>20</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <numberFormat pattern="(9[034]\d)(\d{2})(\d{2})(\d{3})"> - <leadingDigits>9[034]</leadingDigits> - <format>$1-$2 $3 $4</format> - </numberFormat> - <intlNumberFormat pattern="(9[034]\d)(\d{2})(\d{2})(\d{3})"> - <leadingDigits>9[034]</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{7,10}</nationalNumberPattern> - <possibleNumberPattern>\d{5,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 1(?: - 0[1-8]\d{6}| - [136]\d{5,7}| - (?: - 2[0-35]| - 4[0-4]| - 5[0-25-9]| - 7[13-6]| - [89]\d - )\d{5,6} - )| - 2(?: - [136]\d{5,7}| - (?: - 2[0-7]| - 4[0136-8]| - 5[0-38]| - 7[018]| - 8[01]| - 9[0-57] - )\d{5,6} - )| - 3(?: - [356]\d{5,7}| - (?: - 0[0-4]| - 1\d| - 2[0-25]| - 4[056]| - 7[0-2]| - 8[0-3]| - 9[023] - )\d{5,6} - )| - 4(?: - [0246]\d{5,7}| - (?: - 1[01-8]| - 3[0135]| - 5[14-79]| - 7[0-246-9]| - 8[0156]| - 9[0-689] - )\d{5,6} - )| - 5(?: - 0[0-6]| - 1[1-5]| - 2[0-68]| - 3[0-4]| - 4\d| - 5[0-5]| - 6[03-5]| - 7[013]| - 8[0-79]| - 9[01] - )\d{5,6}| - 6(?: - [03]\d{5,7}| - (?: - 1[1-3]| - 2[0-4]| - 4[02-57]| - 5[0-37]| - 6[0-3]| - 7[0-2]| - 8[0247]| - 9[0-356] - )\d{5,6} - )| - 8\d{6,8}| - 9(?: - 0\d{5,7}| - (?: - 1[0-68]| - 2\d| - 3[02-59]| - 4[0-4]| - 5[0-4]| - 6[01]| - 7[0135-8]| - 8[01] - )\d{5,6} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - <exampleNumber>8123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[02-46]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>701234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>20\d{4,7}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - <exampleNumber>201234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 9(?: - 00| - 39| - 44 - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>77\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>771234567</exampleNumber> - </sharedCost> - </territory> - - <!-- Singapore --> - <!-- http://www.ida.gov.sg/policies%20and%20regulation/20060508120124.aspx --> - <territory id="SG" countryCode="65" internationalPrefix="0[0-3][0-9]"> - <availableFormats> - <numberFormat pattern="([3689]\d{3})(\d{4})"> - <leadingDigits> - [369]| - 8[1-9] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(1[89]00)(\d{3})(\d{4})"> - <leadingDigits>1[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(7000)(\d{4})(\d{3})"> - <leadingDigits>70</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(800)(\d{3})(\d{4})"> - <leadingDigits>80</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <!-- We have a stricter national number pattern for numbers beginning with 6 to enable us to - easily strip off leading "65" country codes. --> - <nationalNumberPattern> - [36]\d{7}| - [17-9]\d{7,10} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>6[1-8]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>61234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 8[1-5]| - 9[0-8] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>81234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1?800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - <exampleNumber>18001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>1900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>19001234567</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>3[0-2]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>31234567</exampleNumber> - </voip> - <uan> - <!-- Although not detailed in the plan beyond mentioning their existence, it seems 7000 - numbers are used for companies. Most of the online examples are in fact alpha-numbers. - --> - <nationalNumberPattern>7000\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - <exampleNumber>70001234567</exampleNumber> - </uan> - <shortCode> - <nationalNumberPattern> - 1(?: - [0136]\d{2}| - 41\d| - [89](?: - [1-9]\d| - 0[1-9] - )| - [57]\d{2,3})| - 99\d - </nationalNumberPattern> - <possibleNumberPattern>\d{3,5}</possibleNumberPattern> - <exampleNumber>1312</exampleNumber> - </shortCode> - </territory> - - <!-- Saint Helena and Tristan da Cunha --> - <!-- http://www.itu.int/oth/T02020000AF/en --> - <territory id="SH" countryCode="290" internationalPrefix="00"> - <!-- Numbers are formatted as a block. --> - <generalDesc> - <nationalNumberPattern>[2-9]\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{4}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [2-468]\d| - 7[01] - )\d{2} - </nationalNumberPattern> - <!-- Using St Helena Tourism as the example number. --> - <exampleNumber>2158</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>NA</nationalNumberPattern> - <possibleNumberPattern>NA</possibleNumberPattern> - </mobile> - <premiumRate> - <nationalNumberPattern> - (?: - [59]\d| - 7[2-9] - )\d{2} - </nationalNumberPattern> - <exampleNumber>5012</exampleNumber> - </premiumRate> - <shortCode> - <nationalNumberPattern>1\d{2,3}</nationalNumberPattern> - <possibleNumberPattern>\d{3,4}</possibleNumberPattern> - </shortCode> - </territory> - - <!-- Slovenia --> - <!-- http://www.itu.int/oth/T02020000BE/en --> - <territory id="SI" countryCode="386" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" - pattern="(\d)(\d{3})(\d{2})(\d{2})"> - <leadingDigits> - [12]| - 3[4-8]| - 4[24-8]| - 5[3-8]| - 7[3-8] - </leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([3-7]\d)(\d{3})(\d{3})"> - <leadingDigits> - [37][01]| - 4[019]| - 51| - 64 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([89][09])(\d{3,6})"> - <leadingDigits>[89][09]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([58]\d{2})(\d{5})"> - <leadingDigits> - 59| - 8[1-3] - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [1-7]\d{6,7}| - [89]\d{4,7} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1\d| - 2[2-8]| - 3[4-8]| - 4[24-8]| - [57][3-8] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - <exampleNumber>11234567</exampleNumber> - </fixedLine> - <mobile> - <!-- We include 049 here - it is VoIP in the plan, but SMS messages have been successfully - delivered - and it is run by Mobitel. There are also mobile numbers found on the - internet with this prefix - it is apparently used in Kosovo. --> - <nationalNumberPattern> - (?: - [37][01]| - 4[019]| - 51| - 64 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>31234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{4,6}</nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>80123456</exampleNumber> - </tollFree> - <premiumRate> - <!-- Includes televoting, mass calling --> - <nationalNumberPattern> - 90\d{4,6}| - 89[1-3]\d{2,5} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,8}</possibleNumberPattern> - <exampleNumber>90123456</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern> - (?: - 59| - 8[1-3] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>59012345</exampleNumber> - </voip> - </territory> - - <!-- Svalbard --> - <!-- Metadata shared with Norway. --> - <!-- http://www.npt.no/pt_internet/numsys/E.164.pdf --> - <territory id="SJ" countryCode="47" internationalPrefix="00" leadingZeroPossible="true"> - <generalDesc> - <nationalNumberPattern> - 0\d{4}| - [4789]\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{5}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>79\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>79123456</exampleNumber> - </fixedLine> - <!-- Copied from Norway metadata. --> - <mobile> - <nationalNumberPattern> - (?: - 4[015-8]| - 9\d - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>41234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80[01]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>80012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>82[09]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>82012345</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 810(?: - 0[0-6]| - [2-8]\d - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>81021234</exampleNumber> - </sharedCost> - <personalNumber> - <nationalNumberPattern>880\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>88012345</exampleNumber> - </personalNumber> - <uan> - <nationalNumberPattern> - 0\d{4}| - 81(?: - 0(?: - 0[7-9]| - 1\d - )| - 5\d{2} - )\d{3} - </nationalNumberPattern> - <exampleNumber>01234</exampleNumber> - </uan> - </territory> - - <!-- Slovakia --> - <!-- http://www.itu.int/oth/T02020000BD/en --> - <territory id="SK" countryCode="421" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(2)(\d{3})(\d{3})(\d{2})"> - <leadingDigits>2</leadingDigits> - <format>$1/$2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([3-5]\d)(\d{3})(\d{2})(\d{2})"> - <leadingDigits>[3-5]</leadingDigits> - <format>$1/$2 $3 $4</format> - </numberFormat> - <numberFormat pattern="([689]\d{2})(\d{3})(\d{3})"> - <leadingDigits>[689]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-689]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2-5]\d{8}</nationalNumberPattern> - <exampleNumber>212345678</exampleNumber> - </fixedLine> - <mobile> - <!-- 948 isn't in the number pattern, but many examples using this have been found, so - deeming it valid for now. --> - <nationalNumberPattern> - 9(?: - 0[1-8]| - 1[0-24-9]| - 4[0489] - )\d{6} - </nationalNumberPattern> - <exampleNumber>912123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern> - 9(?: - [78]\d{7}| - 00\d{6} - ) - </nationalNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>8[5-9]\d{7}</nationalNumberPattern> - <exampleNumber>850123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern> - 6(?: - 5[0-4]| - 9[0-6] - )\d{6} - </nationalNumberPattern> - <exampleNumber>690123456</exampleNumber> - </voip> - </territory> - - <!-- Sierra Leone --> - <!-- http://www.itu.int/oth/T02020000BB/en --> - <territory id="SL" countryCode="232" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <!-- Following formatting of online yellow pages www.leonedirect.com --> - <numberFormat pattern="(\d{2})(\d{6})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-578]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[235]2[2-4][2-9]\d{4}</nationalNumberPattern> - <exampleNumber>22221234</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding prefix 50 because it was found in online numbers and this is supported by - http://www.wtng.info/wtng-232-sl.html - although the data may be outdated, since no - further information about Datatel can be found. --> - <nationalNumberPattern> - (?: - 25| - 3[03]| - 44| - 5[056]| - 7[6-8]| - 88 - )[1-9]\d{5} - </nationalNumberPattern> - <exampleNumber>25123456</exampleNumber> - </mobile> - </territory> - - <!-- San Marino --> - <!-- http://www.itu.int/oth/T02020000B5/en --> - <!-- http://en.wikipedia.org/wiki/%2B39 (Information about Italy) --> - <!-- http://en.wikipedia.org/wiki/%2B378--> - <!-- San Marino fixed-line numbers have an area code of "0549". However, this seems to be - optional when dialling from outside the country; the phone number can be reached both with - and without this area code. The nationalPrefixForParsing and nationalPrefixTransformRule - are used to ensure that if the 0549 is not present, it will be added. --> - <territory id="SM" countryCode="378" internationalPrefix="00" - nationalPrefixForParsing="(?:0549)?([89]\d{5})" nationalPrefixTransformRule="0549$1" - leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[5-7]</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <intlNumberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <leadingDigits>[5-7]</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <!-- We follow the guidelines of the yellow-pages when formatting in national format. --> - <numberFormat pattern="(0549)(\d{6})"> - <leadingDigits>0</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- We follow the guidelines of the Telecommunications Document published on ITU when - formatting in international format. --> - <intlNumberFormat pattern="(0549)(\d{6})"> - <leadingDigits>0</leadingDigits> - <format>($1) $2</format> - </intlNumberFormat> - <!-- A rule in case the number has been stored without the leading 0549 necessary for - fixed-lines. --> - <numberFormat pattern="(\d{6})"> - <leadingDigits>[89]</leadingDigits> - <format>0549 $1</format> - </numberFormat> - <intlNumberFormat pattern="(\d{6})"> - <leadingDigits>[89]</leadingDigits> - <format>(0549) $1</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[05-7]\d{7,9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <!-- Example numbers provided by the Telecommunications Services. --> - <fixedLine> - <nationalNumberPattern> - 0549(?: - 8[0157-9]| - 9\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>0549886377</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6[16]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>66661212</exampleNumber> - </mobile> - <premiumRate> - <!-- Includes Video Call numbers. --> - <nationalNumberPattern>7[178]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>71123456</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>5[158]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>58001110</exampleNumber> - </voip> - </territory> - - <!-- Senegal --> - <!-- http://www.itu.int/oth/T02020000B8/en --> - <territory id="SN" countryCode="221" internationalPrefix="00"> - <availableFormats> - <!-- Using yellow pages and online telecom company formatting, rather than that implied in - the national numbering plan. --> - <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[37]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 3(?: - 010| - 3(?: - 8[1-9]| - 9[2-9] - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>301012345</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 77 7[45]X and 77 9[0-6]X from online searches and from numbers successfully - delivered by the wireless team. --> - <nationalNumberPattern> - 7(?: - 0[1256]0| - 6(?: - 1[23]| - 2[89]| - 3[3489]| - 4[6-9]| - 5[1-389]| - 6[6-9]| - 7[45]| - 8[3-8] - )| - 7(?: - 1[014-8]| - 2[0-7]| - 3[0-35-8]| - 4[0-6]| - [56]\d| - 7[0-589]| - 8[01]| - 9[0-6] - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>701012345</exampleNumber> - </mobile> - <voip> - <nationalNumberPattern>33301\d{4}</nationalNumberPattern> - <exampleNumber>333011234</exampleNumber> - </voip> - </territory> - - <!-- Somalia --> - <!-- http://www.itu.int/oth/T02020000C0/en --> - <!-- This document seems to cover only a small set of prefixes in Somalia. - Somalia has limited information available, and the numerous telecom carriers - were previously working under an unregulated environment. The extra prefixes - were added from the contact phone numbers of the countries main telecom - operators. See regression tests for more details. --> - <territory id="SO" countryCode="252" internationalPrefix="00"> - <availableFormats> - <!-- These follow formats online, such as www.hortel.net/contact_us.html --> - <numberFormat pattern="([13-5])(\d{6})"> - <leadingDigits>[13-5]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <!-- Unfortunately numbers beginning with 1 are hard to format based on prefixes, since it - depends on number length. --> - <numberFormat pattern="([19]\d)(\d{6})"> - <leadingDigits>15|9</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[13-59]\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 5[57-9]| - [134]\d - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - <!-- Example numbers are test numbers from the document. --> - <exampleNumber>5522010</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 9[01]| - 15 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>90792024</exampleNumber> - </mobile> - </territory> - - <!-- Suriname --> - <territory id="SR" countryCode="597" internationalPrefix="00"> - </territory> - - <!-- Sao Tome and Principe --> - <!-- http://www.itu.int/oth/T02020000B6/en --> - <territory id="ST" countryCode="239" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[29]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>22\d{5}</nationalNumberPattern> - <exampleNumber>2221234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9[89]\d{5}</nationalNumberPattern> - <exampleNumber>9812345</exampleNumber> - </mobile> - </territory> - - <!-- El Salvador --> - <!-- http://www.itu.int/oth/T020200003F/en - http://www.siget.gob.sv/BusquedaPublica.aspx?pagina=3&tipo=27&titulo=t8§or=2&ordenar=&dir=DESC - --> - <territory id="SV" countryCode="503" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <leadingDigits>[27]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{4})(\d{4})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [27]\d{7}| - [89]\d{6}(?:\d{4})? - </nationalNumberPattern> - <possibleNumberPattern> - \d{7,8}| - \d{11} - </possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Numbers starting with 20, 27, 28 and 29 are reserved but not yet used. --> - <nationalNumberPattern>2[1-6]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>70123456</exampleNumber> - </mobile> - <tollFree> - <!-- Toll free numbers are either 800 NNNN or 800 NNNN NNNN. --> - <nationalNumberPattern>800\d{4}(?:\d{4})?</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern> - <exampleNumber>8001234</exampleNumber> - </tollFree> - <premiumRate> - <!-- Premium rate numbers are either 900 NNNN or 900 NNNN NNNN. --> - <nationalNumberPattern>900\d{4}(?:\d{4})?</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern> - <exampleNumber>9001234</exampleNumber> - </premiumRate> - </territory> - - <!-- Syrian Arab Republic --> - <!-- http://www.itu.int/oth/T02020000C9/en --> - <territory id="SY" countryCode="963" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})"> - <leadingDigits>[1-5]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(9[3-689])(\d{4})(\d{3})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-59]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1(?: - 1\d?| - 4\d| - [2356] - )| - 2[1-35]| - 3(?: - 1\d| - [34] - )| - 4[13]| - 5[1-3] - )\d{6} - </nationalNumberPattern> - <exampleNumber>112345678</exampleNumber> - </fixedLine> - <mobile> - <!-- 945, 967 and 991 numbers are added as SMS messages have been successfully delivered to - these numbers, and they are also widely present on the Internet. --> - <nationalNumberPattern> - 9(?: - 3[23]| - 4[457]| - 55| - 6[67]| - 88| - 9[19] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>944567890</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Swaziland --> - <!-- http://www.itu.int/oth/T02020000C6/en --> - <territory id="SZ" countryCode="268" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <leadingDigits>[027]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[027]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <noInternationalDialling> - <nationalNumberPattern>0800\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>08001234</exampleNumber> - </noInternationalDialling> - <fixedLine> - <nationalNumberPattern> - 2(?: - 2(?: - 0[07]| - [13]7| - 2[57] - )| - 3(?: - 0[34]| - [1278]3| - 3[23]| - [46][34] - )| - (?: - 40[4-69]| - 67 - )| - 5(?: - 0[5-7]| - 1[6-9]| - [23][78]| - 48| - 5[01] - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>22171234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[6-8]\d{6}</nationalNumberPattern> - <exampleNumber>76123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>0800\d{4}</nationalNumberPattern> - <exampleNumber>08001234</exampleNumber> - </tollFree> - </territory> - - <!-- Turks and Caicos Islands --> - <!-- http://www.itu.int/oth/T02020000D8/en --> - <territory id="TC" countryCode="1" leadingDigits="649" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 649(?: - 712| - 9(?: - 4\d| - 50 - ) - )\d{4} - </nationalNumberPattern> - <exampleNumber>6497121234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 649(?: - 2(?: - 3[12]| - 4[1-5] - )| - 3(?: - 3[1-39]| - 4[1-57] - )| - 4[34][12] - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>6492311234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>64971[01]\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>6497101234</exampleNumber> - </voip> - </territory> - - <!-- Chad --> - <!-- http://www.itu.int/oth/T0202000029/en --> - <!-- The international prefix includes 16 as the international manual exchange. --> - <territory id="TD" countryCode="235" preferredInternationalPrefix="00" - internationalPrefix="00|16"> - <availableFormats> - <numberFormat - pattern="(\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2679]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 22(?: - [3789]0| - 5[0-5]| - 6[89] - )\d{4} - </nationalNumberPattern> - <exampleNumber>22501234</exampleNumber> - </fixedLine> - <mobile> - <!-- Sotel Tchad "SALAM" (77 XX XX XX) is classified as a fixed operator in the plan, but it - also says numbers starting with 7 are mobile numbers. Putting under mobile for now. - Also adding 63[5-7] from evidence of successful SMS delivery. --> - <nationalNumberPattern> - (?: - 6(?: - 3[0-7]| - 6\d - )| - 77\d| - 9(?: - 5[0-4]| - 9\d - ) - )\d{5} - </nationalNumberPattern> - <exampleNumber>63012345</exampleNumber> - </mobile> - </territory> - - <!-- French Southern Territories --> - <territory id="TF" countryCode="262" internationalPrefix="00" - nationalPrefix="0"> - </territory> - - <!-- Togo --> - <!-- http://www.itu.int/oth/T02020000D1/en --> - <territory id="TG" countryCode="228" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{2})(\d{2})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[02-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2[2-7]| - 3[23]| - 44| - 55| - 66| - 77 - )\d{5} - </nationalNumberPattern> - <exampleNumber>2212345</exampleNumber> - </fixedLine> - <mobile> - <!-- Added prefix 09 because many mobile numbers were found with this. --> - <nationalNumberPattern> - (?: - 0[1-9]| - 7[56]| - 8[1-7]| - 9\d - )\d{5} - </nationalNumberPattern> - <exampleNumber>0112345</exampleNumber> - </mobile> - </territory> - - <!-- Thailand --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000CD0001MSWE.doc --> - <territory id="TH" countryCode="66" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Formatting patterns from wikipedia and the document itself - - http://en.wikipedia.org/wiki/%2B66 --> - <numberFormat pattern="(2)(\d{3})(\d{4})"> - <leadingDigits>2</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([3-7]\d)(\d{3})(\d{3,4})"> - <leadingDigits>[3-7]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(8)(\d{4})(\d{4})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(1[89]00)(\d{3})(\d{3})"> - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2-8]\d{7,8}| - 1\d{9} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2[1-9]| - 3[24-9]| - 4[2-5]| - 5[3-6]| - 7[3-7] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <!-- 8[02] numbers are added as SMS messages have been successfully delivered to these - numbers, and they are also widely present on the Internet. --> - <nationalNumberPattern>8\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>812345678</exampleNumber> - </mobile> - <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number --> - <tollFree> - <nationalNumberPattern>1800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>1900\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>1900123456</exampleNumber> - </premiumRate> - <voip> - <nationalNumberPattern>60\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>601234567</exampleNumber> - </voip> - </territory> - - <!-- Tajikistan --> - <!-- http://www.itu.int/oth/T02020000CA/en --> - <territory id="TJ" countryCode="992" internationalPrefix="8~10" - nationalPrefix="8" nationalPrefixFormattingRule="($NP) $FG"> - <availableFormats> - <numberFormat pattern="([349]\d{2})(\d{2})(\d{4})"> - <leadingDigits> - [34]7| - 91[78] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([459]\d)(\d{3})(\d{4})"> - <leadingDigits> - 4[48]| - 5| - 9(?: - 19| - [0235-9] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(331700)(\d)(\d{2})"> - <leadingDigits>331</leadingDigits> - <leadingDigits>3317</leadingDigits> - <leadingDigits>33170</leadingDigits> - <leadingDigits>331700</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d)(\d{4})"> - <leadingDigits>3[1-5]</leadingDigits> - <leadingDigits> - 3(?: - [1245]| - 3(?: - [02-9]| - 1[0-589] - ) - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3-59]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{3,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3(?: - 1[3-5]| - 2[245]| - 3[12]| - 4[24-7]| - 5[25]| - 72 - )| - 4(?: - 46| - 74| - 87 - ) - )\d{6} - </nationalNumberPattern> - <exampleNumber>372123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 90 prefix as SMS messages could be successfully delivered to these mobile - numbers. --> - <nationalNumberPattern> - (?: - 505| - 9[0-35-9]\d - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>917123456</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Tokelau --> - <territory id="TK" countryCode="690" internationalPrefix="00"> - </territory> - - <!-- Timor-Leste (East Timor) --> - <!-- http://www.itu.int/oth/T02020000D0/en --> - <territory id="TL" countryCode="670" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-47-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2[1-5]| - 3[1-9]| - 4[1-4] - )\d{5} - </nationalNumberPattern> - <exampleNumber>2112345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[2-4]\d{5}</nationalNumberPattern> - <exampleNumber>7212345</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{5}</nationalNumberPattern> - <exampleNumber>8012345</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d{5}</nationalNumberPattern> - <exampleNumber>9012345</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>70\d{5}</nationalNumberPattern> - <exampleNumber>7012345</exampleNumber> - </personalNumber> - </territory> - - <!-- Turkmenistan --> - <!-- http://www.itu.int/oth/T02020000D7/en --> - <territory id="TM" countryCode="993" internationalPrefix="8~10" - nationalPrefix="8" nationalPrefixFormattingRule="$NP $FG"> - <availableFormats> - <!-- There doesn't seem to be a standardized format. The format below is based on the - Turkmenistan embassy at - http://www.turkmenistanembassy.org/turkmen/info/contact.html --> - <numberFormat pattern="([1-6]\d)(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-6]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 12\d| - 243| - [3-5]22 - )\d{5} - </nationalNumberPattern> - <exampleNumber>12345678</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 68 as SMS messages have been successfully sent to numbers with this prefix. --> - <nationalNumberPattern>6[6-8]\d{6}</nationalNumberPattern> - <exampleNumber>66123456</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Tunisia --> - <!-- http://www.itu.int/oth/T02020000D5/en --> - <territory id="TN" countryCode="216" internationalPrefix="00"> - <availableFormats> - <numberFormat pattern="([247-9]\d)(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[247-9]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>7\d{7}</nationalNumberPattern> - <exampleNumber>71234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 2[0-7]| - 40| - 9\d - )\d{6} - </nationalNumberPattern> - <exampleNumber>20123456</exampleNumber> - </mobile> - <!-- These are listed as 'value added services' - pending further information, we add them - here for now. --> - <premiumRate> - <nationalNumberPattern>8[028]\d{6}</nationalNumberPattern> - <exampleNumber>80123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Tonga --> - <territory id="TO" countryCode="676" internationalPrefix="00"> - </territory> - - <!-- Turkey --> - <!-- http://en.wikipedia.org/wiki/%2B90 --> - <!-- http://www.itu.int/oth/T02020000D6/en --> - <territory id="TR" countryCode="90" internationalPrefix="00" nationalPrefix="0"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="($NP$FG)" pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits> - [23]| - 4(?: - [0-35-9]| - 4[0-35-9] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$NP$FG" pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[589]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(444)(\d{1})(\d{3})"> - <leadingDigits>444</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [2-589]\d{9}| - 444\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Includes numbers starting with 392 for Northern Cyprus. --> - <nationalNumberPattern> - (?: - 2(?: - [13][26]| - [28][2468]| - [45][268]| - [67][246] - )| - 3(?: - [13][28]| - [24-6][2468]| - [78][02468]| - 92 - )| - 4(?: - [16][246]| - [23578][2468]| - 4[26] - ) - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2123456789</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 5(?: - 0[1-35-7]| - 22| - 3\d| - 4[1-79]| - 5[1-5]| - 9[246] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5012345678</exampleNumber> - </mobile> - <pager> - <nationalNumberPattern>512\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5123456789</exampleNumber> - </pager> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - <uan> - <!-- http://www.turktelekom.com.tr/tt/portal/News/Archive/7-digit-special-service-number-starting-with-444 --> - <nationalNumberPattern> - 444\d{4}| - 850\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>4441444</exampleNumber> - </uan> - </territory> - - <!-- Trinidad and Tobago --> - <!-- http://www.itu.int/oth/T02020000D4/en --> - <territory id="TT" countryCode="1" leadingDigits="868" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 868(?: - 2(?: - 01| - 2[1-4] - )| - 6(?: - 07| - 1[4-6]| - 2[1-9]| - [3-6]\d| - 7[0-79]| - 9[0-8] - )| - 82[12] - )\d{4} - </nationalNumberPattern> - <exampleNumber>8682211234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 868(?: - 29\d| - 3(?: - 0[1-9]| - 1[02-9]| - [2-9]\d - )| - 4(?: - [679]\d| - 8[0-4] - )| - 6(?: - 20| - 78| - 8\d - )| - 7(?: - 1[02-9]| - [2-9]\d - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8682911234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Tuvalu --> - <!-- http://www.itu.int/oth/T02020000D9/en --> - <territory id="TV" countryCode="688" internationalPrefix="00"> - <!-- Numbers are formatted as a block. --> - <generalDesc> - <nationalNumberPattern>[29]\d{4,5}</nationalNumberPattern> - <possibleNumberPattern>\d{5,6}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2[02-9]\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{5}</possibleNumberPattern> - <exampleNumber>20123</exampleNumber> - </fixedLine> - <mobile> - <!-- Some numbers online can be found that are 5-digits long, and start with 90 or 91. We - don't know if these are valid or not - the ITU document excludes them - so are not - covering these for now. --> - <nationalNumberPattern>90\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>901234</exampleNumber> - </mobile> - </territory> - - <!-- Taiwan, China --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000EB0003MSWE.doc --> - <!-- Extension symbols found on the internet so far have been #, X and Ext - - so # has been chosen as the preferred extension prefix. --> - <territory id="TW" countryCode="886" internationalPrefix="0(?:0[25679]|19)" - nationalPrefix="0" preferredExtnPrefix="#" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([2-8])(\d{3,4})(\d{4})"> - <leadingDigits> - [2-7]| - 8[1-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([89]\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 80| - 9 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2-8]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>21234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>9\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>912345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Tanzania --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000CB0001MSWE.doc --> - <territory id="TZ" countryCode="255" internationalPrefix="00[056]" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([24]\d)(\d{3})(\d{4})"> - <leadingDigits>[24]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([67]\d{2})(\d{3})(\d{3})"> - <leadingDigits>[67]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Formatting for special numbers from www.tcra.go.tz --> - <numberFormat pattern="([89]\d{2})(\d{2})(\d{4})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2[2-8]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - <exampleNumber>222345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 6[158]| - 7[1-9] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>612345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80[08]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern> - 8(?: - 40| - 6[01] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>840123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>41\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>412345678</exampleNumber> - </voip> - </territory> - - <!-- Ukraine --> - <!-- http://www.itu.int/oth/T02020000DB/en --> - <!-- http://en.wikipedia.org/wiki/%2B380 --> - <territory id="UA" countryCode="380" internationalPrefix="0~0" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- City codes separated out. No definitive list has been found of what constitutes the - area code - http://www.ua.all-biz.info/guide/phonecodes is useful but not error-free. - Have used local yellow pages guidelines, Google searches and regression tests to - reverse-engineer these rules as well as bugs. --> - <numberFormat pattern="([3-69]\d)(\d{3})(\d{4})"> - <leadingDigits> - 39| - 4(?: - [45][0-5]| - 87 - )| - 5(?: - 0| - 6[37]| - 7[37] - )| - 6[36-8]| - 9[1-9] - </leadingDigits> - <leadingDigits> - 39| - 4(?: - [45][0-5]| - 87 - )| - 5(?: - 0| - 6(?: - 3[14-7]| - 7 - )| - 7[37] - )| - 6[36-8]| - 9[1-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([3-689]\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 3[1-8]2| - 4[1378]2| - 5(?: - [12457]2| - 6[24] - )| - 6(?: - [49]2| - [12][29]| - 5[24] - )| - 8| - 90 - </leadingDigits> - <leadingDigits> - 3(?: - [1-46-8]2[013-9]| - 52 - )| - 4[1378]2| - 5(?: - [12457]2| - 6[24] - )| - 6(?: - [49]2| - [12][29]| - 5[24] - )| - 8| - 90 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([3-6]\d{3})(\d{5})"> - <leadingDigits> - 3(?: - 5[013-9]| - [1-46-8] - )| - 4(?: - [137][013-9]| - 6| - [45][6-9]| - 8[4-6] - )| - 5(?: - [1245][013-9]| - 6[0135-9]| - 3| - 7[4-6] - )| - 6(?: - [49][013-9]| - 5[0135-9]| - [12][13-8] - ) - </leadingDigits> - <leadingDigits> - 3(?: - 5[013-9]| - [1-46-8](?: - 22| - [013-9] - ) - )| - 4(?: - [137][013-9]| - 6| - [45][6-9]| - 8[4-6] - )| - 5(?: - [1245][013-9]| - 6(?: - 3[02389]| - [015689] - )| - 3| - 7[4-6] - )| - 6(?: - [49][013-9]| - 5[0135-9]| - [12][13-8] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[3-689]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 3[1-8]| - 4[13-8]| - 5[1-7]| - 6[12459] - )\d{7} - </nationalNumberPattern> - <exampleNumber>311234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 39| - 50| - 6[36-8]| - 9[1-9] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>391234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Uganda --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000F10001MSWE.doc --> - <!-- http://www.ucc.co.ug/licensing/ugandaNumberingPlan.pdf --> - <territory id="UG" countryCode="256" internationalPrefix="00[057]" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([247-9]\d{2})(\d{6})"> - <leadingDigits> - [7-9]| - 200| - 4(?: - 6[45]| - [7-9] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([34]\d)(\d{7})"> - <leadingDigits> - 3| - 4(?: - [1-5]| - 6[0-36-9] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(2024)(\d{5})"> - <leadingDigits>202</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 3\d{8}| - 4(?: - [1-6]\d| - 7[136]| - 8[1356]| - 96 - )\d{6}| - 20(?: - 0\d| - 24 - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,9}</possibleNumberPattern> - <exampleNumber>312345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 7(?: - [1578]\d| - 0[0-4] - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>712345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800[123]\d{5}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>90[123]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>901123456</exampleNumber> - </premiumRate> - </territory> - - <!-- United States --> - <!-- http://www.nanpa.com/reports/reports_npa.html --> - <!-- http://en.wikipedia.org/wiki/North_American_Numbering_Plan --> - <!-- Note the national prefix of US is the same as its country code, and when formatting phone - numbers in the national format, it is not included. Therefore, we omit it here to make - formatting consistent with the rest of the world. The same applies to all the - countries/regions under NANPA --> - <!-- The national prefix of "1" here is the same as the country code. It is not used by default - when formatting, but is set here so that users who are calling formatByPattern can specify - NationalPrefixFormattingRule if they want to. --> - <territory id="US" countryCode="1" internationalPrefix="011" - mainCountryForCode="true" nationalPrefix="1"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <format>($1) $2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1-$2</format> - </numberFormat> - <!-- A different pattern is used when formatting internationally, as the area code is no - longer optional and should not be in brackets. --> - <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <format>$1-$2-$3</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-9]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - 0[1-35-9]| - 1[02-9]| - 2[4589]| - 3[149]| - 4[08]| - 5[1-46]| - 6[0279]| - 7[06]| - 8[13] - )| - 3(?: - 0[1-57-9]| - 1[02-9]| - 2[0135]| - 3[014679]| - 47| - 5[12]| - 6[01]| - 8[056] - )| - 4(?: - 0[124-9]| - 1[02-579]| - 2[3-5]| - 3[0245]| - 4[0235]| - 58| - 69| - 7[0589]| - 8[04] - )| - 5(?: - 0[1-57-9]| - 1[0235-8]| - 20| - 3[0149]| - 4[01]| - 5[19]| - 6[1-37]| - 7[013-5]| - 8[056] - )| - 6(?: - 0[1-35-9]| - 1[024-9]| - 2[036]| - 3[016]| - 4[16]| - 5[017]| - 6[0-29]| - 78| - 8[12] - )| - 7(?: - 0[1-46-8]| - 1[2-9]| - 2[047]| - 3[124]| - 4[07]| - 5[47]| - 6[02359]| - 7[02-59]| - 8[156] - )| - 8(?: - 0[1-68]| - 1[02-8]| - 28| - 3[0-25]| - 4[3578]| - 5[06-9]| - 6[02-5]| - 7[028] - )| - 9(?: - 0[1346-9]| - 1[02-9]| - 2[0589]| - 3[1678]| - 4[0179]| - 5[1246]| - 7[0-3589]| - 8[059] - ) - )[2-9]\d{6} - </nationalNumberPattern> - <exampleNumber>2012345678</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 2(?: - 0[1-35-9]| - 1[02-9]| - 2[4589]| - 3[149]| - 4[08]| - 5[1-46]| - 6[0279]| - 7[06]| - 8[13] - )| - 3(?: - 0[1-57-9]| - 1[02-9]| - 2[0135]| - 3[014679]| - 47| - 5[12]| - 6[01]| - 8[056] - )| - 4(?: - 0[124-9]| - 1[02-579]| - 2[3-5]| - 3[0245]| - 4[0235]| - 58| - 69| - 7[0589]| - 8[04] - )| - 5(?: - 0[1-57-9]| - 1[0235-8]| - 20| - 3[0149]| - 4[01]| - 5[19]| - 6[1-37]| - 7[013-5]| - 8[056] - )| - 6(?: - 0[1-35-9]| - 1[024-9]| - 2[036]| - 3[016]| - 4[16]| - 5[017]| - 6[0-29]| - 78| - 8[12] - )| - 7(?: - 0[1-46-8]| - 1[2-9]| - 2[047]| - 3[124]| - 4[07]| - 5[47]| - 6[02359]| - 7[02-59]| - 8[156] - )| - 8(?: - 0[1-68]| - 1[02-8]| - 28| - 3[0-25]| - 4[3578]| - 5[06-9]| - 6[02-5]| - 7[028] - )| - 9(?: - 0[1346-9]| - 1[02-9]| - 2[0589]| - 3[1678]| - 4[0179]| - 5[1246]| - 7[0-3589]| - 8[059] - ) - )[2-9]\d{6} - </nationalNumberPattern> - <exampleNumber>2012345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Uruguay --> - <territory id="UY" countryCode="598" internationalPrefix="00" - nationalPrefix="0"> - </territory> - - <!-- Uzbekistan --> - <!-- http://www.itu.int/oth/T02020000E1/en --> - <territory id="UZ" countryCode="998" internationalPrefix="8~10" - nationalPrefix="8" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([679]\d)(\d{3})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[679]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{7,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Adding 70 prefix as suggested by http://www.ttts.uz/eng/telephone_codes/codes_uzb_eng - --> - <nationalNumberPattern> - (?: - 6[125679]| - 7[0-69] - )\d{7} - </nationalNumberPattern> - <exampleNumber>612345678</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding 9[45] as suggested by http://www.ucell.uz/en/for_subscribers/how_to_call.html - --> - <nationalNumberPattern>9[0-57-9]\d{7}</nationalNumberPattern> - <exampleNumber>912345678</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Vatican City --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Vatican_City --> - <!-- Note that numbers here are also accessible via Italy (+39 and prefix of 06 698) but can - also be dialled with the Vatican City country code. --> - <territory id="VA" countryCode="379" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(06)(\d{4})(\d{4})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>06\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>06698\d{5}</nationalNumberPattern> - <exampleNumber>0669812345</exampleNumber> - </fixedLine> - <mobile> - <!-- We have no information on mobile numbers from the Vatican. It is probable that they use - Italian mobile contracts. --> - <nationalNumberPattern>N/A</nationalNumberPattern> - <possibleNumberPattern>N/A</possibleNumberPattern> - </mobile> - <!-- No information exists about other types of numbers. --> - </territory> - - <!-- Saint Vincent and the Grenadines --> - <!-- http://www.itu.int/oth/T02020000B3/en --> - <territory id="VC" countryCode="1" leadingDigits="784" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[5789]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 784(?: - 266| - 3(?: - 6[6-9]| - 7\d| - 8[0-24-6] - )| - 4(?: - 38| - 5[0-36-8]| - 8\d| - 9[01] - )| - 555| - 638| - 784 - )\d{4} - </nationalNumberPattern> - <exampleNumber>7842661234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 784(?: - 4(?: - 3[0-24]| - 5[45]| - 9[2-5] - )| - 5(?: - 2[6-9]| - 3[0-3]| - 93 - ) - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7844301234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Venezuela --> - <!-- http://www.itu.int/oth/T02020000E3/en --> - <!-- http://en.wikipedia.org/wiki/+58 --> - <!-- 1XX specifies a particular carrier to route a call to. --> - <territory id="VE" countryCode="58" internationalPrefix="00" - nationalPrefix="0" nationalPrefixForParsing="(1\d{2})|0" - nationalPrefixFormattingRule="$NP$FG" - carrierCodeFormattingRule="$CC $FG"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{7})"> - <format>$1-$2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[24589]\d{9}</nationalNumberPattern> - <!-- Open numbering plan. --> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Including region-free 500 calls here, since these are treated as local calls. Wikipedia - mentions these as 5XX, but online examples that can be found are seemingly restricted - to 50[01]. --> - <nationalNumberPattern> - (?: - 2(?: - 12| - 3[457-9]| - [58][1-9]| - [467]\d| - 9[1-6] - )| - 50[01] - )\d{7} - </nationalNumberPattern> - <exampleNumber>2121234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 4(?: - 1[24-8]| - 2[46] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>4121234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8001234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9001234567</exampleNumber> - </premiumRate> - </territory> - - <!-- Virgin Islands, British --> - <!-- http://www.itu.int/oth/T020200001E/en --> - <territory id="VG" countryCode="1" leadingDigits="284" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 284(?: - (?: - 229| - 4(?: - 46| - 9[45] - )| - 8(?: - 52| - 6[459] - ) - )\d{4}| - 496[0-5]\d{3} - ) - </nationalNumberPattern> - <exampleNumber>2842291234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 284(?: - (?: - 30[0-3]| - 4(?: - 4[0-5]| - 68| - 99 - )| - 54[0-4] - )\d{4}| - 496[6-9]\d{3} - ) - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>2843001234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Virgin Islands, United States --> - <!-- http://www.itu.int/oth/T02020000DF/en --> - <territory id="VI" countryCode="1" leadingDigits="340" - nationalPrefix="1" internationalPrefix="011"> - <generalDesc> - <!-- NANPA country - uses US formatting rules --> - <nationalNumberPattern>[3589]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - 340(?: - 6[49]2| - 7[17]\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>3406421234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - 340(?: - 6[49]2| - 7[17]\d - )\d{4} - </nationalNumberPattern> - <exampleNumber>3406421234</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern> - 8(?: - 00| - 55| - 66| - 77| - 88 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8002345678</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>9002345678</exampleNumber> - </premiumRate> - <personalNumber> - <!-- http://www.nanpa.com/pdf/PL_416.pdf --> - <nationalNumberPattern> - 5(?: - 00| - 33| - 44 - )[2-9]\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5002345678</exampleNumber> - </personalNumber> - </territory> - - <!-- Viet Nam (Vietnam) --> - <!-- http://www.itu.int/oth/T02020000E4/en --> - <!-- http://en.wikipedia.org/wiki/%2B84 --> - <territory id="VN" countryCode="84" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([48])(\d{4})(\d{4})"> - <leadingDigits>[48]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([235-7]\d)(\d{4})(\d{3})"> - <leadingDigits> - 2[025-79]| - 3[0136-9]| - 5[2-9]| - 6[0-46-9]| - 7[02-79] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(80)(\d{5})"> - <leadingDigits>80</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(69\d)(\d{4,5})"> - <leadingDigits>69</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([235-7]\d{2})(\d{4})(\d{3})"> - <leadingDigits> - 2[1348]| - 3[25]| - 5[01]| - 65| - 7[18] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(9\d)(\d{3})(\d{2})(\d{2})"> - <leadingDigits>9</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(1[2689]\d)(\d{3})(\d{4})"> - <leadingDigits> - 1(?: - [26]| - 88| - 99 - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(1[89]00)(\d{4,6})"> - <leadingDigits>1[89]0</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - 8\d{5,8}| - [1-79]\d{7,9} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 2(?: - [025-79]| - 1[0189]| - [348][01] - )| - 3(?: - [0136-9]| - [25][01] - )| - [48]\d| - 5(?: - [01][01]| - [2-9] - )| - 6(?: - [0-46-8]| - 5[01] - )| - 7(?: - [02-79]| - [18][01] - ) - )\d{7}| - 69\d{5,6}| - 80\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - <exampleNumber>2101234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 9\d| - 1(?: - 2\d| - 6[3-9]| - 88| - 99 - ) - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>912345678</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>1800\d{4,6}</nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - <exampleNumber>1800123456</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>1900\d{4,6}</nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - <exampleNumber>1900123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Vanuatu --> - <territory id="VU" countryCode="678" internationalPrefix="00"> - </territory> - - <!-- Wallis and Futuna (Territoire français d'outre-mer) --> - <territory id="WF" countryCode="681" internationalPrefix="19"> - </territory> - - <!-- Samoa --> - <!-- http://www.itu.int/oth/T02020000B4/en --> - <territory id="WS" countryCode="685" internationalPrefix="0" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- Should be formatted in one block, apart from the specific series below. For this reason - the leadingDigits is more detailed than would appear necessary. --> - <numberFormat pattern="(8[04]0)(\d{3,4})"> - <leadingDigits>8[04]0</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(7[25-7])(\d{5})"> - <leadingDigits>7[25-7]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[2-8]\d{4,6}</nationalNumberPattern> - <possibleNumberPattern>\d{5,7}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - [2-5]\d| - 6[1-9]| - 840\d - )\d{3} - </nationalNumberPattern> - <possibleNumberPattern>\d{5,7}</possibleNumberPattern> - <exampleNumber>22123</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 60| - 7[25-7]\d - )\d{4} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,7}</possibleNumberPattern> - <exampleNumber>601234</exampleNumber> - </mobile> - <tollFree> - <!-- The 800 number series is new, and is used by companies such as the ANZ bank in Samoa to - provide 24 hour eMerchant support. It is marked as "Customized Services" in the plan - for now, so may be also used for other purposes than toll free, but until we have - further evidence of these we will keep it as toll free. --> - <nationalNumberPattern>800\d{3}</nationalNumberPattern> - <possibleNumberPattern>\d{6}</possibleNumberPattern> - <exampleNumber>800123</exampleNumber> - </tollFree> - <!-- Current research suggests other types of numbers are not used in Samoa. --> - </territory> - - <!-- Yemen --> - <!-- http://www.itu.int/oth/T02020000E7/en --> - <territory id="YE" countryCode="967" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([1-7])(\d{3})(\d{3,4})"> - <leadingDigits> - [1-6]| - 7[24-68] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(7[137]\d)(\d{3})(\d{3})"> - <leadingDigits>7[137]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-7]\d{6,8}</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1(?: - 7\d| - [2-68] - )| - 2[2-68]| - 3[2358]| - 4[2-58]| - 5[2-6]| - 6[3-58]| - 7[24-68] - )\d{5} - </nationalNumberPattern> - <possibleNumberPattern>\d{6,8}</possibleNumberPattern> - <exampleNumber>1234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[137]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>712345678</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - </territory> - - <!-- Mayotte --> - <!-- Some information at http://en.wikipedia.org/wiki/Telephone_numbers_in_France - most from - collection of internet data. http://www.comores-online.com/mwezinet/internet/262.htm - verifies the fixed-line prefixes, but the mobile prefixes listed here seem out of date. - --> - <territory id="YT" countryCode="262" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG" - leadingDigits="269|63"> - <!-- Formatting as per La Réunion. --> - <generalDesc> - <nationalNumberPattern>[268]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2696[0-4]\d{4}</nationalNumberPattern> - <exampleNumber>269601234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>639\d{6}</nationalNumberPattern> - <exampleNumber>639123456</exampleNumber> - </mobile> - <!-- Same as in France. --> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - </territory> - - <!-- South Africa --> - <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000C10001PDFE.pdf --> - <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_South_Africa --> - <territory id="ZA" countryCode="27" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(860)(\d{3})(\d{3})"> - <leadingDigits>860</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="([1-578]\d)(\d{3})(\d{4})"> - <leadingDigits> - [1-57]| - 8(?: - [0-57-9]| - 6[1-9] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern> - (?: - 1[0-8]| - 2[1-478]| - 3[1-69]| - 4\d| - 5[1346-8] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{8,9}</possibleNumberPattern> - <exampleNumber>101234567</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern> - (?: - 7[1-4689]| - 8[1-5789] - )\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>711234567</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>86[1-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>861234567</exampleNumber> - </premiumRate> - <sharedCost> - <nationalNumberPattern>860\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>860123456</exampleNumber> - </sharedCost> - <voip> - <nationalNumberPattern>87\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>871234567</exampleNumber> - </voip> - </territory> - - <!-- Zambia --> - <!-- http://www.itu.int/oth/T02020000E8/en --> - <territory id="ZM" countryCode="260" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([29]\d)(\d{7})"> - <leadingDigits>[29]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(800)(\d{3})(\d{3})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[289]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>21[1-8]\d{6}</nationalNumberPattern> - <exampleNumber>211234567</exampleNumber> - </fixedLine> - <mobile> - <!-- Adding extra prefixes 6[457-9] and 7[4-6] since SMS messages have been successfully - delivered to these numbers, and numbers like this can be found on the Internet. --> - <nationalNumberPattern> - 9(?: - 55| - 6[4-9]| - 7[4-9] - )\d{6} - </nationalNumberPattern> - <exampleNumber>955123456</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - <exampleNumber>800123456</exampleNumber> - </tollFree> - </territory> - - <!-- Zimbabwe --> - <!-- http://www.itu.int/oth/T02020000E9/en --> - <territory id="ZW" countryCode="263" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <!-- One-digit area codes --> - <numberFormat pattern="([49])(\d{3})(\d{2,5})"> - <leadingDigits> - 4| - 9[2-9] - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Mobile numbers --> - <numberFormat pattern="([179]\d)(\d{3})(\d{3,4})"> - <leadingDigits> - [19]1| - 7 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Two-digit area codes --> - <numberFormat pattern="([1-356]\d)(\d{3,5})"> - <leadingDigits> - 1[3-9]| - 2(?: - [1-469]| - 0[0-35-9]| - [45][0-79] - )| - 3(?: - 0[0-79]| - 1[0-689]| - [24-69]| - 3[0-69] - )| - 5(?: - [02-46-9]| - [15][0-69] - )| - 6(?: - [0145]| - [29][0-79]| - 3[0-689]| - [68][0-69] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([1-356]\d)(\d{3})(\d{3})"> - <leadingDigits> - 1[3-9]| - 2(?: - [1-469]| - 0[0-35-9]| - [45][0-79] - )| - 3(?: - 0[0-79]| - 1[0-689]| - [24-69]| - 3[0-69] - )| - 5(?: - [02-46-9]| - [15][0-69] - )| - 6(?: - [0145]| - [29][0-79]| - 3[0-689]| - [68][0-69] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Three-digit area codes --> - <numberFormat pattern="([2356]\d{2})(\d{3,5})"> - <leadingDigits> - 2(?: - [278]| - 0[45]| - 48 - )| - 3(?: - 08| - 17| - 3[78]| - [78] - )| - 5[15][78]| - 6(?: - [29]8| - 37| - [68][78] - ) - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([2356]\d{2})(\d{3})(\d{3})"> - <leadingDigits> - 2(?: - [278]| - 0[45]| - 48 - )| - 3(?: - 08| - 17| - 3[78]| - [78] - )| - 5[15][78]| - 6(?: - [29]8| - 37| - [68][78] - ) - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- Four-digit area codes --> - <numberFormat pattern="([25]\d{3})(\d{3,5})"> - <leadingDigits> - (?: - 25| - 54 - )8 - </leadingDigits> - <leadingDigits> - 258[23]| - 5483 - </leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([25]\d{3})(\d{3})(\d{3})"> - <leadingDigits> - (?: - 25| - 54 - )8 - </leadingDigits> - <leadingDigits> - 258[23]| - 5483 - </leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- VOIP numbers --> - <numberFormat pattern="(8\d{3})(\d{6})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <!-- A complicated nationalNumberPattern is necessary here, since the numbers are extremely - variable in length and the possible prefixes clash with the country code. --> - <nationalNumberPattern> - 2(?: - [012457-9]\d{3,8}| - 6\d{3,6} - )| - [13-79]\d{4,8}| - 86\d{8} - </nationalNumberPattern> - <possibleNumberPattern>\d{3,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- Numbering is grouped by subscriber-number length. --> - <nationalNumberPattern> - (?: - 1[3-9]| - 2(?: - 0[45]| - [16]| - 2[28]| - [49]8?| - 58[23]| - 7[246]| - 8[1346-9] - )| - 3(?: - 08?| - 17?| - 3[78]| - [2456]| - 7[1569]| - 8[379] - )| - 5(?: - [07-9]| - 1[78]| - 483| - 5(?: - 7?| - 8 - ) - )| - 6(?: - 0| - 28| - 37?| - [45][68][78]| - 98? - )| - 848 - )\d{3,6}| - (?: - 2(?: - 27| - 5| - 7[135789]| - 8[25] - )| - 3[39]| - 5[1-46]| - 6[126-8] - )\d{4,6}| - 2(?: - 0| - 70 - )\d{5,6}| - (?: - 4\d| - 9[2-8] - )\d{4,7} - </nationalNumberPattern> - <exampleNumber>1312345</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>7[137]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>711234567</exampleNumber> - </mobile> - <!-- No tollFree or premiumRate information can be found. --> - <voip> - <nationalNumberPattern> - 86(?: - 1[12]| - 22| - 30| - 44| - 8[367]| - 99 - )\d{6} - </nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>8686123456</exampleNumber> - </voip> - </territory> - </territories> -</phoneNumberMetadata> diff --git a/third_party/libphonenumber/resources/PhoneNumberMetaDataForTesting.xml b/third_party/libphonenumber/resources/PhoneNumberMetaDataForTesting.xml deleted file mode 100644 index 661bdd2..0000000 --- a/third_party/libphonenumber/resources/PhoneNumberMetaDataForTesting.xml +++ /dev/null @@ -1,764 +0,0 @@ -<!-- Copyright (C) 2009 Google Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - @author: Shaopeng Jia - - MetaData on Phone Number Plan and formatting rules. This file is used - solely for the purpose of unittesting, so data in this file is not - necessarily consistent with that of - ../src/PhoneNumberMetaData.xml ---> - -<phoneNumberMetadata> - <territories> - <!-- Andorra --> - <territory id="AD" countryCode="376" internationalPrefix="00"> - </territory> - - <!-- Angola --> - <!-- This country has been coopted to test the case of a national prefix - with a non-numeric symbol in it. --> - <territory id="AO" countryCode="244" internationalPrefix="00" nationalPrefix="0~0"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})(\d{3})"> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[29]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2\d(?:[26-9]\d|\d[26-9])\d{5}</nationalNumberPattern> - <exampleNumber>222123456</exampleNumber> - </fixedLine> - <mobile> - <!-- Expanded the 92 prefix possibilities to matchnumbers found online. --> - <nationalNumberPattern>9[1-3]\d{7}</nationalNumberPattern> - <exampleNumber>923123456</exampleNumber> - </mobile> - </territory> - - <!-- Argentina --> - <territory id="AR" countryCode="54" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG" - nationalPrefixForParsing="0(?:(11|343|3715)15)?" - nationalPrefixTransformRule="9$1"> - <!-- Note in nationalPrefixForParsing, the areacode (such as 11, 343, etc.), when present in - front of carrier selection code 15, is captured to replace $1 in - nationalPrefixTransformRule --> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>11</leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{2})(\d{4})"> - <leadingDigits>1[02-9]|[23]</leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <numberFormat pattern="9(11)(\d{4})(\d{4})"> - <leadingDigits>911</leadingDigits> - <format>$1 15 $2-$3</format> - </numberFormat> - <numberFormat pattern="9(\d{4})(\d{2})(\d{4})" - carrierCodeFormattingRule="$NP$FG $CC"> - <leadingDigits>9(?:1[02-9]|[23])</leadingDigits> - <format>$1 $2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[68]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <intlNumberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>11</leadingDigits> - <format>$1 $2-$3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(\d{4})(\d{2})(\d{4})"> - <leadingDigits>1[02-9]|[23]</leadingDigits> - <format>$1 $2-$3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(9)(11)(\d{4})(\d{4})"> - <leadingDigits>911</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <intlNumberFormat pattern="(9)(\d{4})(\d{2})(\d{4})"> - <leadingDigits>9(?:1[02-9]|[23])</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[68]</leadingDigits> - <format>$1-$2-$3</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-3689]\d{9,10}</nationalNumberPattern> - <possibleNumberPattern>\d{6,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[1-3]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>9\d{10}|[1-3]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>6(0\d|10)\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- Australia --> - <territory id="AU" countryCode="61" internationalPrefix="001[12]" - nationalPrefix="0" preferredInternationalPrefix="0011" - nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat nationalPrefixFormattingRule="$FG" - pattern="(\d{4})(\d{3})(\d{3})" > - <leadingDigits>1</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{1})(\d{4})(\d{4})"> - <leadingDigits>[2-478]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc > - <nationalNumberPattern>[1-578]\d{4,14}</nationalNumberPattern> - <possibleNumberPattern>\d{5,15}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2378]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>4\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>1800\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>190[0126]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- Bahamas --> - <territory id="BS" countryCode="1" internationalPrefix="011" - nationalPrefix="1"> - <generalDesc> - <nationalNumberPattern>(242|8(00|66|77|88)|900)\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[3-57]|9[2-5])|4(?:2[237]|51|64|77)|502|636|702)\d{4}</nationalNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>242(357|359|457|557)\d{4}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>8(00|66|77|88)\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- Germany --> - <territory id="DE" countryCode="49" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3,8})"> - <leadingDigits>2|3[3-9]|906|[4-9][1-9]1</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{4,9})"> - <leadingDigits>[34]0|[68]9</leadingDigits> - <format>$1/$2</format> - </numberFormat> - <!-- Extra fictional pattern for shorter numbers with the same prefixes as the following - pattern, to illustrate the problem the AYTF has with real patterns that share this - property. --> - <numberFormat pattern="([4-9]\d)(\d{2})"> - <leadingDigits>[4-9]</leadingDigits> - <leadingDigits>[4-6]|[7-9](?:\d[1-9]|[1-9]\d)</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="([4-9]\d{3})(\d{2,7})"> - <leadingDigits>[4-9]</leadingDigits> - <leadingDigits>[4-6]|[7-9](?:\d[1-9]|[1-9]\d)</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{1})(\d{6})"> - <leadingDigits>800</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3,4})(\d{4})"> - <leadingDigits>900</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{4,14}</nationalNumberPattern> - <possibleNumberPattern>\d{2,14}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>(?:[24-6]\d{2}|3[03-9]\d|[789](?:[1-9]\d|0[2-9]))\d{3,8}</nationalNumberPattern> - <exampleNumber>30123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>1(5\d{9}|7\d{8}|6[02]\d{8}|63\d{7})</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>900([135]\d{6}|9\d{7})</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- United Kingdom --> - <territory id="GB" countryCode="44" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>[1-59]|[78]0</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3})(\d{3})(\d{3})"> - <leadingDigits>6</leadingDigits> - <format>$1 $2 $3 $4</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{3})(\d{3})"> - <leadingDigits>7[1-57-9]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>8[47]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>\d{10}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[1-6]\d{9}</nationalNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>7[1-57-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>9[018]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </premiumRate> - <sharedCost> - <nationalNumberPattern>8(?:4[3-5]|7[0-2])\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </sharedCost> - <voip> - <nationalNumberPattern>56\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </voip> - <personalNumber> - <nationalNumberPattern>70\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </personalNumber> - </territory> - - <!-- Italy --> - <!-- http://en.wikipedia.org/wiki/%2B39 --> - <territory id="IT" countryCode="39" internationalPrefix="00" leadingZeroPossible="true"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>0[26]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{4})(\d{3,4})"> - <leadingDigits>0[13-57-9]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{3,4})"> - <leadingDigits>3</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3,6})"> - <leadingDigits>8</leadingDigits> - <format>$1 $2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[0389]\d{5,10}</nationalNumberPattern> - <possibleNumberPattern>\d{6,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>0\d{9,10}</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>3\d{8,9}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>80(?:0\d{6}|3\d{3})</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>89(?:2\d{3}|9\d{6})</nationalNumberPattern> - <possibleNumberPattern>\d{6,9}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- Japan --> - <!-- The metadata here is added to unit test AsYouTypeFormatter for JP, which requires switching - patterns as digits beyond the third one are entered. As a result, only a few fake - formatting rules are added. --> - <territory id="JP" countryCode="81" internationalPrefix="010" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>[57-9]0</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits>222|333</leadingDigits> - <leadingDigits>(?:222|333)1</leadingDigits> - <leadingDigits>(?:222|333)11</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d)(\d{4})"> - <leadingDigits>222|333</leadingDigits> - <leadingDigits>2221|3332</leadingDigits> - <leadingDigits>22212|3332</leadingDigits> - <leadingDigits>222120|3332</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{4})"> - <leadingDigits>[23]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <!-- The following numberFormat is added to test that the format containing the star sign is - not used by the AYTF. --> - <numberFormat pattern="(\d{4})"> - <leadingDigits>[23]</leadingDigits> - <format>*$1</format> - </numberFormat> - </availableFormats> - </territory> - - <!-- Korea (Rep. of) --> - <!-- http://www.itu.int/oth/T0202000072/en --> - <!-- http://en.wikipedia.org/wiki/%2B82 --> - <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2349 --> - <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2240 --> - <!-- http://www.telecentro.co.kr/sub/index.php?job=detail&ebcf_id=faq&page=1&mid=0503&eb_seq=36 --> - <!-- Exceptions : - internationalPrefix - 0031, 0033, 0071, 0073 - Special services of KT and DACOM, ignorable - nationalPrefix - 1[4-6]XX-YYYY - Country-wide common number services, display as it is without hyphens --> - <territory id="KR" countryCode="82" internationalPrefix="00(?:[124-68]|[37]\d{2})" - nationalPrefix="0" nationalPrefixForParsing="0(8[1-46-8]|85\d{2})?" - nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>1(?:0|1[19]|[69]9|5[458])|[57]0</leadingDigits> - <leadingDigits>1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})(\d{4})"> - <leadingDigits>1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]</leadingDigits> - <leadingDigits>1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d)(\d{4})"> - <leadingDigits>131</leadingDigits> - <leadingDigits>1312</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{2})(\d{4})"> - <leadingDigits>131</leadingDigits> - <leadingDigits>131[13-9]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>13[2-9]</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{2})(\d{3})(\d{4})"> - <leadingDigits>30</leadingDigits> - <format>$1-$2-$3-$4</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{4})(\d{4})"> - <leadingDigits>2(?:[26]|3[0-467])</leadingDigits> - <leadingDigits>2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3})(\d{4})"> - <leadingDigits>2(?:3[0-35-9]|[457-9])</leadingDigits> - <leadingDigits>2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])</leadingDigits> - <format>$1-$2-$3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3})"> - <leadingDigits>21[0-46-9]</leadingDigits> - <leadingDigits>21(?:[0-247-9]|3[124]|6[1269])</leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{4})"> - <leadingDigits>21[36]</leadingDigits> - <leadingDigits>21(?:3[035-9]|6[03-578])</leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{3})"> - <leadingDigits>[3-9][1-9]1</leadingDigits> - <leadingDigits>[3-9][1-9]1(?:[0-46-9])</leadingDigits> - <leadingDigits>[3-9][1-9]1(?:[0-247-9]|3[124]|6[1269])</leadingDigits> - <format>$1-$2</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{4})"> - <leadingDigits>[3-9][1-9]1</leadingDigits> - <leadingDigits>[3-9][1-9]1[36]</leadingDigits> - <leadingDigits>[3-9][1-9]1(?:3[035-9]|6[03-578])</leadingDigits> - <format>$1-$2</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-79]\d{3,9}|8\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>(?:2|[34][1-3]|5[1-5]|6[1-4])(?:1\d{2,3}|[2-9]\d{6,7})</nationalNumberPattern> - <possibleNumberPattern>\d{4,10}</possibleNumberPattern> - <exampleNumber>22123456</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>1[0-25-9]\d{7,8}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - <exampleNumber>1023456789</exampleNumber> - </mobile> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>60[2-9]\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>602345678</exampleNumber> - </premiumRate> - <personalNumber> - <nationalNumberPattern>50\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>5012345678</exampleNumber> - </personalNumber> - <voip> - <nationalNumberPattern>70\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - <exampleNumber>7012345678</exampleNumber> - </voip> - </territory> - - <!-- Mexico --> - <territory id="MX" countryCode="52" internationalPrefix="00" - nationalPrefix="01" nationalPrefixForParsing="01|04[45](\d{10})" - nationalPrefixTransformRule="1$1"> - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[89]00</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>33|55|81</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="1(\d{2})(\d{4})(\d{4})"> - <leadingDigits>1(?:33|55|81)</leadingDigits> - <format>045 $1 $2 $3</format> - </numberFormat> - <numberFormat pattern="1(\d{3})(\d{3})(\d{4})"> - <leadingDigits>1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])</leadingDigits> - <format>045 $1 $2 $3</format> - </numberFormat> - <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[89]00</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(\d{2})(\d{4})(\d{4})"> - <leadingDigits>33|55|81</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]</leadingDigits> - <format>$1 $2 $3</format> - </intlNumberFormat> - <intlNumberFormat pattern="(1)(\d{2})(\d{4})(\d{4})"> - <leadingDigits>1(?:33|55|81)</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - <intlNumberFormat pattern="(1)(\d{3})(\d{3})(\d{4})"> - <leadingDigits>1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])</leadingDigits> - <format>$1 $2 $3 $4</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{9,10}</nationalNumberPattern> - <possibleNumberPattern>\d{7,11}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[2-9]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>1\d{10}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- New Zealand --> - <territory id="NZ" countryCode="64" internationalPrefix="00" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d)(\d{3})(\d{4})"> - <leadingDigits>24|[34679]</leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <numberFormat pattern="(\d)(\d{3})(\d{3,5})"> - <leadingDigits>2[179]</leadingDigits> - <format>$1-$2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{3,4})"> - <leadingDigits>[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern> - [289]\d{7,9}| - [3-7]\d{7} - </nationalNumberPattern> - <possibleNumberPattern>\d{7,10}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>24099\d{3}|(?:3[2-79]|[479][2-689]|6[235-9])\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{7,8}</possibleNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>2(?:[027]\d{7}|9\d{6,7}|1(?:0\d{5,7}|[12]\d{5,6}|[3-9]\d{5})|4[1-9]\d{6}|8\d{7,8})</nationalNumberPattern> - <possibleNumberPattern>\d{8,10}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{6,7}</nationalNumberPattern> - <possibleNumberPattern>\d{9,10}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- Poland --> - <!-- http://en.wikipedia.org/wiki/%2B48 --> - <territory id="PL" countryCode="48" internationalPrefix="0~0" - nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <mobile> - <nationalNumberPattern>(?:5[01]|6[069]|7[289]|88)\d{7}</nationalNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>800\d{6}</nationalNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>70\d{7}</nationalNumberPattern> - </premiumRate> - </territory> - - <!-- Réunion (French Departments and Territories in the Indian Ocean) --> - <!-- Note this shares the same country code as La Mayotte and French - Southern Territories, and the formatting patterns here are used by all of - them. This is present to test leadingDigits. --> - <territory id="RE" countryCode="262" leadingDigits="262|6(?:9[23]|47)|8" - internationalPrefix="00" nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <availableFormats> - <numberFormat pattern="([268]\d{2})(\d{2})(\d{2})(\d{2})"> - <format>$1 $2 $3 $4</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[268]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <!-- 0876 numbers are mentioned in the plan, but none in use can be - found. --> - <nationalNumberPattern>262\d{6}</nationalNumberPattern> - <exampleNumber>262161234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>6(?:9[23]|47)\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <exampleNumber>692123456</exampleNumber> - </mobile> - <!-- 08* Numbers in Réunion are the same as those valid in France. --> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - <premiumRate> - <nationalNumberPattern>8(?:1[01]|2[0156]|84|9[0-37-9])\d{6}</nationalNumberPattern> - <exampleNumber>810123456</exampleNumber> - </premiumRate> - </territory> - - <!-- Singapore --> - <!-- http://www.ida.gov.sg/policies%20and%20regulation/20060508120124.aspx --> - <territory id="SG" countryCode="65" internationalPrefix="0[0-3][0-9]"> - <availableFormats> - <numberFormat pattern="(\d{4})(\d{4})"> - <leadingDigits>[369]|8[1-9]</leadingDigits> - <format>$1 $2</format> - </numberFormat> - <numberFormat pattern="(\d{4})(\d{3})(\d{4})"> - <leadingDigits>1[89]</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <leadingDigits>800</leadingDigits> - <format>$1 $2 $3</format> - </numberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[13689]\d{7,10}</nationalNumberPattern> - <!-- This specific pattern with the | is used to unit-test IsPossibleNumberWithReason. --> - <possibleNumberPattern> - \d{8}| - \d{10,11} - </possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>[36]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </fixedLine> - <mobile> - <nationalNumberPattern>[89]\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{8}</possibleNumberPattern> - </mobile> - <tollFree> - <nationalNumberPattern>1?800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10,11}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>1900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{11}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- United States --> - <!-- http://www.nanpa.com/reports/reports_npa.html --> - <!-- For testing purposes, numbers starting with 24 are not considered US - numbers.--> - <territory id="US" countryCode="1" internationalPrefix="011" - preferredExtnPrefix=" extn. " nationalPrefix="1" - mainCountryForCode="true" > - <availableFormats> - <numberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <format>$1 $2 $3</format> - </numberFormat> - <numberFormat pattern="(\d{3})(\d{4})"> - <format>$1 $2</format> - </numberFormat> - <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})"> - <format>$1 $2 $3</format> - </intlNumberFormat> - </availableFormats> - <generalDesc> - <nationalNumberPattern>[13-9]\d{9}|2[0-35-9]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern> - <exampleNumber>1234567890</exampleNumber> - </generalDesc> - <noInternationalDialling> - <!-- This range is added for testing purposes only. --> - <nationalNumberPattern>800\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </noInternationalDialling> - <tollFree> - <nationalNumberPattern>8(?:00|66|77|88)\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </tollFree> - <premiumRate> - <nationalNumberPattern>900\d{7}</nationalNumberPattern> - <possibleNumberPattern>\d{10}</possibleNumberPattern> - </premiumRate> - </territory> - - <!-- Mayotte --> - <territory id="YT" countryCode="262" leadingDigits="269|639" - internationalPrefix="00" nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> - <!-- Formatting as per La Réunion. --> - <generalDesc> - <nationalNumberPattern>[268]\d{8}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - </generalDesc> - <fixedLine> - <nationalNumberPattern>2696[0-4]\d{4}</nationalNumberPattern> - <exampleNumber>269601234</exampleNumber> - </fixedLine> - <mobile> - <nationalNumberPattern>639\d{6}</nationalNumberPattern> - <exampleNumber>639123456</exampleNumber> - </mobile> - <!-- Same as in France. --> - <tollFree> - <nationalNumberPattern>80\d{7}</nationalNumberPattern> - <exampleNumber>801234567</exampleNumber> - </tollFree> - </territory> - </territories> -</phoneNumberMetadata> diff --git a/third_party/libphonenumber/resources/phonemetadata.proto b/third_party/libphonenumber/resources/phonemetadata.proto deleted file mode 100644 index fd9902a..0000000 --- a/third_party/libphonenumber/resources/phonemetadata.proto +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Definition of protocol buffer for holding metadata for international -// telephone numbers. -// @author Shaopeng Jia - -syntax = "proto2"; - -option java_package = "com.google.i18n.phonenumbers"; -option optimize_for = LITE_RUNTIME; - -package i18n.phonenumbers; - -message NumberFormat { - // pattern is a regex that is used to match the national (significant) - // number. For example, the pattern "(20)(\d{4})(\d{4})" will match number - // "2070313000", which is the national (significant) number for Google London. - // Note the presence of the parentheses, which are capturing groups what - // specifies the grouping of numbers. - required string pattern = 1; - - // format specifies how the national (significant) number matched by - // pattern should be formatted. - // Using the same example as above, format could contain "$1 $2 $3", - // meaning that the number should be formatted as "20 7031 3000". - // Each $x are replaced by the numbers captured by group x in the - // regex specified by pattern. - required string format = 2; - - // This field is a regex that is used to match a certain number of digits - // at the beginning of the national (significant) number. When the match is - // successful, the accompanying pattern and format should be used to format - // this number. For example, if leading_digits="[1-3]|44", then all the - // national numbers starting with 1, 2, 3 or 44 should be formatted using the - // accompanying pattern and format. - // - // The first leadingDigitsPattern matches up to the first three digits of the - // national (significant) number; the next one matches the first four digits, - // then the first five and so on, until the leadingDigitsPattern can uniquely - // identify one pattern and format to be used to format the number. - // - // In the case when only one formatting pattern exists, no - // leading_digits_pattern is needed. - repeated string leading_digits_pattern = 3; - - // This field specifies how the national prefix ($NP) together with the first - // group ($FG) in the national significant number should be formatted in - // the NATIONAL format when a national prefix exists for a certain country. - // For example, when this field contains "($NP$FG)", a number from Beijing, - // China (whose $NP = 0), which would by default be formatted without - // national prefix as 10 1234 5678 in NATIONAL format, will instead be - // formatted as (010) 1234 5678; to format it as (0)10 1234 5678, the field - // would contain "($NP)$FG". Note $FG should always be present in this field, - // but $NP can be omitted. For example, having "$FG" could indicate the - // number should be formatted in NATIONAL format without the national prefix. - // This is commonly used to override the rule from generalDesc. - // - // When this field is missing, a number will be formatted without national - // prefix in NATIONAL format. This field does not affect how a number - // is formatted in other formats, such as INTERNATIONAL. - optional string national_prefix_formatting_rule = 4; - - // This field specifies how any carrier code ($CC) together with the first - // group ($FG) in the national significant number should be formatted - // when formatWithCarrierCode is called, if carrier codes are used for a - // certain country. - optional string domestic_carrier_code_formatting_rule = 5; -} - -message PhoneNumberDesc { - // The national_number_pattern is the pattern that a valid national - // significant number would match. This specifies information such as its - // total length and leading digits. - optional string national_number_pattern = 2; - - // The possible_number_pattern represents what a potentially valid phone - // number for this region may be written as. This is a superset of the - // national_number_pattern above and includes numbers that have the area code - // omitted. Typically the only restrictions here are in the number of digits. - // This could be used to highlight tokens in a text that may be a phone - // number, or to quickly prune numbers that could not possibly be a phone - // number for this locale. - optional string possible_number_pattern = 3; - - // An example national significant number for the specific type. It should - // not contain any formatting information. - optional string example_number = 6; -} - -message PhoneMetadata { - // The general_desc contains information which is a superset of descriptions - // for all types of phone numbers. If any element is missing in the - // description of a specific type in the XML file, the element will inherit - // from its counterpart in the general_desc. Every locale is assumed to have - // fixed line and mobile numbers - if these types are missing in the XML - // file, they will inherit all fields from the general_desc. For all other - // types, if the whole type is missing in the xml file, it will be given a - // national_number_pattern of "NA" and a possible_number_pattern of "NA". - required PhoneNumberDesc general_desc = 1; - required PhoneNumberDesc fixed_line = 2; - required PhoneNumberDesc mobile = 3; - required PhoneNumberDesc toll_free = 4; - required PhoneNumberDesc premium_rate = 5; - required PhoneNumberDesc shared_cost = 6; - required PhoneNumberDesc personal_number = 7; - required PhoneNumberDesc voip = 8; - required PhoneNumberDesc pager = 21; - required PhoneNumberDesc uan = 25; - // The rules here distinguish the numbers that are only able to be dialled - // nationally. - required PhoneNumberDesc no_international_dialling = 24; - - // The ISO 3166-1 alpha-2 representation of a country/region - required string id = 9; - - // The country calling code that one would dial from overseas when trying to - // dial a phone number in this country. For example, this would be "64" for - // New Zealand. - required int32 country_code = 10; - - // The international_prefix of country A is the number that needs to be - // dialled from country A to another country (country B). This is followed - // by the country code for country B. Note that some countries may have more - // than one international prefix, and for those cases, a regular expression - // matching the international prefixes will be stored in this field. - required string international_prefix = 11; - - // If more than one international prefix is present, a preferred prefix can - // be specified here for out-of-country formatting purposes. If this field is - // not present, and multiple international prefixes are present, then "+" - // will be used instead. - optional string preferred_international_prefix = 17; - - // The national prefix of country A is the number that needs to be dialled - // before the national significant number when dialling internally. This - // would not be dialled when dialling internationally. For example, in New - // Zealand, the number that would be locally dialled as 09 345 3456 would be - // dialled from overseas as +64 9 345 3456. In this case, 0 is the national - // prefix. - optional string national_prefix = 12; - - // The preferred prefix when specifying an extension in this country. This is - // used for formatting only, and if this is not specified, a suitable default - // should be used instead. For example, if you wanted extensions to be - // formatted in the following way: - // 1 (365) 345 445 ext. 2345 - // " ext. " should be the preferred extension prefix. - optional string preferred_extn_prefix = 13; - - // This field is used for cases where the national prefix of a country - // contains a carrier selection code, and is written in the form of a - // regular expression. For example, to dial the number 2222-2222 in - // Fortaleza, Brazil (area code 85) using the long distance carrier Oi - // (selection code 31), one would dial 0 31 85 2222 2222. Assuming the - // only other possible carrier selection code is 32, the field will - // contain "03[12]". - // - // When it is missing from the XML file, this field inherits the value of - // national_prefix, if that is present. - optional string national_prefix_for_parsing = 15; - - // This field is only populated and used under very rare situations. - // For example, mobile numbers in Argentina are written in two completely - // different ways when dialed in-country and out-of-country - // (e.g. 0343 15 555 1212 is exactly the same number as +54 9 343 555 1212). - // This field is used together with national_prefix_for_parsing to transform - // the number into a particular representation for storing in the phonenumber - // proto buffer in those rare cases. - optional string national_prefix_transform_rule = 16; - - // Specifies whether the mobile and fixed-line patterns are the same or not. - // This is used to speed up determining phone number type in countries where - // these two types of phone numbers can never be distinguished. - optional bool same_mobile_and_fixed_line_pattern = 18 [default=false]; - - // Note that the number format here is used for formatting only, not parsing. - // Hence all the varied ways a user *may* write a number need not be recorded - // - just the ideal way we would like to format it for them. When this element - // is absent, the national significant number will be formatted as a whole - // without any formatting applied. - repeated NumberFormat number_format = 19; - - // This field is populated only when the national significant number is - // formatted differently when it forms part of the INTERNATIONAL format - // and NATIONAL format. A case in point is mobile numbers in Argentina: - // The number, which would be written in INTERNATIONAL format as - // +54 9 343 555 1212, will be written as 0343 15 555 1212 for NATIONAL - // format. In this case, the prefix 9 is inserted when dialling from - // overseas, but otherwise the prefix 0 and the carrier selection code - // 15 (inserted after the area code of 343) is used. - repeated NumberFormat intl_number_format = 20; - - // This field is set when this country is considered to be the main country - // for a calling code. It may not be set by more than one country with the - // same calling code, and it should not be set by countries with a unique - // calling code. This can be used to indicate that "GB" is the main country - // for the calling code "44" for example, rather than Jersey or the Isle of - // Man. - optional bool main_country_for_code = 22 [default=false]; - - // This field is populated only for countries or regions that share a country - // calling code. If a number matches this pattern, it could belong to this - // region. This is not intended as a replacement for IsValidForRegion, and - // does not mean the number must come from this region (for example, 800 - // numbers are valid for all NANPA countries.) This field should be a regular - // expression of the expected prefix match. - optional string leading_digits = 23; - - // The leading zero in a phone number is meaningful in some countries (e.g. - // Italy). This means they cannot be dropped from the national number when - // converting into international format. If leading zeros are possible for - // valid international numbers for this region/country then set this to true. - // This only needs to be set for the region that is the main_country_for_code - // and all regions associated with that calling code will use the same - // setting. - optional bool leading_zero_possible = 26 [default=false]; -} - -message PhoneMetadataCollection { - repeated PhoneMetadata metadata = 1; -} diff --git a/third_party/libphonenumber/resources/phonenumber.proto b/third_party/libphonenumber/resources/phonenumber.proto deleted file mode 100644 index 8ea4288..0000000 --- a/third_party/libphonenumber/resources/phonenumber.proto +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Definition of protocol buffer for representing international telephone numbers. -// @author Shaopeng Jia - -syntax = "proto2"; - -option java_package = "com.google.i18n.phonenumbers"; -option optimize_for = LITE_RUNTIME; - -package i18n.phonenumbers; - -message PhoneNumber { -// The country calling code for this number, as defined by the International Telecommunication Union -// (ITU). Fox example, this would be 1 for NANPA countries, and 33 for France. - required int32 country_code = 1; - -// National (significant) Number is defined in International Telecommunication Union Recommendation -// E.164. It is a language/country-neutral representation of a phone number at a country level. For -// countries which have the concept of Area Code, the National (significant) Number contains the -// area code. It contains a maximum number of digits which equal to 15 - n, where n is the number of -// digits of the country code. Take note that National (significant) Number does not contain -// National(trunk) prefix. Obviously, as a uint64, it will never contain any formatting (hypens, -// spaces, parentheses), nor any alphanumeric spellings. - required uint64 national_number = 2; - -// Extension is not standardized in ITU recommendations, except for being defined as a series of -// numbers with a maximum length of 40 digits. It is defined as a string here to accommodate for the -// possible use of a leading zero in the extension (organizations have complete freedom to do so, -// as there is no standard defined). However, only ASCII digits should be stored here. - optional string extension = 3; - -// In some countries, the national (significant) number starts with a "0" without this being a -// national prefix or trunk code of some kind. For example, the leading zero in the national -// (significant) number of an Italian phone number indicates the number is a fixed-line number. -// There have been plans to migrate fixed-line numbers to start with the digit two since December -// 2000, but it has not happened yet. See http://en.wikipedia.org/wiki/%2B39 for more details. -// -// This field can be safely ignored (there is no need to set it) for most countries. Some limited -// amount of countries behave like Italy - for these cases, if the leading zero of a number would be -// retained even when dialling internationally, set this flag to true. -// -// Clients who use the parsing functionality of the i18n phone number libraries -// will have this field set if necessary automatically. - optional bool italian_leading_zero = 4; - -// The next few fields are non-essential fields for a phone number. They retain extra information -// about the form the phone number was in when it was provided to us to parse. They can be safely -// ignored by most clients. - -// This field is used to store the raw input string containing phone numbers before it was -// canonicalized by the library. For example, it could be used to store alphanumerical numbers -// such as "1-800-GOOG-411". - optional string raw_input = 5; - -// The source from which the country_code is derived. This is not set in the general parsing method, -// but in the method that parses and keeps raw_input. New fields could be added upon request. - enum CountryCodeSource { - // The country_code is derived based on a phone number with a leading "+", e.g. the French - // number "+33 (0)1 42 68 53 00". - FROM_NUMBER_WITH_PLUS_SIGN = 1; - - // The country_code is derived based on a phone number with a leading IDD, e.g. the French - // number "011 33 (0)1 42 68 53 00", as it is dialled from US. - FROM_NUMBER_WITH_IDD = 5; - - // The country_code is derived based on a phone number without a leading "+", e.g. the French - // number "33 (0)1 42 68 53 00" when defaultCountry is supplied as France. - FROM_NUMBER_WITHOUT_PLUS_SIGN = 10; - - // The country_code is derived NOT based on the phone number itself, but from the defaultCountry - // parameter provided in the parsing function by the clients. This happens mostly for numbers - // written in the national format (without country code). For example, this would be set when - // parsing the French number "(0)1 42 68 53 00", when defaultCountry is supplied as France. - FROM_DEFAULT_COUNTRY = 20; - } - -// The source from which the country_code is derived. - optional CountryCodeSource country_code_source = 6; - -// The carrier selection code that is preferred when calling this phone number domestically. This -// also includes codes that need to be dialed in some countries when calling from landlines to -// mobiles or vice versa. For example, in Columbia, a "3" needs to be dialed before the phone number -// itself when calling from a mobile phone to a domestic landline phone and vice versa. -// -// Note this is the "preferred" code, which means other codes may work as well. - optional string preferred_domestic_carrier_code = 7; -} - -// Examples -// -// Google MTV, +1 650-253-0000, (650) 253-0000 -// country_code: 1 -// national_number: 6502530000 -// -// Google Paris, +33 (0)1 42 68 53 00, 01 42 68 53 00 -// country_code: 33 -// national_number: 142685300 -// -// Google Beijing, +86-10-62503000, (010) 62503000 -// country_code: 86 -// national_number: 1062503000 -// -// Google Italy, +39 02-36618 300, 02-36618 300 -// country_code: 39 -// national_number: 236618300 -// italian_leading_zero: true |