NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

commit c04e3faf041441ae1375365b6ec4e2df5ca91047
parent bfc5f66737b18492bcc9d8beaaa827971c1973a1
Author: NovaBryan <29001820+NovaBryan@users.noreply.github.com>
Date:   Mon, 19 Oct 2026 13:31:38 +0000

Auto-dump EVE code: 24.01.3628513 (20261019_3628513_code)

Diffstat:
MREADME.md | 1+
MeveProto/monolith_converters/strings.py | 16++++++++++++----
MeveProto/tracing.py | 19+++++++++++++++----
Mmultiprocessing/pool.pyc | 0
MpublicGateway/gateway.py | 4+---
MpublicGateway/grpc/spanManager.py | 7++++---
MpublicGateway/notice/notice_routing_cache.py | 2+-
Mrequests/packages/chardet/jpcntx.py | 6983-------------------------------------------------------------------------------
Mstackless_response_router/stackless_response_router.py | 9+++++----
9 files changed, 39 insertions(+), 7002 deletions(-)

diff --git a/README.md b/README.md @@ -8,6 +8,7 @@ A timeline of all version captures and synchronizations is documented here: | Update Date | Target Version Tag | Version | Notes | | :--- | :--- | :--- | :--- | +| **2026-10-19** | `eve-24_01_3628513` | 24.01.3628513 | Automated unpack and sync | | **2026-10-16** | `eve-24_01_3624425` | 24.01.3624425 | Automated unpack and sync | | **2026-10-15** | `eve-24_01_3619879` | 24.01.3619879 | Automated unpack and sync | | **2026-10-14** | `eve-24_01_3615610` | 24.01.3615610 | Automated unpack and sync | diff --git a/eveProto/monolith_converters/strings.py b/eveProto/monolith_converters/strings.py @@ -1,10 +1,18 @@ #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\eveProto\monolith_converters\strings.py - +from __future__ import absolute_import +import six def sanitize_text(text): + if six.PY3 and isinstance(text, str): + return text try: return text.decode('utf-8') except Exception: - if isinstance(text, str): - return str(repr(text))[1:-1] - return str(repr(text)) + if isinstance(text, bytes): + return _repr_without_quotes(text) + return repr(text) + + +def _repr_without_quotes(binary): + binary_repr = repr(binary) + return binary_repr[binary_repr.index(binary_repr[-1]) + 1:-1] diff --git a/eveProto/tracing.py b/eveProto/tracing.py @@ -1,18 +1,29 @@ #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\eveProto\tracing.py +from __future__ import absolute_import +import binascii import logging +import six logger = logging.getLogger(__name__) +def bytes_to_hex(id_bytes): + return six.ensure_str(binascii.b2a_hex(id_bytes)) + + +def hex_to_bytes(id_hex): + return binascii.a2b_hex(id_hex) + + def propagate_trace(protobuf_message, trace_id, parent_span_id, sampled, sample_rate): if trace_id is not None: - protobuf_message.trace_context.trace_id = trace_id.decode('hex') - protobuf_message.trace_context.parent_id = parent_span_id.decode('hex') + protobuf_message.trace_context.trace_id = hex_to_bytes(trace_id) + protobuf_message.trace_context.parent_id = hex_to_bytes(parent_span_id) protobuf_message.trace_context.flags.sampled = sampled protobuf_message.trace_context.state.sample_rate = sample_rate def extract_trace_context(protobuf_message): - trace_id = protobuf_message.trace_context.trace_id.encode('hex') if protobuf_message.trace_context.trace_id else None - parent_span_id = protobuf_message.trace_context.parent_id.encode('hex') if protobuf_message.trace_context.parent_id else None + trace_id = bytes_to_hex(protobuf_message.trace_context.trace_id) if protobuf_message.trace_context.trace_id else None + parent_span_id = bytes_to_hex(protobuf_message.trace_context.parent_id) if protobuf_message.trace_context.parent_id else None sampled = protobuf_message.trace_context.flags.sampled if trace_id is not None else None sample_rate = protobuf_message.trace_context.state.sample_rate if sample_rate == 0: diff --git a/multiprocessing/pool.pyc b/multiprocessing/pool.pyc Binary files differ. diff --git a/publicGateway/gateway.py b/publicGateway/gateway.py @@ -82,9 +82,7 @@ class PublicGateway(object): self.grpc_requests_broker.set_authenticated_user_id(user_id) def set_auth_token(self, auth_token): - if auth_token is None: - return - if auth_token is '': + if not auth_token: return self.grpc_module.set_auth_token(auth_token) diff --git a/publicGateway/grpc/spanManager.py b/publicGateway/grpc/spanManager.py @@ -6,6 +6,7 @@ from featuremanagement.client.flag import flag_int import stackless_tracing from .tracing import propagate_trace from eveProto import get_message_type_url +from eveProto.tracing import bytes_to_hex from stackless_tracing.attributes import SPAN_KIND, MESSAGE_ARRIVAL_TIME from stackless_tracing.attributes import PAYLOAD_TYPE, PAYLOAD_BYTES, PRIMITIVE, DOMAIN from stackless_tracing.attributes import EXTERNAL_ORIGIN, ISSUED, MESSAGE_ID, APPLICATION @@ -16,7 +17,7 @@ logger = logging.getLogger(__name__) _FALLBACK_SAMPLE_RATE = 1000 _SAMPLE_RATE_FLAG_KEY = 'eve-desktop-client-request-tracing-sample-rate' -class SpanManager: +class SpanManager(object): service_name = 'publicGatewaySvc' kind = 'client' domain = 'eve_public' @@ -56,7 +57,7 @@ class SpanManager: self._trace_ids[request.correlation_uuid] = trace_id def end_request_trace(self, response, arrival_datetime): - trace_id = response.trace_context.trace_id.encode('hex') + trace_id = bytes_to_hex(response.trace_context.trace_id) correlation_uuid = response.correlation_uuid if trace_id is None: logger.warn('missing trace decision in eve_public response: {}'.format(response)) @@ -64,7 +65,7 @@ class SpanManager: if trace_id not in self._tracers: if correlation_uuid not in self._trace_ids: return - logger.error('unexpected trace_id for request {}\n\twant: {}\n\thave: {}'.format(correlation_uuid.encode('hex'), self._trace_ids.get(correlation_uuid), trace_id)) + logger.error('unexpected trace_id for request {}\n\twant: {}\n\thave: {}'.format(bytes_to_hex(correlation_uuid), self._trace_ids.get(correlation_uuid), trace_id)) trace_id = self._trace_ids.get(correlation_uuid) tracer, span = self._tracers.get(trace_id) if tracer is None: diff --git a/publicGateway/notice/notice_routing_cache.py b/publicGateway/notice/notice_routing_cache.py @@ -133,7 +133,7 @@ class NoticeRoutingCache(object): def _populate_targets(targets, session_change): - for key in session_to_target_group.iterkeys(): + for key in session_to_target_group: if key not in session_change: continue target_group = session_to_target_group[key] diff --git a/requests/packages/chardet/jpcntx.py b/requests/packages/chardet/jpcntx.py @@ -1,6983 +0,0 @@ -#Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\requests\packages\chardet\jpcntx.py -from .compat import wrap_ord -NUM_OF_CATEGORY = 6 -DONT_KNOW = -1 -ENOUGH_REL_THRESHOLD = 100 -MAX_REL_THRESHOLD = 1000 -MINIMUM_DATA_THRESHOLD = 4 -jp2CharContext = ((0, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1), - (2, - 4, - 0, - 4, - 0, - 3, - 0, - 4, - 0, - 3, - 4, - 4, - 4, - 2, - 4, - 3, - 3, - 4, - 3, - 2, - 3, - 3, - 4, - 2, - 3, - 3, - 3, - 2, - 4, - 1, - 4, - 3, - 3, - 1, - 5, - 4, - 3, - 4, - 3, - 4, - 3, - 5, - 3, - 0, - 3, - 5, - 4, - 2, - 0, - 3, - 1, - 0, - 3, - 3, - 0, - 3, - 3, - 0, - 1, - 1, - 0, - 4, - 3, - 0, - 3, - 3, - 0, - 4, - 0, - 2, - 0, - 3, - 5, - 5, - 5, - 5, - 4, - 0, - 4, - 1, - 0, - 3, - 4), - (0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2), - (0, - 4, - 0, - 5, - 0, - 5, - 0, - 4, - 0, - 4, - 5, - 4, - 4, - 3, - 5, - 3, - 5, - 1, - 5, - 3, - 4, - 3, - 4, - 4, - 3, - 4, - 3, - 3, - 4, - 3, - 5, - 4, - 4, - 3, - 5, - 5, - 3, - 5, - 5, - 5, - 3, - 5, - 5, - 3, - 4, - 5, - 5, - 3, - 1, - 3, - 2, - 0, - 3, - 4, - 0, - 4, - 2, - 0, - 4, - 2, - 1, - 5, - 3, - 2, - 3, - 5, - 0, - 4, - 0, - 2, - 0, - 5, - 4, - 4, - 5, - 4, - 5, - 0, - 4, - 0, - 0, - 4, - 4), - (0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0), - (0, - 3, - 0, - 4, - 0, - 3, - 0, - 3, - 0, - 4, - 5, - 4, - 3, - 3, - 3, - 3, - 4, - 3, - 5, - 4, - 4, - 3, - 5, - 4, - 4, - 3, - 4, - 3, - 4, - 4, - 4, - 4, - 5, - 3, - 4, - 4, - 3, - 4, - 5, - 5, - 4, - 5, - 5, - 1, - 4, - 5, - 4, - 3, - 0, - 3, - 3, - 1, - 3, - 3, - 0, - 4, - 4, - 0, - 3, - 3, - 1, - 5, - 3, - 3, - 3, - 5, - 0, - 4, - 0, - 3, - 0, - 4, - 4, - 3, - 4, - 3, - 3, - 0, - 4, - 1, - 1, - 3, - 4), - (0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0), - (0, - 4, - 0, - 3, - 0, - 3, - 0, - 4, - 0, - 3, - 4, - 4, - 3, - 2, - 2, - 1, - 2, - 1, - 3, - 1, - 3, - 3, - 3, - 3, - 3, - 4, - 3, - 1, - 3, - 3, - 5, - 3, - 3, - 0, - 4, - 3, - 0, - 5, - 4, - 3, - 3, - 5, - 4, - 4, - 3, - 4, - 4, - 5, - 0, - 1, - 2, - 0, - 1, - 2, - 0, - 2, - 2, - 0, - 1, - 0, - 0, - 5, - 2, - 2, - 1, - 4, - 0, - 3, - 0, - 1, - 0, - 4, - 4, - 3, - 5, - 4, - 3, - 0, - 2, - 1, - 0, - 4, - 3), - (0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0), - (0, - 3, - 0, - 5, - 0, - 4, - 0, - 2, - 1, - 4, - 4, - 2, - 4, - 1, - 4, - 2, - 4, - 2, - 4, - 3, - 3, - 3, - 4, - 3, - 3, - 3, - 3, - 1, - 4, - 2, - 3, - 3, - 3, - 1, - 4, - 4, - 1, - 1, - 1, - 4, - 3, - 3, - 2, - 0, - 2, - 4, - 3, - 2, - 0, - 3, - 3, - 0, - 3, - 1, - 1, - 0, - 0, - 0, - 3, - 3, - 0, - 4, - 2, - 2, - 3, - 4, - 0, - 4, - 0, - 3, - 0, - 4, - 4, - 5, - 3, - 4, - 4, - 0, - 3, - 0, - 0, - 1, - 4), - (1, - 4, - 0, - 4, - 0, - 4, - 0, - 4, - 0, - 3, - 5, - 4, - 4, - 3, - 4, - 3, - 5, - 4, - 3, - 3, - 4, - 3, - 5, - 4, - 4, - 4, - 4, - 3, - 4, - 2, - 4, - 3, - 3, - 1, - 5, - 4, - 3, - 2, - 4, - 5, - 4, - 5, - 5, - 4, - 4, - 5, - 4, - 4, - 0, - 3, - 2, - 2, - 3, - 3, - 0, - 4, - 3, - 1, - 3, - 2, - 1, - 4, - 3, - 3, - 4, - 5, - 0, - 3, - 0, - 2, - 0, - 4, - 5, - 5, - 4, - 5, - 4, - 0, - 4, - 0, - 0, - 5, - 4), - (0, - 5, - 0, - 5, - 0, - 4, - 0, - 3, - 0, - 4, - 4, - 3, - 4, - 3, - 3, - 3, - 4, - 0, - 4, - 4, - 4, - 3, - 4, - 3, - 4, - 3, - 3, - 1, - 4, - 2, - 4, - 3, - 4, - 0, - 5, - 4, - 1, - 4, - 5, - 4, - 4, - 5, - 3, - 2, - 4, - 3, - 4, - 3, - 2, - 4, - 1, - 3, - 3, - 3, - 2, - 3, - 2, - 0, - 4, - 3, - 3, - 4, - 3, - 3, - 3, - 4, - 0, - 4, - 0, - 3, - 0, - 4, - 5, - 4, - 4, - 4, - 3, - 0, - 4, - 1, - 0, - 1, - 3), - (0, - 3, - 1, - 4, - 0, - 3, - 0, - 2, - 0, - 3, - 4, - 4, - 3, - 1, - 4, - 2, - 3, - 3, - 4, - 3, - 4, - 3, - 4, - 3, - 4, - 4, - 3, - 2, - 3, - 1, - 5, - 4, - 4, - 1, - 4, - 4, - 3, - 5, - 4, - 4, - 3, - 5, - 5, - 4, - 3, - 4, - 4, - 3, - 1, - 2, - 3, - 1, - 2, - 2, - 0, - 3, - 2, - 0, - 3, - 1, - 0, - 5, - 3, - 3, - 3, - 4, - 3, - 3, - 3, - 3, - 4, - 4, - 4, - 4, - 5, - 4, - 2, - 0, - 3, - 3, - 2, - 4, - 3), - (0, - 2, - 0, - 3, - 0, - 1, - 0, - 1, - 0, - 0, - 3, - 2, - 0, - 0, - 2, - 0, - 1, - 0, - 2, - 1, - 3, - 3, - 3, - 1, - 2, - 3, - 1, - 0, - 1, - 0, - 4, - 2, - 1, - 1, - 3, - 3, - 0, - 4, - 3, - 3, - 1, - 4, - 3, - 3, - 0, - 3, - 3, - 2, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 4, - 1, - 0, - 2, - 3, - 2, - 2, - 2, - 1, - 3, - 3, - 3, - 4, - 4, - 3, - 2, - 0, - 3, - 1, - 0, - 3, - 3), - (0, - 4, - 0, - 4, - 0, - 3, - 0, - 3, - 0, - 4, - 4, - 4, - 3, - 3, - 3, - 3, - 3, - 3, - 4, - 3, - 4, - 2, - 4, - 3, - 4, - 3, - 3, - 2, - 4, - 3, - 4, - 5, - 4, - 1, - 4, - 5, - 3, - 5, - 4, - 5, - 3, - 5, - 4, - 0, - 3, - 5, - 5, - 3, - 1, - 3, - 3, - 2, - 2, - 3, - 0, - 3, - 4, - 1, - 3, - 3, - 2, - 4, - 3, - 3, - 3, - 4, - 0, - 4, - 0, - 3, - 0, - 4, - 5, - 4, - 4, - 5, - 3, - 0, - 4, - 1, - 0, - 3, - 4), - (0, - 2, - 0, - 3, - 0, - 3, - 0, - 0, - 0, - 2, - 2, - 2, - 1, - 0, - 1, - 0, - 0, - 0, - 3, - 0, - 3, - 0, - 3, - 0, - 1, - 3, - 1, - 0, - 3, - 1, - 3, - 3, - 3, - 1, - 3, - 3, - 3, - 0, - 1, - 3, - 1, - 3, - 4, - 0, - 0, - 3, - 1, - 1, - 0, - 3, - 2, - 0, - 0, - 0, - 0, - 1, - 3, - 0, - 1, - 0, - 0, - 3, - 3, - 2, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 3, - 4, - 3, - 4, - 3, - 3, - 0, - 3, - 0, - 0, - 2, - 3), - (2, - 3, - 0, - 3, - 0, - 2, - 0, - 1, - 0, - 3, - 3, - 4, - 3, - 1, - 3, - 1, - 1, - 1, - 3, - 1, - 4, - 3, - 4, - 3, - 3, - 3, - 0, - 0, - 3, - 1, - 5, - 4, - 3, - 1, - 4, - 3, - 2, - 5, - 5, - 4, - 4, - 4, - 4, - 3, - 3, - 4, - 4, - 4, - 0, - 2, - 1, - 1, - 3, - 2, - 0, - 1, - 2, - 0, - 0, - 1, - 0, - 4, - 1, - 3, - 3, - 3, - 0, - 3, - 0, - 1, - 0, - 4, - 4, - 4, - 5, - 5, - 3, - 0, - 2, - 0, - 0, - 4, - 4), - (0, - 2, - 0, - 1, - 0, - 3, - 1, - 3, - 0, - 2, - 3, - 3, - 3, - 0, - 3, - 1, - 0, - 0, - 3, - 0, - 3, - 2, - 3, - 1, - 3, - 2, - 1, - 1, - 0, - 0, - 4, - 2, - 1, - 0, - 2, - 3, - 1, - 4, - 3, - 2, - 0, - 4, - 4, - 3, - 1, - 3, - 1, - 3, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 4, - 1, - 1, - 1, - 2, - 0, - 3, - 0, - 0, - 0, - 3, - 4, - 2, - 4, - 3, - 2, - 0, - 1, - 0, - 0, - 3, - 3), - (0, - 1, - 0, - 4, - 0, - 5, - 0, - 4, - 0, - 2, - 4, - 4, - 2, - 3, - 3, - 2, - 3, - 3, - 5, - 3, - 3, - 3, - 4, - 3, - 4, - 2, - 3, - 0, - 4, - 3, - 3, - 3, - 4, - 1, - 4, - 3, - 2, - 1, - 5, - 5, - 3, - 4, - 5, - 1, - 3, - 5, - 4, - 2, - 0, - 3, - 3, - 0, - 1, - 3, - 0, - 4, - 2, - 0, - 1, - 3, - 1, - 4, - 3, - 3, - 3, - 3, - 0, - 3, - 0, - 1, - 0, - 3, - 4, - 4, - 4, - 5, - 5, - 0, - 3, - 0, - 1, - 4, - 5), - (0, - 2, - 0, - 3, - 0, - 3, - 0, - 0, - 0, - 2, - 3, - 1, - 3, - 0, - 4, - 0, - 1, - 1, - 3, - 0, - 3, - 4, - 3, - 2, - 3, - 1, - 0, - 3, - 3, - 2, - 3, - 1, - 3, - 0, - 2, - 3, - 0, - 2, - 1, - 4, - 1, - 2, - 2, - 0, - 0, - 3, - 3, - 0, - 0, - 2, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 2, - 2, - 0, - 3, - 2, - 1, - 3, - 3, - 0, - 2, - 0, - 2, - 0, - 0, - 3, - 3, - 1, - 2, - 4, - 0, - 3, - 0, - 2, - 2, - 3), - (2, - 4, - 0, - 5, - 0, - 4, - 0, - 4, - 0, - 2, - 4, - 4, - 4, - 3, - 4, - 3, - 3, - 3, - 1, - 2, - 4, - 3, - 4, - 3, - 4, - 4, - 5, - 0, - 3, - 3, - 3, - 3, - 2, - 0, - 4, - 3, - 1, - 4, - 3, - 4, - 1, - 4, - 4, - 3, - 3, - 4, - 4, - 3, - 1, - 2, - 3, - 0, - 4, - 2, - 0, - 4, - 1, - 0, - 3, - 3, - 0, - 4, - 3, - 3, - 3, - 4, - 0, - 4, - 0, - 2, - 0, - 3, - 5, - 3, - 4, - 5, - 2, - 0, - 3, - 0, - 0, - 4, - 5), - (0, - 3, - 0, - 4, - 0, - 1, - 0, - 1, - 0, - 1, - 3, - 2, - 2, - 1, - 3, - 0, - 3, - 0, - 2, - 0, - 2, - 0, - 3, - 0, - 2, - 0, - 0, - 0, - 1, - 0, - 1, - 1, - 0, - 0, - 3, - 1, - 0, - 0, - 0, - 4, - 0, - 3, - 1, - 0, - 2, - 1, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 4, - 2, - 2, - 3, - 1, - 0, - 3, - 0, - 0, - 0, - 1, - 4, - 4, - 4, - 3, - 0, - 0, - 4, - 0, - 0, - 1, - 4), - (1, - 4, - 1, - 5, - 0, - 3, - 0, - 3, - 0, - 4, - 5, - 4, - 4, - 3, - 5, - 3, - 3, - 4, - 4, - 3, - 4, - 1, - 3, - 3, - 3, - 3, - 2, - 1, - 4, - 1, - 5, - 4, - 3, - 1, - 4, - 4, - 3, - 5, - 4, - 4, - 3, - 5, - 4, - 3, - 3, - 4, - 4, - 4, - 0, - 3, - 3, - 1, - 2, - 3, - 0, - 3, - 1, - 0, - 3, - 3, - 0, - 5, - 4, - 4, - 4, - 4, - 4, - 4, - 3, - 3, - 5, - 4, - 4, - 3, - 3, - 5, - 4, - 0, - 3, - 2, - 0, - 4, - 4), - (0, - 2, - 0, - 3, - 0, - 1, - 0, - 0, - 0, - 1, - 3, - 3, - 3, - 2, - 4, - 1, - 3, - 0, - 3, - 1, - 3, - 0, - 2, - 2, - 1, - 1, - 0, - 0, - 2, - 0, - 4, - 3, - 1, - 0, - 4, - 3, - 0, - 4, - 4, - 4, - 1, - 4, - 3, - 1, - 1, - 3, - 3, - 1, - 0, - 2, - 0, - 0, - 1, - 3, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 4, - 3, - 2, - 4, - 3, - 5, - 4, - 3, - 3, - 3, - 4, - 3, - 3, - 4, - 3, - 3, - 0, - 2, - 1, - 0, - 3, - 3), - (0, - 2, - 0, - 4, - 0, - 3, - 0, - 2, - 0, - 2, - 5, - 5, - 3, - 4, - 4, - 4, - 4, - 1, - 4, - 3, - 3, - 0, - 4, - 3, - 4, - 3, - 1, - 3, - 3, - 2, - 4, - 3, - 0, - 3, - 4, - 3, - 0, - 3, - 4, - 4, - 2, - 4, - 4, - 0, - 4, - 5, - 3, - 3, - 2, - 2, - 1, - 1, - 1, - 2, - 0, - 1, - 5, - 0, - 3, - 3, - 2, - 4, - 3, - 3, - 3, - 4, - 0, - 3, - 0, - 2, - 0, - 4, - 4, - 3, - 5, - 5, - 0, - 0, - 3, - 0, - 2, - 3, - 3), - (0, - 3, - 0, - 4, - 0, - 3, - 0, - 1, - 0, - 3, - 4, - 3, - 3, - 1, - 3, - 3, - 3, - 0, - 3, - 1, - 3, - 0, - 4, - 3, - 3, - 1, - 1, - 0, - 3, - 0, - 3, - 3, - 0, - 0, - 4, - 4, - 0, - 1, - 5, - 4, - 3, - 3, - 5, - 0, - 3, - 3, - 4, - 3, - 0, - 2, - 0, - 1, - 1, - 1, - 0, - 1, - 3, - 0, - 1, - 2, - 1, - 3, - 3, - 2, - 3, - 3, - 0, - 3, - 0, - 1, - 0, - 1, - 3, - 3, - 4, - 4, - 1, - 0, - 1, - 2, - 2, - 1, - 3), - (0, - 1, - 0, - 4, - 0, - 4, - 0, - 3, - 0, - 1, - 3, - 3, - 3, - 2, - 3, - 1, - 1, - 0, - 3, - 0, - 3, - 3, - 4, - 3, - 2, - 4, - 2, - 0, - 1, - 0, - 4, - 3, - 2, - 0, - 4, - 3, - 0, - 5, - 3, - 3, - 2, - 4, - 4, - 4, - 3, - 3, - 3, - 4, - 0, - 1, - 3, - 0, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 4, - 2, - 3, - 3, - 3, - 0, - 3, - 0, - 0, - 0, - 4, - 4, - 4, - 5, - 3, - 2, - 0, - 3, - 3, - 0, - 3, - 5), - (0, - 2, - 0, - 3, - 0, - 0, - 0, - 3, - 0, - 1, - 3, - 0, - 2, - 0, - 0, - 0, - 1, - 0, - 3, - 1, - 1, - 3, - 3, - 0, - 0, - 3, - 0, - 0, - 3, - 0, - 2, - 3, - 1, - 0, - 3, - 1, - 0, - 3, - 3, - 2, - 0, - 4, - 2, - 2, - 0, - 2, - 0, - 0, - 0, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 1, - 2, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 1, - 3, - 1, - 2, - 0, - 0, - 0, - 1, - 0, - 0, - 1, - 4), - (0, - 3, - 0, - 3, - 0, - 5, - 0, - 1, - 0, - 2, - 4, - 3, - 1, - 3, - 3, - 2, - 1, - 1, - 5, - 2, - 1, - 0, - 5, - 1, - 2, - 0, - 0, - 0, - 3, - 3, - 2, - 2, - 3, - 2, - 4, - 3, - 0, - 0, - 3, - 3, - 1, - 3, - 3, - 0, - 2, - 5, - 3, - 4, - 0, - 3, - 3, - 0, - 1, - 2, - 0, - 2, - 2, - 0, - 3, - 2, - 0, - 2, - 2, - 3, - 3, - 3, - 0, - 2, - 0, - 1, - 0, - 3, - 4, - 4, - 2, - 5, - 4, - 0, - 3, - 0, - 0, - 3, - 5), - (0, - 3, - 0, - 3, - 0, - 3, - 0, - 1, - 0, - 3, - 3, - 3, - 3, - 0, - 3, - 0, - 2, - 0, - 2, - 1, - 1, - 0, - 2, - 0, - 1, - 0, - 0, - 0, - 2, - 1, - 0, - 0, - 1, - 0, - 3, - 2, - 0, - 0, - 3, - 3, - 1, - 2, - 3, - 1, - 0, - 3, - 3, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 2, - 3, - 1, - 2, - 3, - 0, - 3, - 0, - 1, - 0, - 3, - 2, - 1, - 0, - 4, - 3, - 0, - 1, - 1, - 0, - 3, - 3), - (0, - 4, - 0, - 5, - 0, - 3, - 0, - 3, - 0, - 4, - 5, - 5, - 4, - 3, - 5, - 3, - 4, - 3, - 5, - 3, - 3, - 2, - 5, - 3, - 4, - 4, - 4, - 3, - 4, - 3, - 4, - 5, - 5, - 3, - 4, - 4, - 3, - 4, - 4, - 5, - 4, - 4, - 4, - 3, - 4, - 5, - 5, - 4, - 2, - 3, - 4, - 2, - 3, - 4, - 0, - 3, - 3, - 1, - 4, - 3, - 2, - 4, - 3, - 3, - 5, - 5, - 0, - 3, - 0, - 3, - 0, - 5, - 5, - 5, - 5, - 4, - 4, - 0, - 4, - 0, - 1, - 4, - 4), - (0, - 4, - 0, - 4, - 0, - 3, - 0, - 3, - 0, - 3, - 5, - 4, - 4, - 2, - 3, - 2, - 5, - 1, - 3, - 2, - 5, - 1, - 4, - 2, - 3, - 2, - 3, - 3, - 4, - 3, - 3, - 3, - 3, - 2, - 5, - 4, - 1, - 3, - 3, - 5, - 3, - 4, - 4, - 0, - 4, - 4, - 3, - 1, - 1, - 3, - 1, - 0, - 2, - 3, - 0, - 2, - 3, - 0, - 3, - 0, - 0, - 4, - 3, - 1, - 3, - 4, - 0, - 3, - 0, - 2, - 0, - 4, - 4, - 4, - 3, - 4, - 5, - 0, - 4, - 0, - 0, - 3, - 4), - (0, - 3, - 0, - 3, - 0, - 3, - 1, - 2, - 0, - 3, - 4, - 4, - 3, - 3, - 3, - 0, - 2, - 2, - 4, - 3, - 3, - 1, - 3, - 3, - 3, - 1, - 1, - 0, - 3, - 1, - 4, - 3, - 2, - 3, - 4, - 4, - 2, - 4, - 4, - 4, - 3, - 4, - 4, - 3, - 2, - 4, - 4, - 3, - 1, - 3, - 3, - 1, - 3, - 3, - 0, - 4, - 1, - 0, - 2, - 2, - 1, - 4, - 3, - 2, - 3, - 3, - 5, - 4, - 3, - 3, - 5, - 4, - 4, - 3, - 3, - 0, - 4, - 0, - 3, - 2, - 2, - 4, - 4), - (0, - 2, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 1, - 2, - 1, - 3, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 1, - 2, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 1, - 0, - 1, - 1, - 3, - 1, - 0, - 0, - 0, - 1, - 1, - 0, - 1, - 1, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 2, - 0, - 3, - 4, - 0, - 0, - 0, - 1, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 1, - 1), - (0, - 1, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 4, - 0, - 4, - 1, - 4, - 0, - 3, - 0, - 4, - 0, - 3, - 0, - 4, - 0, - 3, - 0, - 3, - 0, - 4, - 1, - 5, - 1, - 4, - 0, - 0, - 3, - 0, - 5, - 0, - 5, - 2, - 0, - 1, - 0, - 0, - 0, - 2, - 1, - 4, - 0, - 1, - 3, - 0, - 0, - 3, - 0, - 0, - 3, - 1, - 1, - 4, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0), - (1, - 4, - 0, - 5, - 0, - 3, - 0, - 2, - 0, - 3, - 5, - 4, - 4, - 3, - 4, - 3, - 5, - 3, - 4, - 3, - 3, - 0, - 4, - 3, - 3, - 3, - 3, - 3, - 3, - 2, - 4, - 4, - 3, - 1, - 3, - 4, - 4, - 5, - 4, - 4, - 3, - 4, - 4, - 1, - 3, - 5, - 4, - 3, - 3, - 3, - 1, - 2, - 2, - 3, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 5, - 3, - 3, - 4, - 5, - 0, - 3, - 0, - 3, - 0, - 3, - 4, - 3, - 4, - 4, - 3, - 0, - 3, - 0, - 2, - 4, - 3), - (0, - 1, - 0, - 4, - 0, - 0, - 0, - 0, - 0, - 1, - 4, - 0, - 4, - 1, - 4, - 2, - 4, - 0, - 3, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 3, - 1, - 1, - 1, - 0, - 3, - 0, - 0, - 0, - 1, - 2, - 1, - 0, - 0, - 1, - 1, - 1, - 1, - 0, - 1, - 0, - 0, - 0, - 1, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 3, - 2, - 0, - 2, - 2, - 0, - 1, - 0, - 0, - 0, - 2, - 3, - 2, - 3, - 3, - 0, - 0, - 0, - 0, - 2, - 1, - 0), - (0, - 5, - 1, - 5, - 0, - 3, - 0, - 3, - 0, - 5, - 4, - 4, - 5, - 1, - 5, - 3, - 3, - 0, - 4, - 3, - 4, - 3, - 5, - 3, - 4, - 3, - 3, - 2, - 4, - 3, - 4, - 3, - 3, - 0, - 3, - 3, - 1, - 4, - 4, - 3, - 4, - 4, - 4, - 3, - 4, - 5, - 5, - 3, - 2, - 3, - 1, - 1, - 3, - 3, - 1, - 3, - 1, - 1, - 3, - 3, - 2, - 4, - 5, - 3, - 3, - 5, - 0, - 4, - 0, - 3, - 0, - 4, - 4, - 3, - 5, - 3, - 3, - 0, - 3, - 4, - 0, - 4, - 3), - (0, - 5, - 0, - 5, - 0, - 3, - 0, - 2, - 0, - 4, - 4, - 3, - 5, - 2, - 4, - 3, - 3, - 3, - 4, - 4, - 4, - 3, - 5, - 3, - 5, - 3, - 3, - 1, - 4, - 0, - 4, - 3, - 3, - 0, - 3, - 3, - 0, - 4, - 4, - 4, - 4, - 5, - 4, - 3, - 3, - 5, - 5, - 3, - 2, - 3, - 1, - 2, - 3, - 2, - 0, - 1, - 0, - 0, - 3, - 2, - 2, - 4, - 4, - 3, - 1, - 5, - 0, - 4, - 0, - 3, - 0, - 4, - 3, - 1, - 3, - 2, - 1, - 0, - 3, - 3, - 0, - 3, - 3), - (0, - 4, - 0, - 5, - 0, - 5, - 0, - 4, - 0, - 4, - 5, - 5, - 5, - 3, - 4, - 3, - 3, - 2, - 5, - 4, - 4, - 3, - 5, - 3, - 5, - 3, - 4, - 0, - 4, - 3, - 4, - 4, - 3, - 2, - 4, - 4, - 3, - 4, - 5, - 4, - 4, - 5, - 5, - 0, - 3, - 5, - 5, - 4, - 1, - 3, - 3, - 2, - 3, - 3, - 1, - 3, - 1, - 0, - 4, - 3, - 1, - 4, - 4, - 3, - 4, - 5, - 0, - 4, - 0, - 2, - 0, - 4, - 3, - 4, - 4, - 3, - 3, - 0, - 4, - 0, - 0, - 5, - 5), - (0, - 4, - 0, - 4, - 0, - 5, - 0, - 1, - 1, - 3, - 3, - 4, - 4, - 3, - 4, - 1, - 3, - 0, - 5, - 1, - 3, - 0, - 3, - 1, - 3, - 1, - 1, - 0, - 3, - 0, - 3, - 3, - 4, - 0, - 4, - 3, - 0, - 4, - 4, - 4, - 3, - 4, - 4, - 0, - 3, - 5, - 4, - 1, - 0, - 3, - 0, - 0, - 2, - 3, - 0, - 3, - 1, - 0, - 3, - 1, - 0, - 3, - 2, - 1, - 3, - 5, - 0, - 3, - 0, - 1, - 0, - 3, - 2, - 3, - 3, - 4, - 4, - 0, - 2, - 2, - 0, - 4, - 4), - (2, - 4, - 0, - 5, - 0, - 4, - 0, - 3, - 0, - 4, - 5, - 5, - 4, - 3, - 5, - 3, - 5, - 3, - 5, - 3, - 5, - 2, - 5, - 3, - 4, - 3, - 3, - 4, - 3, - 4, - 5, - 3, - 2, - 1, - 5, - 4, - 3, - 2, - 3, - 4, - 5, - 3, - 4, - 1, - 2, - 5, - 4, - 3, - 0, - 3, - 3, - 0, - 3, - 2, - 0, - 2, - 3, - 0, - 4, - 1, - 0, - 3, - 4, - 3, - 3, - 5, - 0, - 3, - 0, - 1, - 0, - 4, - 5, - 5, - 5, - 4, - 3, - 0, - 4, - 2, - 0, - 3, - 5), - (0, - 5, - 0, - 4, - 0, - 4, - 0, - 2, - 0, - 5, - 4, - 3, - 4, - 3, - 4, - 3, - 3, - 3, - 4, - 3, - 4, - 2, - 5, - 3, - 5, - 3, - 4, - 1, - 4, - 3, - 4, - 4, - 4, - 0, - 3, - 5, - 0, - 4, - 4, - 4, - 4, - 5, - 3, - 1, - 3, - 4, - 5, - 3, - 3, - 3, - 3, - 3, - 3, - 3, - 0, - 2, - 2, - 0, - 3, - 3, - 2, - 4, - 3, - 3, - 3, - 5, - 3, - 4, - 1, - 3, - 3, - 5, - 3, - 2, - 0, - 0, - 0, - 0, - 4, - 3, - 1, - 3, - 3), - (0, - 1, - 0, - 3, - 0, - 3, - 0, - 1, - 0, - 1, - 3, - 3, - 3, - 2, - 3, - 3, - 3, - 0, - 3, - 0, - 0, - 0, - 3, - 1, - 3, - 0, - 0, - 0, - 2, - 2, - 2, - 3, - 0, - 0, - 3, - 2, - 0, - 1, - 2, - 4, - 1, - 3, - 3, - 0, - 0, - 3, - 3, - 3, - 0, - 1, - 0, - 0, - 2, - 1, - 0, - 0, - 3, - 0, - 3, - 1, - 0, - 3, - 0, - 0, - 1, - 3, - 0, - 2, - 0, - 1, - 0, - 3, - 3, - 1, - 3, - 3, - 0, - 0, - 1, - 1, - 0, - 3, - 3), - (0, - 2, - 0, - 3, - 0, - 2, - 1, - 4, - 0, - 2, - 2, - 3, - 1, - 1, - 3, - 1, - 1, - 0, - 2, - 0, - 3, - 1, - 2, - 3, - 1, - 3, - 0, - 0, - 1, - 0, - 4, - 3, - 2, - 3, - 3, - 3, - 1, - 4, - 2, - 3, - 3, - 3, - 3, - 1, - 0, - 3, - 1, - 4, - 0, - 1, - 1, - 0, - 1, - 2, - 0, - 1, - 1, - 0, - 1, - 1, - 0, - 3, - 1, - 3, - 2, - 2, - 0, - 1, - 0, - 0, - 0, - 2, - 3, - 3, - 3, - 1, - 0, - 0, - 0, - 0, - 0, - 2, - 3), - (0, - 5, - 0, - 4, - 0, - 5, - 0, - 2, - 0, - 4, - 5, - 5, - 3, - 3, - 4, - 3, - 3, - 1, - 5, - 4, - 4, - 2, - 4, - 4, - 4, - 3, - 4, - 2, - 4, - 3, - 5, - 5, - 4, - 3, - 3, - 4, - 3, - 3, - 5, - 5, - 4, - 5, - 5, - 1, - 3, - 4, - 5, - 3, - 1, - 4, - 3, - 1, - 3, - 3, - 0, - 3, - 3, - 1, - 4, - 3, - 1, - 4, - 5, - 3, - 3, - 5, - 0, - 4, - 0, - 3, - 0, - 5, - 3, - 3, - 1, - 4, - 3, - 0, - 4, - 0, - 1, - 5, - 3), - (0, - 5, - 0, - 5, - 0, - 4, - 0, - 2, - 0, - 4, - 4, - 3, - 4, - 3, - 3, - 3, - 3, - 3, - 5, - 4, - 4, - 4, - 4, - 4, - 4, - 5, - 3, - 3, - 5, - 2, - 4, - 4, - 4, - 3, - 4, - 4, - 3, - 3, - 4, - 4, - 5, - 5, - 3, - 3, - 4, - 3, - 4, - 3, - 3, - 4, - 3, - 3, - 3, - 3, - 1, - 2, - 2, - 1, - 4, - 3, - 3, - 5, - 4, - 4, - 3, - 4, - 0, - 4, - 0, - 3, - 0, - 4, - 4, - 4, - 4, - 4, - 1, - 0, - 4, - 2, - 0, - 2, - 4), - (0, - 4, - 0, - 4, - 0, - 3, - 0, - 1, - 0, - 3, - 5, - 2, - 3, - 0, - 3, - 0, - 2, - 1, - 4, - 2, - 3, - 3, - 4, - 1, - 4, - 3, - 3, - 2, - 4, - 1, - 3, - 3, - 3, - 0, - 3, - 3, - 0, - 0, - 3, - 3, - 3, - 5, - 3, - 3, - 3, - 3, - 3, - 2, - 0, - 2, - 0, - 0, - 2, - 0, - 0, - 2, - 0, - 0, - 1, - 0, - 0, - 3, - 1, - 2, - 2, - 3, - 0, - 3, - 0, - 2, - 0, - 4, - 4, - 3, - 3, - 4, - 1, - 0, - 3, - 0, - 0, - 2, - 4), - (0, - 0, - 0, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 2, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 3, - 1, - 3, - 0, - 3, - 2, - 0, - 0, - 0, - 1, - 0, - 3, - 2, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 4, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 2), - (0, - 2, - 1, - 3, - 0, - 2, - 0, - 2, - 0, - 3, - 3, - 3, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 3, - 3, - 3, - 4, - 2, - 2, - 1, - 2, - 1, - 4, - 0, - 4, - 3, - 1, - 3, - 3, - 3, - 2, - 4, - 3, - 5, - 4, - 3, - 3, - 3, - 3, - 3, - 3, - 3, - 0, - 1, - 3, - 0, - 2, - 0, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 4, - 2, - 0, - 2, - 3, - 0, - 3, - 3, - 0, - 3, - 3, - 4, - 2, - 3, - 1, - 4, - 0, - 1, - 2, - 0, - 2, - 3), - (0, - 3, - 0, - 3, - 0, - 1, - 0, - 3, - 0, - 2, - 3, - 3, - 3, - 0, - 3, - 1, - 2, - 0, - 3, - 3, - 2, - 3, - 3, - 2, - 3, - 2, - 3, - 1, - 3, - 0, - 4, - 3, - 2, - 0, - 3, - 3, - 1, - 4, - 3, - 3, - 2, - 3, - 4, - 3, - 1, - 3, - 3, - 1, - 1, - 0, - 1, - 1, - 0, - 1, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 4, - 1, - 1, - 0, - 3, - 0, - 3, - 1, - 0, - 2, - 3, - 3, - 3, - 3, - 3, - 1, - 0, - 0, - 2, - 0, - 3, - 3), - (0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 2, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 3, - 0, - 3, - 1, - 0, - 1, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 2, - 0, - 2, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3), - (0, - 2, - 0, - 3, - 1, - 3, - 0, - 3, - 0, - 2, - 3, - 3, - 3, - 1, - 3, - 1, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 1, - 3, - 0, - 2, - 3, - 1, - 1, - 4, - 3, - 3, - 2, - 3, - 3, - 1, - 2, - 2, - 4, - 1, - 3, - 3, - 0, - 1, - 4, - 2, - 3, - 0, - 1, - 3, - 0, - 3, - 0, - 0, - 1, - 3, - 0, - 2, - 0, - 0, - 3, - 3, - 2, - 1, - 3, - 0, - 3, - 0, - 2, - 0, - 3, - 4, - 4, - 4, - 3, - 1, - 0, - 3, - 0, - 0, - 3, - 3), - (0, - 2, - 0, - 1, - 0, - 2, - 0, - 0, - 0, - 1, - 3, - 2, - 2, - 1, - 3, - 0, - 1, - 1, - 3, - 0, - 3, - 2, - 3, - 1, - 2, - 0, - 2, - 0, - 1, - 1, - 3, - 3, - 3, - 0, - 3, - 3, - 1, - 1, - 2, - 3, - 2, - 3, - 3, - 1, - 2, - 3, - 2, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 1, - 0, - 0, - 2, - 1, - 2, - 1, - 3, - 0, - 3, - 0, - 0, - 0, - 3, - 4, - 4, - 4, - 3, - 2, - 0, - 2, - 0, - 0, - 2, - 4), - (0, - 0, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 2, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 3, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3), - (0, - 3, - 0, - 3, - 0, - 2, - 0, - 3, - 0, - 3, - 3, - 3, - 2, - 3, - 2, - 2, - 2, - 0, - 3, - 1, - 3, - 3, - 3, - 2, - 3, - 3, - 0, - 0, - 3, - 0, - 3, - 2, - 2, - 0, - 2, - 3, - 1, - 4, - 3, - 4, - 3, - 3, - 2, - 3, - 1, - 5, - 4, - 4, - 0, - 3, - 1, - 2, - 1, - 3, - 0, - 3, - 1, - 1, - 2, - 0, - 2, - 3, - 1, - 3, - 1, - 3, - 0, - 3, - 0, - 1, - 0, - 3, - 3, - 4, - 4, - 2, - 1, - 0, - 2, - 1, - 0, - 2, - 4), - (0, - 1, - 0, - 3, - 0, - 1, - 0, - 2, - 0, - 1, - 4, - 2, - 5, - 1, - 4, - 0, - 2, - 0, - 2, - 1, - 3, - 1, - 4, - 0, - 2, - 1, - 0, - 0, - 2, - 1, - 4, - 1, - 1, - 0, - 3, - 3, - 0, - 5, - 1, - 3, - 2, - 3, - 3, - 1, - 0, - 3, - 2, - 3, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 4, - 0, - 1, - 0, - 3, - 0, - 2, - 0, - 1, - 0, - 3, - 3, - 3, - 4, - 3, - 3, - 0, - 0, - 0, - 0, - 2, - 3), - (0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 3), - (0, - 1, - 0, - 3, - 0, - 4, - 0, - 3, - 0, - 2, - 4, - 3, - 1, - 0, - 3, - 2, - 2, - 1, - 3, - 1, - 2, - 2, - 3, - 1, - 1, - 1, - 2, - 1, - 3, - 0, - 1, - 2, - 0, - 1, - 3, - 2, - 1, - 3, - 0, - 5, - 5, - 1, - 0, - 0, - 1, - 3, - 2, - 1, - 0, - 3, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 3, - 4, - 0, - 1, - 1, - 1, - 3, - 2, - 0, - 2, - 0, - 1, - 0, - 2, - 3, - 3, - 1, - 2, - 3, - 0, - 1, - 0, - 1, - 0, - 4), - (0, - 0, - 0, - 1, - 0, - 3, - 0, - 3, - 0, - 2, - 2, - 1, - 0, - 0, - 4, - 0, - 3, - 0, - 3, - 1, - 3, - 0, - 3, - 0, - 3, - 0, - 1, - 0, - 3, - 0, - 3, - 1, - 3, - 0, - 3, - 3, - 0, - 0, - 1, - 2, - 1, - 1, - 1, - 0, - 1, - 2, - 0, - 0, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 2, - 1, - 2, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 2, - 3, - 3, - 3, - 3, - 0, - 0, - 0, - 0, - 1, - 4), - (0, - 0, - 0, - 3, - 0, - 3, - 0, - 0, - 0, - 0, - 3, - 1, - 1, - 0, - 3, - 0, - 1, - 0, - 2, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 3, - 0, - 2, - 0, - 2, - 3, - 0, - 0, - 2, - 2, - 3, - 1, - 2, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 2, - 3), - (2, - 4, - 0, - 5, - 0, - 5, - 0, - 4, - 0, - 3, - 4, - 3, - 3, - 3, - 4, - 3, - 3, - 3, - 4, - 3, - 4, - 4, - 5, - 4, - 5, - 5, - 5, - 2, - 3, - 0, - 5, - 5, - 4, - 1, - 5, - 4, - 3, - 1, - 5, - 4, - 3, - 4, - 4, - 3, - 3, - 4, - 3, - 3, - 0, - 3, - 2, - 0, - 2, - 3, - 0, - 3, - 0, - 0, - 3, - 3, - 0, - 5, - 3, - 2, - 3, - 3, - 0, - 3, - 0, - 3, - 0, - 3, - 4, - 5, - 4, - 5, - 3, - 0, - 4, - 3, - 0, - 3, - 4), - (0, - 3, - 0, - 3, - 0, - 3, - 0, - 3, - 0, - 3, - 3, - 4, - 3, - 2, - 3, - 2, - 3, - 0, - 4, - 3, - 3, - 3, - 3, - 3, - 3, - 3, - 3, - 0, - 3, - 2, - 4, - 3, - 3, - 1, - 3, - 4, - 3, - 4, - 4, - 4, - 3, - 4, - 4, - 3, - 2, - 4, - 4, - 1, - 0, - 2, - 0, - 0, - 1, - 1, - 0, - 2, - 0, - 0, - 3, - 1, - 0, - 5, - 3, - 2, - 1, - 3, - 0, - 3, - 0, - 1, - 2, - 4, - 3, - 2, - 4, - 3, - 3, - 0, - 3, - 2, - 0, - 4, - 4), - (0, - 3, - 0, - 3, - 0, - 1, - 0, - 0, - 0, - 1, - 4, - 3, - 3, - 2, - 3, - 1, - 3, - 1, - 4, - 2, - 3, - 2, - 4, - 2, - 3, - 4, - 3, - 0, - 2, - 2, - 3, - 3, - 3, - 0, - 3, - 3, - 3, - 0, - 3, - 4, - 1, - 3, - 3, - 0, - 3, - 4, - 3, - 3, - 0, - 1, - 1, - 0, - 1, - 0, - 0, - 0, - 4, - 0, - 3, - 0, - 0, - 3, - 1, - 2, - 1, - 3, - 0, - 4, - 0, - 1, - 0, - 4, - 3, - 3, - 4, - 3, - 3, - 0, - 2, - 0, - 0, - 3, - 3), - (0, - 3, - 0, - 4, - 0, - 1, - 0, - 3, - 0, - 3, - 4, - 3, - 3, - 0, - 3, - 3, - 3, - 1, - 3, - 1, - 3, - 3, - 4, - 3, - 3, - 3, - 0, - 0, - 3, - 1, - 5, - 3, - 3, - 1, - 3, - 3, - 2, - 5, - 4, - 3, - 3, - 4, - 5, - 3, - 2, - 5, - 3, - 4, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 1, - 1, - 0, - 4, - 2, - 2, - 1, - 3, - 0, - 3, - 0, - 2, - 0, - 4, - 4, - 3, - 5, - 3, - 2, - 0, - 1, - 1, - 0, - 3, - 4), - (0, - 5, - 0, - 4, - 0, - 5, - 0, - 2, - 0, - 4, - 4, - 3, - 3, - 2, - 3, - 3, - 3, - 1, - 4, - 3, - 4, - 1, - 5, - 3, - 4, - 3, - 4, - 0, - 4, - 2, - 4, - 3, - 4, - 1, - 5, - 4, - 0, - 4, - 4, - 4, - 4, - 5, - 4, - 1, - 3, - 5, - 4, - 2, - 1, - 4, - 1, - 1, - 3, - 2, - 0, - 3, - 1, - 0, - 3, - 2, - 1, - 4, - 3, - 3, - 3, - 4, - 0, - 4, - 0, - 3, - 0, - 4, - 4, - 4, - 3, - 3, - 3, - 0, - 4, - 2, - 0, - 3, - 4), - (1, - 4, - 0, - 4, - 0, - 3, - 0, - 1, - 0, - 3, - 3, - 3, - 1, - 1, - 3, - 3, - 2, - 2, - 3, - 3, - 1, - 0, - 3, - 2, - 2, - 1, - 2, - 0, - 3, - 1, - 2, - 1, - 2, - 0, - 3, - 2, - 0, - 2, - 2, - 3, - 3, - 4, - 3, - 0, - 3, - 3, - 1, - 2, - 0, - 1, - 1, - 3, - 1, - 2, - 0, - 0, - 3, - 0, - 1, - 1, - 0, - 3, - 2, - 2, - 3, - 3, - 0, - 3, - 0, - 0, - 0, - 2, - 3, - 3, - 4, - 3, - 3, - 0, - 1, - 0, - 0, - 1, - 4), - (0, - 4, - 0, - 4, - 0, - 4, - 0, - 0, - 0, - 3, - 4, - 4, - 3, - 1, - 4, - 2, - 3, - 2, - 3, - 3, - 3, - 1, - 4, - 3, - 4, - 0, - 3, - 0, - 4, - 2, - 3, - 3, - 2, - 2, - 5, - 4, - 2, - 1, - 3, - 4, - 3, - 4, - 3, - 1, - 3, - 3, - 4, - 2, - 0, - 2, - 1, - 0, - 3, - 3, - 0, - 0, - 2, - 0, - 3, - 1, - 0, - 4, - 4, - 3, - 4, - 3, - 0, - 4, - 0, - 1, - 0, - 2, - 4, - 4, - 4, - 4, - 4, - 0, - 3, - 2, - 0, - 3, - 3), - (0, - 0, - 0, - 1, - 0, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 3, - 2, - 0, - 0, - 1, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 2), - (0, - 2, - 0, - 3, - 0, - 4, - 0, - 4, - 0, - 1, - 3, - 3, - 3, - 0, - 4, - 0, - 2, - 1, - 2, - 1, - 1, - 1, - 2, - 0, - 3, - 1, - 1, - 0, - 1, - 0, - 3, - 1, - 0, - 0, - 3, - 3, - 2, - 0, - 1, - 1, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 2, - 0, - 2, - 2, - 0, - 3, - 1, - 0, - 0, - 1, - 0, - 1, - 1, - 0, - 1, - 2, - 0, - 3, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 3, - 3, - 4, - 3, - 1, - 0, - 1, - 0, - 3, - 0, - 2), - (0, - 0, - 0, - 3, - 0, - 5, - 0, - 0, - 0, - 0, - 1, - 0, - 2, - 0, - 3, - 1, - 0, - 1, - 3, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 1, - 1, - 0, - 0, - 4, - 0, - 0, - 0, - 2, - 3, - 0, - 1, - 4, - 1, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 3), - (0, - 2, - 0, - 5, - 0, - 5, - 0, - 1, - 0, - 2, - 4, - 3, - 3, - 2, - 5, - 1, - 3, - 2, - 3, - 3, - 3, - 0, - 4, - 1, - 2, - 0, - 3, - 0, - 4, - 0, - 2, - 2, - 1, - 1, - 5, - 3, - 0, - 0, - 1, - 4, - 2, - 3, - 2, - 0, - 3, - 3, - 3, - 2, - 0, - 2, - 4, - 1, - 1, - 2, - 0, - 1, - 1, - 0, - 3, - 1, - 0, - 1, - 3, - 1, - 2, - 3, - 0, - 2, - 0, - 0, - 0, - 1, - 3, - 5, - 4, - 4, - 4, - 0, - 3, - 0, - 0, - 1, - 3), - (0, - 4, - 0, - 5, - 0, - 4, - 0, - 4, - 0, - 4, - 5, - 4, - 3, - 3, - 4, - 3, - 3, - 3, - 4, - 3, - 4, - 4, - 5, - 3, - 4, - 5, - 4, - 2, - 4, - 2, - 3, - 4, - 3, - 1, - 4, - 4, - 1, - 3, - 5, - 4, - 4, - 5, - 5, - 4, - 4, - 5, - 5, - 5, - 2, - 3, - 3, - 1, - 4, - 3, - 1, - 3, - 3, - 0, - 3, - 3, - 1, - 4, - 3, - 4, - 4, - 4, - 0, - 3, - 0, - 4, - 0, - 3, - 3, - 4, - 4, - 5, - 0, - 0, - 4, - 3, - 0, - 4, - 5), - (0, - 4, - 0, - 4, - 0, - 3, - 0, - 3, - 0, - 3, - 4, - 4, - 4, - 3, - 3, - 2, - 4, - 3, - 4, - 3, - 4, - 3, - 5, - 3, - 4, - 3, - 2, - 1, - 4, - 2, - 4, - 4, - 3, - 1, - 3, - 4, - 2, - 4, - 5, - 5, - 3, - 4, - 5, - 4, - 1, - 5, - 4, - 3, - 0, - 3, - 2, - 2, - 3, - 2, - 1, - 3, - 1, - 0, - 3, - 3, - 3, - 5, - 3, - 3, - 3, - 5, - 4, - 4, - 2, - 3, - 3, - 4, - 3, - 3, - 3, - 2, - 1, - 0, - 3, - 2, - 1, - 4, - 3), - (0, - 4, - 0, - 5, - 0, - 4, - 0, - 3, - 0, - 3, - 5, - 5, - 3, - 2, - 4, - 3, - 4, - 0, - 5, - 4, - 4, - 1, - 4, - 4, - 4, - 3, - 3, - 3, - 4, - 3, - 5, - 5, - 2, - 3, - 3, - 4, - 1, - 2, - 5, - 5, - 3, - 5, - 5, - 2, - 3, - 5, - 5, - 4, - 0, - 3, - 2, - 0, - 3, - 3, - 1, - 1, - 5, - 1, - 4, - 1, - 0, - 4, - 3, - 2, - 3, - 5, - 0, - 4, - 0, - 3, - 0, - 5, - 4, - 3, - 4, - 3, - 0, - 0, - 4, - 1, - 0, - 4, - 4), - (1, - 3, - 0, - 4, - 0, - 2, - 0, - 2, - 0, - 2, - 5, - 5, - 3, - 3, - 3, - 3, - 3, - 0, - 4, - 2, - 3, - 4, - 4, - 4, - 3, - 4, - 0, - 0, - 3, - 4, - 5, - 4, - 3, - 3, - 3, - 3, - 2, - 5, - 5, - 4, - 5, - 5, - 5, - 4, - 3, - 5, - 5, - 5, - 1, - 3, - 1, - 0, - 1, - 0, - 0, - 3, - 2, - 0, - 4, - 2, - 0, - 5, - 2, - 3, - 2, - 4, - 1, - 3, - 0, - 3, - 0, - 4, - 5, - 4, - 5, - 4, - 3, - 0, - 4, - 2, - 0, - 5, - 4), - (0, - 3, - 0, - 4, - 0, - 5, - 0, - 3, - 0, - 3, - 4, - 4, - 3, - 2, - 3, - 2, - 3, - 3, - 3, - 3, - 3, - 2, - 4, - 3, - 3, - 2, - 2, - 0, - 3, - 3, - 3, - 3, - 3, - 1, - 3, - 3, - 3, - 0, - 4, - 4, - 3, - 4, - 4, - 1, - 1, - 4, - 4, - 2, - 0, - 3, - 1, - 0, - 1, - 1, - 0, - 4, - 1, - 0, - 2, - 3, - 1, - 3, - 3, - 1, - 3, - 4, - 0, - 3, - 0, - 1, - 0, - 3, - 1, - 3, - 0, - 0, - 1, - 0, - 2, - 0, - 0, - 4, - 4), - (0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0), - (0, - 3, - 0, - 3, - 0, - 2, - 0, - 3, - 0, - 1, - 5, - 4, - 3, - 3, - 3, - 1, - 4, - 2, - 1, - 2, - 3, - 4, - 4, - 2, - 4, - 4, - 5, - 0, - 3, - 1, - 4, - 3, - 4, - 0, - 4, - 3, - 3, - 3, - 2, - 3, - 2, - 5, - 3, - 4, - 3, - 2, - 2, - 3, - 0, - 0, - 3, - 0, - 2, - 1, - 0, - 1, - 2, - 0, - 0, - 0, - 0, - 2, - 1, - 1, - 3, - 1, - 0, - 2, - 0, - 4, - 0, - 3, - 4, - 4, - 4, - 5, - 2, - 0, - 2, - 0, - 0, - 1, - 3), - (0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 0, - 0, - 1, - 1, - 0, - 0, - 0, - 4, - 2, - 1, - 1, - 0, - 1, - 0, - 3, - 2, - 0, - 0, - 3, - 1, - 1, - 1, - 2, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 1, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 1, - 4, - 0, - 4, - 2, - 1, - 0, - 0, - 0, - 0, - 0, - 1), - (0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 3, - 1, - 0, - 0, - 0, - 2, - 0, - 2, - 1, - 0, - 0, - 1, - 2, - 1, - 0, - 1, - 1, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 3, - 1, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 2, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2), - (0, - 4, - 0, - 4, - 0, - 4, - 0, - 3, - 0, - 4, - 4, - 3, - 4, - 2, - 4, - 3, - 2, - 0, - 4, - 4, - 4, - 3, - 5, - 3, - 5, - 3, - 3, - 2, - 4, - 2, - 4, - 3, - 4, - 3, - 1, - 4, - 0, - 2, - 3, - 4, - 4, - 4, - 3, - 3, - 3, - 4, - 4, - 4, - 3, - 4, - 1, - 3, - 4, - 3, - 2, - 1, - 2, - 1, - 3, - 3, - 3, - 4, - 4, - 3, - 3, - 5, - 0, - 4, - 0, - 3, - 0, - 4, - 3, - 3, - 3, - 2, - 1, - 0, - 3, - 0, - 0, - 3, - 3), - (0, - 4, - 0, - 3, - 0, - 3, - 0, - 3, - 0, - 3, - 5, - 5, - 3, - 3, - 3, - 3, - 4, - 3, - 4, - 3, - 3, - 3, - 4, - 4, - 4, - 3, - 3, - 3, - 3, - 4, - 3, - 5, - 3, - 3, - 1, - 3, - 2, - 4, - 5, - 5, - 5, - 5, - 4, - 3, - 4, - 5, - 5, - 3, - 2, - 2, - 3, - 3, - 3, - 3, - 2, - 3, - 3, - 1, - 2, - 3, - 2, - 4, - 3, - 3, - 3, - 4, - 0, - 4, - 0, - 2, - 0, - 4, - 3, - 2, - 2, - 1, - 2, - 0, - 3, - 0, - 0, - 4, - 1)) - -class JapaneseContextAnalysis(): - - def __init__(self): - self.reset() - - def reset(self): - self._mTotalRel = 0 - self._mRelSample = [0] * NUM_OF_CATEGORY - self._mNeedToSkipCharNum = 0 - self._mLastCharOrder = -1 - self._mDone = False - - def feed(self, aBuf, aLen): - if self._mDone: - return - i = self._mNeedToSkipCharNum - while i < aLen: - order, charLen = self.get_order(aBuf[i:i + 2]) - i += charLen - if i > aLen: - self._mNeedToSkipCharNum = i - aLen - self._mLastCharOrder = -1 - else: - if order != -1 and self._mLastCharOrder != -1: - self._mTotalRel += 1 - if self._mTotalRel > MAX_REL_THRESHOLD: - self._mDone = True - break - self._mRelSample[jp2CharContext[self._mLastCharOrder][order]] += 1 - self._mLastCharOrder = order - - def got_enough_data(self): - return self._mTotalRel > ENOUGH_REL_THRESHOLD - - def get_confidence(self): - if self._mTotalRel > MINIMUM_DATA_THRESHOLD: - return (self._mTotalRel - self._mRelSample[0]) / self._mTotalRel - else: - return DONT_KNOW - - def get_order(self, aBuf): - return (-1, 1) - - -class SJISContextAnalysis(JapaneseContextAnalysis): - - def __init__(self): - self.charset_name = 'SHIFT_JIS' - - def get_charset_name(self): - return self.charset_name - - def get_order(self, aBuf): - if not aBuf: - return (-1, 1) - first_char = wrap_ord(aBuf[0]) - if 129 <= first_char <= 159 or 224 <= first_char <= 252: - charLen = 2 - if first_char == 135 or 250 <= first_char <= 252: - self.charset_name = 'CP932' - else: - charLen = 1 - if len(aBuf) > 1: - second_char = wrap_ord(aBuf[1]) - if first_char == 202 and 159 <= second_char <= 241: - return (second_char - 159, charLen) - return (-1, charLen) - - -class EUCJPContextAnalysis(JapaneseContextAnalysis): - - def get_order(self, aBuf): - if not aBuf: - return (-1, 1) - first_char = wrap_ord(aBuf[0]) - if first_char == 142 or 161 <= first_char <= 254: - charLen = 2 - elif first_char == 143: - charLen = 3 - else: - charLen = 1 - if len(aBuf) > 1: - second_char = wrap_ord(aBuf[1]) - if first_char == 164 and 161 <= second_char <= 243: - return (second_char - 161, charLen) - return (-1, charLen) diff --git a/stackless_response_router/stackless_response_router.py b/stackless_response_router/stackless_response_router.py @@ -1,15 +1,16 @@ #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\stackless_response_router\stackless_response_router.py +from __future__ import absolute_import import logging import sentry_sdk import time import uthread2 import uuid -from exceptions import TimeoutException, UnpackException +from .exceptions import TimeoutException, UnpackException DEFAULT_TIMEOUT_SECONDS = 10 MIN_TIMEOUT_SECONDS = 0.1 logger = logging.getLogger(__name__) -class StacklessResponseRouter: +class StacklessResponseRouter(object): def __init__(self, span_manager): self.response_handlers = {} @@ -37,7 +38,7 @@ class StacklessResponseRouter: try: timed_out_request_ids = [] now = time.time() - for request_id, rh in self.response_handlers.iteritems(): + for request_id, rh in self.response_handlers.items(): if now > rh.deadline: timed_out_request_ids.append(request_id) @@ -54,7 +55,7 @@ class StacklessResponseRouter: with sentry_sdk.push_scope() as scope: request_uuid = uuid.UUID(bytes=request_id_bytes) scope.set_tag('request_uuid', request_uuid) - for key, val in details.iteritems(): + for key, val in details.items(): scope.set_tag(key, val) sentry_sdk.capture_message('request timed out', 'error')