diff --git a/src/labone/core/reflection/capnp_dynamic_type_system.py b/src/labone/core/reflection/capnp_dynamic_type_system.py index faec008..430ed77 100644 --- a/src/labone/core/reflection/capnp_dynamic_type_system.py +++ b/src/labone/core/reflection/capnp_dynamic_type_system.py @@ -102,6 +102,9 @@ def _build_types_from_node( if node.name == "": logger.debug("Skipping node %s because it has no name", node_id) return + if node.file_of_origin == "capnp/c++.capnp": + logger.debug("Skipping node %s because it is in capnp/c++.capnp", node_id) + return logger.debug("Loading %s into module %s", node.name, module) submodule = _build_one_type(node.name, node.schema) setattr(module, node.name, submodule) diff --git a/src/labone/core/reflection/parsed_wire_schema.py b/src/labone/core/reflection/parsed_wire_schema.py index 9ef0c24..6e6fcbd 100644 --- a/src/labone/core/reflection/parsed_wire_schema.py +++ b/src/labone/core/reflection/parsed_wire_schema.py @@ -66,11 +66,11 @@ def _load_encoded_schema( for serialized_node in encoded_schema: node = self._loader.load_dynamic(serialized_node) node_proto = node.get_proto() + if ":" not in node_proto.displayName: + continue splitted_name = node_proto.displayName.split(":") - full_name = splitted_name[1] - name = full_name if "." not in full_name else full_name.split(".")[-1] loaded_node = LoadedNode( - name=name, + name=splitted_name[1].split(".")[-1], file_of_origin=splitted_name[0], schema=node, ) diff --git a/src/labone/mock/entry_point.py b/src/labone/mock/entry_point.py index c8a23dc..344c13d 100644 --- a/src/labone/mock/entry_point.py +++ b/src/labone/mock/entry_point.py @@ -2,20 +2,20 @@ from __future__ import annotations -from pathlib import Path from typing import TYPE_CHECKING from labone.core.reflection.server import ReflectionServer from labone.core.session import Session -from labone.mock.mock_server import MockServer +from labone.mock.hpk_schema import get_schema +from labone.mock.mock_server import start_local_mock from labone.mock.session_mock_template import SessionMockTemplate if TYPE_CHECKING: + import capnp + from labone.core.helper import CapnpCapability from labone.mock.session_mock_template import SessionMockFunctionality -SESSION_REFLECTION_BIN = Path(__file__).parent.parent / "resources" / "session.bin" - class MockSession(Session): """Regular Session holding a mock server. @@ -25,16 +25,21 @@ class MockSession(Session): there would be no reference to the capnp objects, which would go out of scope. This way, the correct lifetime of the capnp objects is ensured, by attaching it to its client. + + Args: + mock_server: Mock server. + capnp_session: Capnp session. + reflection: Reflection server. """ def __init__( self, - mock_server: MockServer, + mock_server: capnp.TwoPartyServer, capnp_session: CapnpCapability, *, - reflection_server: ReflectionServer, + reflection: ReflectionServer, ): - super().__init__(capnp_session, reflection_server=reflection_server) + super().__init__(capnp_session, reflection_server=reflection) self._mock_server = mock_server @@ -61,14 +66,13 @@ async def spawn_hpk_mock( capnp.lib.capnp.KjException: If the schema is invalid. Or the id of the concrete server is not in the schema. """ - mock_server = MockServer( - capability_bytes=SESSION_REFLECTION_BIN, - concrete_server=SessionMockTemplate(functionality), + server, client = await start_local_mock( + schema=get_schema(), + mock=SessionMockTemplate(functionality), ) - client_connection = await mock_server.start() - reflection_client = await ReflectionServer.create_from_connection(client_connection) + reflection = await ReflectionServer.create_from_connection(client) return MockSession( - mock_server, - reflection_client.session, # type: ignore[attr-defined] - reflection_server=reflection_client, + server, + reflection.session, # type: ignore[attr-defined] + reflection=reflection, ) diff --git a/src/labone/mock/hpk_schema.py b/src/labone/mock/hpk_schema.py new file mode 100644 index 0000000..9e69953 --- /dev/null +++ b/src/labone/mock/hpk_schema.py @@ -0,0 +1,115 @@ +# ruff: noqa: E501 Line too long +"""This file is generated and contains a capnproto schema in packed binary format. + +specifically a serialized reflection_capnp.CapSchema message with the typeId field +not set. + +The schema has been compiled from the file zhinst/io/protocol/capnp/hpk/hpk.capnp by the simplon-capnp-bundler +capnpc plugin. + +This file contains the following schema nodes: + - zhinst/io/protocol/capnp/hpk/hpk.capnp @0xe5b41bb10b86ce3e + - capnp/c++.capnp:allowCancellation @0xac7096ff8cfc9dce + - capnp/c++.capnp @0xbdf87d7bb8304e81 + - capnp/c++.capnp:namespace @0xb9c6f99ebf805f2c + - zhinst/io/protocol/capnp/reflection/reflection.capnp:Reflection @0xf9a52e68104bc776 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session @0xb9d445582da4a55c + - zhinst/io/protocol/capnp/hpk/hpk.capnp:Hpk @0xa621130a90860008 + - zhinst/io/protocol/capnp/reflection/reflection.capnp:Reflection.getTheSchema$Params @0x86a77be57bfa08f7 + - zhinst/io/protocol/capnp/reflection/reflection.capnp:CapSchema @0xcb31ef7a76eb85cf + - zhinst/io/protocol/capnp/reflection/reflection.capnp:Reflection.getTheSchema$Results @0xc9db2193e1883dd1 + - zhinst/io/protocol/capnp/reflection/reflection.capnp:Reflection.getReflectionVersion$Params @0xe3e32fd4d93c1199 + - zhinst/io/protocol/capnp/reflection/reflection.capnp:Reflection.getReflectionVersion$Results @0xfb31a67fd905411a + - capnp/schema.capnp:Node @0xe682ab4cf923a417 + - capnp/schema.capnp:ElementSize @0xd1958f7dba521926 + - capnp/schema.capnp:Field @0x9aad50a41f4af45f + - capnp/schema.capnp:Node.struct @0x9ea0b19b37fb4435 + - capnp/schema.capnp:Enumerant @0x978a7cebdc549a4d + - capnp/schema.capnp:Node.enum @0xb54ab3364333f598 + - capnp/schema.capnp:Method @0x9500cce23b334d80 + - capnp/schema.capnp:Superclass @0xa9962a9ed0a4d7f8 + - capnp/schema.capnp:Node.interface @0xe82753cff0c2218f + - capnp/schema.capnp:Type @0xd07378ede1f9cc60 + - capnp/schema.capnp:Value @0xce23dcd2d7b00c9b + - capnp/schema.capnp:Node.const @0xb18aa5ac7a0d9420 + - capnp/schema.capnp:Node.annotation @0xec1619d4400a0290 + - capnp/schema.capnp:Node.NestedNode @0xdebf55bbfa0fc242 + - capnp/schema.capnp:Annotation @0xf1c8950dab257542 + - capnp/schema.capnp:Node.Parameter @0xb9521bccf10fa3b1 + - capnp/schema.capnp:Brand @0x903455f06065422b + - capnp/schema.capnp @0xa93fc509624c72d9 + - capnp/schema.capnp:Brand.Scope @0xabd73485a9636bc9 + - capnp/schema.capnp:Brand.Binding @0xc863cd16969ee7fc + - capnp/schema.capnp:Type.list @0x87e739250a60ea97 + - capnp/schema.capnp:Type.enum @0x9e0e78711a7f87a9 + - capnp/schema.capnp:Type.struct @0xac3a6f60ef4cc6d3 + - capnp/schema.capnp:Type.interface @0xed8bca69f7fb0cbf + - capnp/schema.capnp:Type.anyPointer.unconstrained @0x8e3b5f79fe593656 + - capnp/schema.capnp:Type.anyPointer.parameter @0x9dd1f724f4614a85 + - capnp/schema.capnp:Type.anyPointer.implicitMethodParameter @0xbaefc9120c56e274 + - capnp/schema.capnp:Type.anyPointer @0xc2573fe8a23e49f1 + - capnp/schema.capnp:Field.slot @0xc42305476bb4746f + - capnp/schema.capnp:Field.group @0xcafccddb68db1d11 + - capnp/schema.capnp:Field.ordinal @0xbb90d5c287870be6 + - zhinst/io/protocol/capnp/reflection/reflection.capnp @0x8461c2916c39ad0e + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.listNodes$Params @0x92035429255ef5a8 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.listNodes$Results @0xebd34bdb74c961b0 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.deprecatedGetValues$Params @0xcd242e1bb990dfe7 + - zhinst/io/protocol/capnp/common/result.capnp:Result @0xbab0f33e1934323d + - zhinst/io/protocol/capnp/common/value.capnp:AnnotatedValue @0xf408ee376e837cdc + - zhinst/io/protocol/capnp/common/error.capnp:Error @0xc4e34e4c517d11d9 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.deprecatedGetValues$Results @0xe948518c129575bb + - zhinst/io/protocol/capnp/common/value.capnp:Value @0xb1838b4771be75ac + - zhinst/io/protocol/capnp/session/session_protocol.capnp:ReturnFromSetWhen @0xdd2da53aac55edf9 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.deprecatedSetValue$Params @0xa8f6fded40f38065 + - zhinst/io/protocol/capnp/common/value.capnp:Void @0xdf7fe8e981437816 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.deprecatedSetValue$Results @0x8aef0146a9595df9 + - zhinst/io/protocol/capnp/streaming/streaming.capnp:Subscription @0xedac21a53de1b1d4 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.subscribe$Params @0xb9b18be9afb1b3e4 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.subscribe$Results @0xa0ca6692df48c93f + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.disconnectDevice$Params @0xe682e60b2cd90782 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.listNodesJson$Params @0xcd837fe86531f6c1 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.listNodesJson$Results @0xa8151642645bfa32 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.unsubscribe$Params @0xb16a1640db91e61c + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.getSessionVersion$Params @0xd77d14cf14b3405a + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.getSessionVersion$Results @0xcc68434da57cf6b3 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.deprecatedSetValue2$Params @0xdae05cd32680aba1 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.deprecatedSetValue2$Results @0xfd47648e56c0e689 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:LookupMode @0xda5049b5e072f425 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.setValue$Params @0x9fe29a10493e27c7 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.setValue$Results @0x9474d85f26f63900 + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.getValue$Params @0xc5e872236cc4917b + - zhinst/io/protocol/capnp/session/session_protocol.capnp:Session.getValue$Results @0xce98719dbad0a401 + - zhinst/io/protocol/capnp/common/value.capnp @0xfca5cbb23425bcc7 + - zhinst/io/protocol/capnp/common/result.capnp @0xf7e8e31fdca4abd5 + - zhinst/io/protocol/capnp/common/value.capnp:AnnotatedValue.Metadata @0xad53d8ca57af3018 + - zhinst/io/protocol/capnp/common/value.capnp:Complex @0xaaf1afaf97b4b157 + - zhinst/io/protocol/capnp/common/value.capnp:VectorData @0x994c65b80df38978 + - zhinst/io/protocol/capnp/common/value.capnp:CntSample @0xe9370bd8287d6065 + - zhinst/io/protocol/capnp/common/value.capnp:TriggerSample @0xdeb72097c27d0d95 + - zhinst/io/protocol/capnp/common/error.capnp:ErrorKind @0xb7e671e24a9802bd + - zhinst/io/protocol/capnp/common/error.capnp @0xb97062d62cb99beb + - zhinst/io/protocol/capnp/session/session_protocol.capnp @0xb6c21289d5437347 + - zhinst/io/protocol/capnp/streaming/streaming.capnp:StreamingHandle @0xf51e28a7f5b41574 + - zhinst/io/protocol/capnp/streaming/streaming.capnp:StreamingHandle.sendValues$Params @0xa30bad0f967c47b6 + - capnp/stream.capnp:StreamResult @0x995f9a3377c0b16e + - capnp/stream.capnp @0x86c366a91393f3f8 + - zhinst/io/protocol/capnp/streaming/streaming.capnp @0xcc93f4056b9c74c8 +""" + +from labone.core.helper import CapnpStructReader +from labone.core.reflection.server import reflection_capnp + +_CAPNP_BINARY_SCHEMA = b"\x21\x03\x04\x22\x04\x08\x03\xeb\x06\x50\x01\x01\x00\x00\x31\x01\xef\x1d\x53\x5c\x01\x05\x06\xff\x3e\xce\x86\x0b\xb1\x1b\xb4\xe5\x00\x01\x21\x00\x02\x33\xdd\x0e\x3a\x01\x13\xed\x0e\x17\x13\xf9\x0e\x37\x00\x02\xff\xce\x9d\xfc\x8c\xff\x96\x70\xac\x00\xd1\x10\x05\x01\x03\xff\x81\x4e\x30\xb8\x7b\x7d\xf8\xbd\x00\x00\x01\x33\x19\x0f\x12\x01\x13\x29\x0f\x07\x00\x00\x53\x24\x0f\x03\x01\x00\x01\xff\x81\x4e\x30\xb8\x7b\x7d\xf8\xbd\x00\x01\x0a\x00\x02\x13\x15\x0f\x82\x13\x19\x0f\x37\x13\x49\x0f\x1f\x00\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x10\x05\x01\xff\x81\x4e\x30\xb8\x7b\x7d\xf8\xbd\x00\x00\x01\x11\x02\x01\x13\x4d\x0f\x07\x00\x00\x11\x2a\x01\x00\x01\xff\x76\xc7\x4b\x10\x68\x2e\xa5\xf9\x00\x11\x35\x03\xff\x0e\xad\x39\x6c\x91\xc2\x61\x84\x00\x00\x01\x11\x52\x01\x11\x9a\x01\x00\x00\x11\xd2\x01\x13\x9a\x01\x01\x00\x00\xff\x5c\xa5\xa4\x2d\x58\x45\xd4\xb9\x00\x11\x38\x03\xff\x47\x73\x43\xd5\x89\x12\xc2\xb6\x00\x00\x01\x13\xaa\x01\x01\x13\xf2\x01\x01\x00\x00\x13\x2a\x02\x01\x13\x2a\x06\x01\x00\x00\xfd\x08\x86\x90\x0a\x13\x21\xa6\x11\x27\x03\xff\x3e\xce\x86\x0b\xb1\x1b\xb4\xe5\x00\x00\x01\x13\x3a\x06\x01\x13\x72\x06\x01\x00\x00\x13\x82\x06\x01\x13\x92\x06\x01\x00\x00\xff\xf7\x08\xfa\x7b\xe5\x7b\xa7\x86\x00\x11\x40\x01\x00\x00\x04\x07\x00\x00\x13\xc2\x06\x01\x00\x04\xff\xcf\x85\xeb\x76\x7a\xef\x31\xcb\x00\x51\x35\x01\x01\xff\x0e\xad\x39\x6c\x91\xc2\x61\x84\x00\x05\x01\x07\x00\x00\x13\x22\x07\x01\x13\x6a\x07\x01\x00\x00\x13\x7a\x07\x01\x00\x01\xff\xd1\x3d\x88\xe1\x93\x21\xdb\xc9\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\xa2\x08\x01\x00\x01\x13\x02\x09\x01\x00\x01\xff\x99\x11\x3c\xd9\xd4\x2f\xe3\xe3\x00\x11\x40\x01\x00\x00\x04\x07\x00\x00\x13\x92\x09\x01\x00\x04\xff\x1a\x41\x05\xd9\x7f\xa6\x31\xfb\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\xfa\x09\x01\x00\x01\x13\x62\x0a\x01\x00\x01\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x51\x13\x01\x05\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x45\x06\x07\x06\x01\x06\x13\xea\x0a\x01\x13\x0a\x0b\x01\x00\x00\x13\x7a\x0b\x01\x00\x01\xff\x26\x19\x52\xba\x7d\x8f\x95\xd1\x00\x11\x13\x02\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x00\x01\x13\xaa\x11\x01\x13\xd2\x11\x01\x00\x00\x13\xe2\x11\x01\x00\x01\xff\x5f\xf4\x4a\x1f\xa4\x50\xad\x9a\x00\x51\x13\x01\x03\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x45\x04\x07\x02\x01\x04\x13\x12\x13\x01\x13\x3a\x13\x01\x00\x00\x13\x6a\x13\x01\x00\x01\xff\x35\x44\xfb\x37\x9b\xb1\xa0\x9e\x00\x51\x18\x01\x05\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x15\x06\x07\x01\x00\x00\x13\x5a\x16\x01\x00\x01\x13\x82\x16\x01\x00\x01\xff\x4d\x9a\x54\xdc\xeb\x7c\x8a\x97\x00\x51\x13\x01\x01\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x05\x02\x07\x00\x00\x13\x3a\x1a\x01\x13\x62\x1a\x01\x00\x00\x13\x72\x1a\x01\x00\x01\xff\x98\xf5\x33\x43\x36\xb3\x4a\xb5\x00\x51\x18\x01\x05\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x15\x06\x07\x01\x00\x00\x13\x1a\x1c\x01\x00\x01\x13\x42\x1c\x01\x00\x01\xbf\x80\x4d\x33\x3b\xe2\xcc\x95\x51\x13\x01\x03\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x05\x05\x07\x00\x00\x13\xf2\x1c\x01\x13\x1a\x1d\x01\x00\x00\x13\x2a\x1d\x01\x00\x01\xff\xf8\xd7\xa4\xd0\x9e\x2a\x96\xa9\x00\x51\x13\x01\x01\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x05\x01\x07\x00\x00\x13\xea\x01\x02\x13\x12\x02\x02\x00\x00\x13\x22\x02\x02\x00\x01\xff\x8f\x21\xc2\xf0\xcf\x53\x27\xe8\x00\x51\x18\x01\x05\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x15\x06\x07\x01\x00\x00\x13\x22\x03\x02\x00\x01\x13\x52\x03\x02\x00\x01\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x51\x13\x01\x03\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x45\x01\x07\x13\x00\x00\x13\x9a\x04\x02\x13\xba\x04\x02\x00\x00\x13\xca\x04\x02\x00\x01\xff\x9b\x0c\xb0\xd7\xd2\xdc\x23\xce\x00\x51\x13\x01\x02\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x45\x01\x07\x13\x00\x00\x13\xba\x0c\x02\x13\xe2\x0c\x02\x00\x00\x13\xf2\x0c\x02\x00\x01\xff\x20\x94\x0d\x7a\xac\xa5\x8a\xb1\x00\x51\x18\x01\x05\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x15\x06\x07\x01\x00\x00\x13\xfa\x15\x02\x00\x01\x13\x22\x16\x02\x00\x01\xff\x90\x02\x0a\x40\xd4\x19\x16\xec\x00\x51\x18\x01\x05\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x15\x06\x07\x01\x00\x00\x13\x22\x17\x02\x00\x01\x13\x52\x17\x02\x00\x01\xff\x42\xc2\x0f\xfa\xbb\x55\xbf\xde\x00\x51\x18\x01\x01\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x05\x01\x07\x00\x00\x13\xf2\x1d\x02\x13\x22\x1e\x02\x00\x00\x13\x32\x1e\x02\x00\x01\xff\x42\x75\x25\xab\x0d\x95\xc8\xf1\x00\x51\x13\x01\x01\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x05\x02\x07\x00\x00\x13\x32\x1f\x02\x13\x5a\x1f\x02\x00\x00\x13\x6a\x1f\x02\x00\x01\xff\xb1\xa3\x0f\xf1\xcc\x1b\x52\xb9\x00\x11\x18\x01\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x05\x01\x07\x00\x00\x13\xe2\x20\x02\x13\x12\x21\x02\x00\x00\x13\x22\x21\x02\x00\x01\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x11\x13\x01\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x05\x01\x07\x00\x00\x13\xaa\x21\x02\x13\xd2\x21\x02\x00\x00\x13\x12\x22\x02\x00\x01\xff\xd9\x72\x4c\x62\x09\xc5\x3f\xa9\x00\x01\x0d\x00\x02\x13\xba\x22\x02\x13\xda\x22\x02\x13\x42\x24\x02\x00\x02\xff\xc9\x6b\x63\xa9\x85\x34\xd7\xab\x00\x51\x19\x01\x02\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x45\x01\x07\x02\x01\x04\x13\x9a\x24\x02\x13\xc2\x24\x02\x00\x00\x13\xd2\x24\x02\x00\x01\xff\xfc\xe7\x9e\x96\x16\xcd\x63\xc8\x00\x51\x19\x01\x01\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x45\x01\x07\x02\x00\x00\x13\x6a\x26\x02\x13\x9a\x26\x02\x00\x00\x13\xaa\x26\x02\x00\x01\xff\x97\xea\x60\x0a\x25\x39\xe7\x87\x00\x51\x18\x01\x03\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x15\x01\x07\x01\x00\x00\x13\xaa\x27\x02\x00\x01\x13\xd2\x27\x02\x00\x01\xff\xa9\x87\x7f\x1a\x71\x78\x0e\x9e\x00\x51\x18\x01\x03\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x15\x01\x07\x01\x00\x00\x13\x62\x28\x02\x00\x01\x13\x8a\x28\x02\x00\x01\xff\xd3\xc6\x4c\xef\x60\x6f\x3a\xac\x00\x51\x18\x01\x03\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x15\x01\x07\x01\x00\x00\x13\x8a\x29\x02\x00\x01\x13\xb2\x29\x02\x00\x01\xff\xbf\x0c\xfb\xf7\x69\xca\x8b\xed\x00\x51\x18\x01\x03\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x15\x01\x07\x01\x00\x00\x13\xb2\x2a\x02\x00\x01\x13\xe2\x2a\x02\x00\x01\xff\x56\x36\x59\xfe\x79\x5f\x3b\x8e\x00\x51\x23\x01\x03\xff\xf1\x49\x3e\xa2\xe8\x3f\x57\xc2\x00\x55\x01\x07\x01\x04\x01\x05\x13\xe2\x2b\x02\x00\x01\x13\x22\x2c\x02\x00\x01\xff\x85\x4a\x61\xf4\x24\xf7\xd1\x9d\x00\x51\x23\x01\x03\xff\xf1\x49\x3e\xa2\xe8\x3f\x57\xc2\x00\x15\x01\x07\x01\x00\x00\x13\x1a\x2e\x02\x00\x01\x13\x52\x2e\x02\x00\x01\xff\x74\xe2\x56\x0c\x12\xc9\xef\xba\x00\x51\x23\x01\x03\xff\xf1\x49\x3e\xa2\xe8\x3f\x57\xc2\x00\x15\x01\x07\x01\x00\x00\x13\x5a\x2f\x02\x00\x01\x13\xa2\x2f\x02\x00\x01\xff\xf1\x49\x3e\xa2\xe8\x3f\x57\xc2\x00\x51\x18\x01\x03\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x55\x01\x07\x01\x03\x01\x04\x13\x32\x30\x02\x00\x01\x13\x62\x30\x02\x00\x01\xff\x6f\x74\xb4\x6b\x47\x05\x23\xc4\x00\x51\x19\x01\x03\xff\x5f\xf4\x4a\x1f\xa4\x50\xad\x9a\x00\x15\x04\x07\x01\x00\x00\x13\x52\x31\x02\x00\x01\x13\x7a\x31\x02\x00\x01\xff\x11\x1d\xdb\x68\xdb\xcd\xfc\xca\x00\x51\x19\x01\x03\xff\x5f\xf4\x4a\x1f\xa4\x50\xad\x9a\x00\x15\x04\x07\x01\x00\x00\x13\x82\x33\x02\x00\x01\x13\xaa\x33\x02\x00\x01\xff\xe6\x0b\x87\x87\xc2\xd5\x90\xbb\x00\x51\x19\x01\x03\xff\x5f\xf4\x4a\x1f\xa4\x50\xad\x9a\x00\x55\x04\x07\x01\x02\x01\x05\x13\x32\x34\x02\x00\x01\x13\x62\x34\x02\x00\x01\xff\x0e\xad\x39\x6c\x91\xc2\x61\x84\x00\x01\x2f\x00\x02\x13\x72\x35\x02\x13\xb2\x35\x02\x13\x02\x36\x02\x00\x02\xff\xa8\xf5\x5e\x25\x29\x54\x03\x92\x00\x51\x40\x01\x01\x00\x00\x05\x02\x07\x00\x00\x13\x5a\x36\x02\x00\x01\x13\xba\x36\x02\x00\x01\xff\xb0\x61\xc9\x74\xdb\x4b\xd3\xeb\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\x3a\x38\x02\x00\x01\x13\x9a\x38\x02\x00\x01\xff\xe7\xdf\x90\xb9\x1b\x2e\x24\xcd\x00\x11\x40\x01\x00\x00\x05\x02\x07\x00\x00\x13\x42\x39\x02\x00\x01\x13\xaa\x39\x02\x00\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x51\x2d\x01\x01\xff\xd5\xab\xa4\xdc\x1f\xe3\xe8\xf7\x00\x45\x01\x07\x02\x10\x01\x13\xca\x3a\x02\x13\x0a\x3b\x02\x00\x00\x13\x1a\x3b\x02\x00\x00\x13\x1a\x3c\x02\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x11\x2c\x01\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x05\x02\x07\x00\x00\x13\x4a\x3c\x02\x13\x92\x3c\x02\x00\x00\x13\xc2\x3c\x02\x00\x01\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x51\x2c\x01\x01\xff\xeb\x9b\xb9\x2c\xd6\x62\x70\xb9\x00\x05\x03\x07\x00\x00\x13\xca\x3d\x02\x13\x0a\x3e\x02\x00\x00\x13\x1a\x3e\x02\x00\x01\xff\xbb\x75\x95\x12\x8c\x51\x48\xe9\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x11\xb2\x03\x00\x01\x13\x1a\x01\x03\x00\x01\xff\xac\x75\xbe\x71\x47\x8b\x83\xb1\x00\x51\x2c\x01\x02\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x45\x01\x07\x08\x01\x04\x13\x52\x02\x03\x13\x92\x02\x03\x00\x00\x13\xa2\x02\x03\x00\x01\xff\xf9\xed\x55\xac\x3a\xa5\x2d\xdd\x00\x11\x38\x02\xff\x47\x73\x43\xd5\x89\x12\xc2\xb6\x00\x00\x01\x13\x8a\x06\x03\x13\xe2\x06\x03\x00\x00\x13\xf2\x06\x03\x00\x01\xff\x65\x80\xf3\x40\xed\xfd\xf6\xa8\x00\x51\x40\x01\x01\x00\x00\x05\x02\x07\x00\x00\x13\xa2\x07\x03\x00\x01\x13\x0a\x08\x03\x00\x01\xff\x16\x78\x43\x81\xe9\xe8\x7f\xdf\x00\x11\x2c\x01\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x04\x07\x00\x00\x13\x8a\x09\x03\x13\xca\x09\x03\x00\x03\xff\xf9\x5d\x59\xa9\x46\x01\xef\x8a\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\xda\x09\x03\x00\x01\x13\x42\x0a\x03\x00\x01\xff\xd4\xb1\xe1\x3d\xa5\x21\xac\xed\x00\x11\x33\x01\xff\xc8\x74\x9c\x6b\x05\xf4\x93\xcc\x00\x05\x03\x07\x00\x00\x13\x5a\x0b\x03\x13\xa2\x0b\x03\x00\x00\x13\xb2\x0b\x03\x00\x01\xff\xe4\xb3\xb1\xaf\xe9\x8b\xb1\xb9\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\x3a\x0d\x03\x00\x01\x13\x9a\x0d\x03\x00\x01\xff\x3f\xc9\x48\xdf\x92\x66\xca\xa0\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\x2a\x0e\x03\x00\x01\x13\x8a\x0e\x03\x00\x01\xff\x82\x07\xd9\x2c\x0b\xe6\x82\xe6\x00\x11\x40\x01\x00\x00\x04\x07\x00\x00\x13\xa2\x0f\x03\x00\x04\xff\xc1\xf6\x31\x65\xe8\x7f\x83\xcd\x00\x51\x40\x01\x01\x00\x00\x05\x02\x07\x00\x00\x13\x02\x10\x03\x00\x01\x13\x62\x10\x03\x00\x01\xff\x32\xfa\x5b\x64\x42\x16\x15\xa8\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\xe2\x11\x03\x00\x01\x13\x42\x12\x03\x00\x01\xff\x1c\xe6\x91\xdb\x40\x16\x6a\xb1\x00\x11\x40\x01\x00\x00\x05\x02\x07\x00\x00\x13\xd2\x12\x03\x00\x01\x13\x32\x13\x03\x00\x01\xff\x5a\x40\xb3\x14\xcf\x14\x7d\xd7\x00\x11\x40\x01\x00\x00\x04\x07\x00\x00\x13\x5a\x14\x03\x00\x04\xff\xb3\xf6\x7c\xa5\x4d\x43\x68\xcc\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\xc2\x14\x03\x00\x01\x13\x2a\x15\x03\x00\x01\xff\xa1\xab\x80\x26\xd3\x5c\xe0\xda\x00\x51\x40\x01\x01\x00\x00\x05\x03\x07\x00\x00\x13\xb2\x15\x03\x00\x01\x13\x1a\x16\x03\x00\x01\xff\x89\xe6\xc0\x56\x8e\x64\x47\xfd\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\x12\x18\x03\x00\x01\x13\x7a\x18\x03\x00\x01\xff\x25\xf4\x72\xe0\xb5\x49\x50\xda\x00\x11\x38\x02\xff\x47\x73\x43\xd5\x89\x12\xc2\xb6\x00\x00\x01\x13\x92\x19\x03\x13\xe2\x19\x03\x00\x00\x13\xf2\x19\x03\x00\x01\xff\xc7\x27\x3e\x49\x10\x9a\xe2\x9f\x00\x51\x40\x01\x01\x00\x00\x05\x03\x07\x00\x00\x13\x52\x1a\x03\x00\x01\x13\xaa\x1a\x03\x00\x01\xfe\x39\xf6\x26\x5f\xd8\x74\x94\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\x2a\x1d\x03\x00\x01\x13\x8a\x1d\x03\x00\x01\xff\x7b\x91\xc4\x6c\x23\x72\xe8\xc5\x00\x51\x40\x01\x01\x00\x00\x05\x02\x07\x00\x00\x13\xc2\x1e\x03\x00\x01\x13\x1a\x1f\x03\x00\x01\xff\x01\xa4\xd0\xba\x9d\x71\x98\xce\x00\x11\x40\x01\x00\x00\x05\x01\x07\x00\x00\x13\x1a\x21\x03\x00\x01\x13\x7a\x21\x03\x00\x01\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x01\x26\x00\x02\x13\xb2\x22\x03\x13\xea\x22\x03\x13\xc2\x23\x03\x00\x02\xff\xd5\xab\xa4\xdc\x1f\xe3\xe8\xf7\x00\x01\x27\x00\x02\x13\x1a\x24\x03\x13\x52\x24\x03\x13\x7a\x24\x03\x00\x02\xff\x18\x30\xaf\x57\xca\xd8\x53\xad\x00\x51\x3b\x01\x01\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x05\x01\x07\x00\x00\x13\xd2\x24\x03\x13\x22\x25\x03\x00\x00\x13\x32\x25\x03\x00\x01\xff\x57\xb1\xb4\x97\xaf\xaf\xf1\xaa\x00\x51\x2c\x01\x02\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x04\x07\x00\x00\x13\x3a\x26\x03\x13\x7a\x26\x03\x00\x00\x13\x8a\x26\x03\x00\x01\xff\x78\x89\xf3\x0d\xb8\x65\x4c\x99\x00\x51\x2c\x01\x01\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x05\x01\x07\x00\x00\x13\x8a\x27\x03\x13\xca\x27\x03\x00\x00\x13\xda\x27\x03\x00\x01\xff\x65\x60\x7d\x28\xd8\x0b\x37\xe9\x00\x51\x2c\x01\x02\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x04\x07\x00\x00\x13\xea\x29\x03\x13\x2a\x2a\x03\x00\x00\x13\x3a\x2a\x03\x00\x01\xff\x95\x0d\x7d\xc2\x97\x20\xb7\xde\x00\x51\x2c\x01\x05\xff\xc7\xbc\x25\x34\xb2\xcb\xa5\xfc\x00\x04\x07\x00\x00\x13\xba\x2b\x03\x13\x02\x2c\x03\x00\x00\x13\x12\x2c\x03\x00\x01\xff\xbd\x02\x98\x4a\xe2\x71\xe6\xb7\x00\x11\x2c\x02\xff\xeb\x9b\xb9\x2c\xd6\x62\x70\xb9\x00\x00\x01\x13\x92\x2f\x03\x13\xd2\x2f\x03\x00\x00\x13\xe2\x2f\x03\x00\x01\xff\xeb\x9b\xb9\x2c\xd6\x62\x70\xb9\x00\x01\x26\x00\x02\x13\x6a\x31\x03\x13\xa2\x31\x03\x13\xea\x31\x03\x00\x02\xff\x47\x73\x43\xd5\x89\x12\xc2\xb6\x00\x01\x32\x00\x02\x13\x42\x32\x03\x13\x82\x32\x03\x13\xf2\x32\x03\x00\x02\xff\x74\x15\xb4\xf5\xa7\x28\x1e\xf5\x00\x11\x33\x03\xff\xc8\x74\x9c\x6b\x05\xf4\x93\xcc\x00\x00\x01\x13\x82\x33\x03\x13\xd2\x33\x03\x00\x00\x13\xe2\x33\x03\x13\x4a\x34\x03\x00\x00\xff\xb6\x47\x7c\x96\x0f\xad\x0b\xa3\x00\x11\x43\x01\x00\x00\x05\x01\x07\x00\x00\x13\x5a\x34\x03\x00\x01\x13\xba\x34\x03\x00\x01\xff\x6e\xb1\xc0\x77\x33\x9a\x5f\x99\x00\x11\x13\x01\xff\xf8\xf3\x93\x13\xa9\x66\xc3\x86\x00\x04\x07\x00\x00\x13\x62\x35\x03\x13\x8a\x35\x03\x00\x03\xff\xf8\xf3\x93\x13\xa9\x66\xc3\x86\x00\x01\x0d\x00\x02\x13\x9a\x35\x03\x13\xba\x35\x03\x13\xea\x35\x03\x00\x02\xff\xc8\x74\x9c\x6b\x05\xf4\x93\xcc\x00\x01\x2d\x00\x02\x13\x3a\x36\x03\x13\x7a\x36\x03\x13\xca\x36\x03\x00\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x03\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x68\x70\x6b\x2f\x68\x70\x6b\x3f\x2e\x63\x61\x70\x6e\x70\x51\x04\x01\x01\xfd\x08\x86\x90\x0a\x13\x21\xa6\x11\x01\x22\x07\x48\x70\x6b\x51\x08\x01\x02\xff\xce\x9d\xfc\x8c\xff\x96\x70\xac\x00\x51\x10\x02\x01\x41\x18\x01\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x14\x02\x01\x41\x24\x01\x00\x03\x01\x0c\x00\x00\x11\x01\x6a\xff\x7a\x68\x69\x6e\x73\x74\x5f\x63\x00\x0f\x61\x70\x6e\x70\x00\x00\xff\x63\x61\x70\x6e\x70\x2f\x63\x2b\x03\x2b\x2e\x63\x61\x70\x6e\x70\x3a\x61\x6c\x6c\x6f\x77\x43\x61\x6e\x63\x65\x6c\x6c\x61\x74\x69\x6f\x01\x6e\x50\x01\x01\x00\x03\xff\x63\x61\x70\x6e\x70\x2f\x63\x2b\x01\x2b\x2e\x63\x61\x70\x6e\x70\x00\x51\x0c\x01\x01\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x11\x11\x52\xff\xce\x91\xf1\xfe\x79\xa7\x64\xf2\x00\x11\x11\x2a\xff\xce\x9d\xfc\x8c\xff\x96\x70\xac\x00\x11\x0d\x92\xff\x6e\x61\x6d\x65\x73\x70\x61\x63\x00\x01\x65\x0f\x6e\x61\x6d\x65\xff\x61\x6c\x6c\x6f\x77\x43\x61\x6e\x01\x63\x65\x6c\x6c\x61\x74\x69\x6f\x01\x6e\x51\x04\x01\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x04\x02\x01\x41\x18\x01\x01\x0c\x00\x00\x11\x01\x9a\xff\x63\x61\x70\x6e\x70\x3a\x3a\x61\x01\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x03\x6e\x73\x00\x00\x50\x01\x01\x11\x01\xd2\xff\x63\x61\x70\x6e\x70\x2f\x63\x2b\x02\x2b\x2e\x63\x61\x70\x6e\x70\x3a\x6e\x61\x6d\x65\x73\x70\x61\x63\x01\x65\x50\x03\x01\x01\x0c\x00\x02\x31\x01\x02\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x07\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x63\x61\x70\x6e\x70\x3a\x52\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x00\x11\x01\x17\x51\x04\x01\x01\xff\x5a\xfd\x0f\x06\x75\xe5\xcb\x8c\x00\x11\x01\x92\xff\x63\x61\x70\x61\x62\x69\x6c\x69\x01\x74\x79\x56\x65\x72\x73\x69\x6f\x01\x6e\x11\x01\x87\x51\x08\x03\x05\x01\x01\xff\xf7\x08\xfa\x7b\xe5\x7b\xa7\x86\x01\xd1\x3d\x88\xe1\x93\x21\xdb\xc9\x11\x31\x6a\x00\x02\x11\x29\x07\x00\x00\xff\x99\x11\x3c\xd9\xd4\x2f\xe3\xe3\x01\x1a\x41\x05\xd9\x7f\xa6\x31\xfb\x11\x1d\xaa\x00\x02\x11\x19\x07\xff\x67\x65\x74\x54\x68\x65\x53\x63\x00\x0f\x68\x65\x6d\x61\x40\x01\xff\x67\x65\x74\x52\x65\x66\x6c\x65\x01\x63\x74\x69\x6f\x6e\x56\x65\x72\x0f\x73\x69\x6f\x6e\x40\x01\x11\x01\x07\x50\x01\x01\x31\x01\x02\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x07\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x00\x11\x01\x17\x51\x04\x01\x01\xff\xd0\x02\x2f\x96\x1c\xae\x50\xb7\x00\x11\x01\x92\xff\x63\x61\x70\x61\x62\x69\x6c\x69\x01\x74\x79\x56\x65\x72\x73\x69\x6f\x01\x6e\x31\x01\xc7\x02\x51\x2c\x03\x05\x01\x01\xff\xa8\xf5\x5e\x25\x29\x54\x03\x92\x01\xb0\x61\xc9\x74\xdb\x4b\xd3\xeb\x13\x51\x01\x52\x00\x02\x13\x49\x01\x07\x01\x0a\xff\xe7\xdf\x90\xb9\x1b\x2e\x24\xcd\x01\xbb\x75\x95\x12\x8c\x51\x48\xe9\x13\x3d\x01\xa2\x00\x02\x13\x39\x01\x07\x01\x08\xff\x65\x80\xf3\x40\xed\xfd\xf6\xa8\x01\xf9\x5d\x59\xa9\x46\x01\xef\x8a\x13\x2d\x01\x9a\x00\x02\x13\x29\x01\x07\x01\x04\xff\xe4\xb3\xb1\xaf\xe9\x8b\xb1\xb9\x01\x3f\xc9\x48\xdf\x92\x66\xca\xa0\x13\x1d\x01\x52\x00\x02\x13\x15\x01\x07\x01\x06\xff\x82\x07\xd9\x2c\x0b\xe6\x82\xe6\x01\x16\x78\x43\x81\xe9\xe8\x7f\xdf\x13\x09\x01\x8a\x00\x02\x13\x05\x01\x07\x01\x07\xff\xc1\xf6\x31\x65\xe8\x7f\x83\xcd\x01\x32\xfa\x5b\x64\x42\x16\x15\xa8\x11\xf9\x72\x00\x02\x11\xf1\x07\x01\x05\xff\x1c\xe6\x91\xdb\x40\x16\x6a\xb1\x01\x16\x78\x43\x81\xe9\xe8\x7f\xdf\x11\xe5\x62\x00\x02\x11\xdd\x07\x00\x00\xff\x5a\x40\xb3\x14\xcf\x14\x7d\xd7\x01\xb3\xf6\x7c\xa5\x4d\x43\x68\xcc\x11\xd1\x92\x00\x02\x11\xcd\x07\x01\x09\xff\xa1\xab\x80\x26\xd3\x5c\xe0\xda\x01\x89\xe6\xc0\x56\x8e\x64\x47\xfd\x11\xc1\xa2\x00\x02\x11\xbd\x07\x01\x03\xff\xc7\x27\x3e\x49\x10\x9a\xe2\x9f\x01\x00\x39\xf6\x26\x5f\xd8\x74\x94\x11\xb1\x4a\x00\x02\x11\xa9\x07\x01\x02\xff\x7b\x91\xc4\x6c\x23\x72\xe8\xc5\x01\x01\xa4\xd0\xba\x9d\x71\x98\xce\x11\x9d\x4a\x00\x02\x11\x95\x07\xff\x6c\x69\x73\x74\x4e\x6f\x64\x65\x00\x01\x73\x40\x01\xff\x64\x65\x70\x72\x65\x63\x61\x74\x01\x65\x64\x47\x65\x74\x56\x61\x6c\x07\x75\x65\x73\x40\x01\xff\x64\x65\x70\x72\x65\x63\x61\x74\x01\x65\x64\x53\x65\x74\x56\x61\x6c\x03\x75\x65\x40\x01\xff\x73\x75\x62\x73\x63\x72\x69\x62\x00\x01\x65\x40\x01\xff\x64\x69\x73\x63\x6f\x6e\x6e\x65\x01\x63\x74\x44\x65\x76\x69\x63\x65\x00\x00\x40\x01\xff\x6c\x69\x73\x74\x4e\x6f\x64\x65\x00\x1f\x73\x4a\x73\x6f\x6e\x40\x01\xff\x75\x6e\x73\x75\x62\x73\x63\x72\x00\x07\x69\x62\x65\x40\x01\xff\x67\x65\x74\x53\x65\x73\x73\x69\x01\x6f\x6e\x56\x65\x72\x73\x69\x6f\x01\x6e\x40\x01\xff\x64\x65\x70\x72\x65\x63\x61\x74\x01\x65\x64\x53\x65\x74\x56\x61\x6c\x07\x75\x65\x32\x40\x01\xff\x73\x65\x74\x56\x61\x6c\x75\x65\x00\x00\x00\x40\x01\xff\x67\x65\x74\x56\x61\x6c\x75\x65\x00\x00\x00\x40\x01\x11\x01\x07\x50\x01\x01\x31\x01\x5a\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x04\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x68\x70\x6b\x2f\x68\x70\x6b\x2e\x63\x61\x70\x6e\x70\x3a\x48\x03\x70\x6b\x11\x01\x07\x50\x01\x01\x11\x01\x07\x50\x03\x05\x11\x01\x27\x51\x08\x01\x01\xff\x76\xc7\x4b\x10\x68\x2e\xa5\xf9\x00\x00\x00\xff\x5c\xa5\xa4\x2d\x58\x45\xd4\xb9\x00\x00\x00\x31\x01\xa2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x63\x61\x70\x6e\x70\x3a\x52\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x67\x65\x74\x54\x68\x65\x53\x63\x68\x65\x6d\x61\x24\x50\x61\x72\x07\x61\x6d\x73\x31\x01\xfa\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x06\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x63\x61\x70\x6e\x70\x3a\x43\x61\x70\x3f\x53\x63\x68\x65\x6d\x61\x11\x01\x07\x50\x01\x01\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x3a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x2d\x52\x00\x00\x51\x2c\x03\x01\x51\x48\x02\x01\x3f\x74\x79\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\xff\x74\x68\x65\x53\x63\x68\x65\x6d\x00\x01\x61\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x00\x01\x01\x0e\x00\x01\x31\x01\xaa\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x63\x61\x70\x6e\x70\x3a\x52\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x67\x65\x74\x54\x68\x65\x53\x63\x68\x65\x6d\x61\x24\x52\x65\x73\x0f\x75\x6c\x74\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x52\x00\x00\x51\x0c\x03\x01\x51\x18\x02\x01\xff\x74\x68\x65\x53\x63\x68\x65\x6d\x00\x01\x61\x01\x10\xff\xcf\x85\xeb\x76\x7a\xef\x31\xcb\x00\x00\x01\x01\x10\x00\x01\x31\x01\xe2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x63\x61\x70\x6e\x70\x3a\x52\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x67\x65\x74\x52\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e\x24\x50\x61\x72\x07\x61\x6d\x73\x31\x01\xea\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x63\x61\x70\x6e\x70\x3a\x52\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x67\x65\x74\x52\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e\x24\x52\x65\x73\x0f\x75\x6c\x74\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x42\x00\x00\x51\x08\x03\x01\x51\x14\x02\x01\x7f\x76\x65\x72\x73\x69\x6f\x6e\x01\x0c\x00\x02\x01\x0c\x00\x01\x11\x01\xc2\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x00\x11\x01\x37\x51\x0c\x01\x01\xff\xb1\xa3\x0f\xf1\xcc\x1b\x52\xb9\x00\x11\x11\x52\xff\x42\xc2\x0f\xfa\xbb\x55\xbf\xde\x00\x11\x11\x5a\xff\xae\x57\x13\x04\xe3\x1d\x8e\xf3\x00\x11\x11\x5a\xff\x50\x61\x72\x61\x6d\x65\x74\x65\x00\x01\x72\xff\x4e\x65\x73\x74\x65\x64\x4e\x6f\x00\x03\x64\x65\xff\x53\x6f\x75\x72\x63\x65\x49\x6e\x00\x03\x66\x6f\x31\x01\x17\x03\x51\x38\x03\x04\x00\x00\x04\x01\x00\x00\x13\x79\x01\x1a\x00\x00\x53\x74\x01\x03\x01\x53\x80\x01\x02\x01\x01\x01\x14\x01\x01\x00\x00\x13\x7d\x01\x62\x00\x00\x53\x7c\x01\x03\x01\x53\x88\x01\x02\x01\x11\x02\x02\x14\x01\x02\x00\x00\x13\x85\x01\xc2\x00\x00\x53\x88\x01\x03\x01\x53\x94\x01\x02\x01\x11\x03\x02\x14\x01\x03\x00\x00\x13\x91\x01\x42\x00\x00\x53\x8c\x01\x03\x01\x53\x98\x01\x02\x01\x11\x06\x01\x14\x01\x04\x00\x00\x13\x95\x01\x62\x00\x00\x53\x94\x01\x03\x01\x53\xb0\x01\x02\x01\x11\x07\x02\x14\x01\x05\x00\x00\x13\xad\x01\x62\x00\x00\x53\xac\x01\x03\x01\x53\xc8\x01\x02\x01\x0d\x08\xff\xff\x14\x01\x06\x00\x00\x13\xc5\x01\x2a\x00\x00\x53\xc0\x01\x03\x01\x53\xcc\x01\x02\x01\x0d\x09\xfe\xff\x01\x01\xff\x35\x44\xfb\x37\x9b\xb1\xa0\x9e\x00\x13\xc9\x01\x3a\x00\x02\x0d\x0a\xfd\xff\x01\x01\xff\x98\xf5\x33\x43\x36\xb3\x4a\xb5\x00\x13\xb1\x01\x2a\x00\x02\x0d\x0b\xfc\xff\x01\x01\xff\x8f\x21\xc2\xf0\xcf\x53\x27\xe8\x00\x13\x99\x01\x52\x00\x02\x0d\x0c\xfb\xff\x01\x01\xff\x20\x94\x0d\x7a\xac\xa5\x8a\xb1\x00\x13\x85\x01\x32\x00\x02\x0d\x0d\xfa\xff\x01\x01\xff\x90\x02\x0a\x40\xd4\x19\x16\xec\x00\x13\x6d\x01\x5a\x00\x02\x11\x04\x05\x14\x01\x20\x00\x00\x13\x59\x01\x5a\x00\x00\x53\x58\x01\x03\x01\x53\x74\x01\x02\x01\x31\x05\x20\x01\x14\x01\x21\x00\x00\x13\x71\x01\x52\x00\x00\x53\x70\x01\x03\x01\x53\x7c\x01\x02\x01\x03\x69\x64\x01\x09\x00\x02\x01\x09\x00\x01\xff\x64\x69\x73\x70\x6c\x61\x79\x4e\x00\x07\x61\x6d\x65\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x64\x69\x73\x70\x6c\x61\x79\x4e\x02\x61\x6d\x65\x50\x72\x65\x66\x69\x78\x4c\x65\x6e\x67\x74\x68\x00\x01\x08\x00\x02\x01\x08\x00\x01\x7f\x73\x63\x6f\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\xff\x6e\x65\x73\x74\x65\x64\x4e\x6f\x00\x07\x64\x65\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x42\xc2\x0f\xfa\xbb\x55\xbf\xde\x00\x00\x01\x01\x0e\x00\x01\xff\x61\x6e\x6e\x6f\x74\x61\x74\x69\x00\x07\x6f\x6e\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x42\x75\x25\xab\x0d\x95\xc8\xf1\x00\x00\x01\x01\x0e\x00\x01\x0f\x66\x69\x6c\x65\x00\x06\x3f\x73\x74\x72\x75\x63\x74\x0f\x65\x6e\x75\x6d\xff\x69\x6e\x74\x65\x72\x66\x61\x63\x00\x01\x65\x1f\x63\x6f\x6e\x73\x74\xff\x61\x6e\x6e\x6f\x74\x61\x74\x69\x00\x03\x6f\x6e\xff\x70\x61\x72\x61\x6d\x65\x74\x65\x00\x03\x72\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\xb1\xa3\x0f\xf1\xcc\x1b\x52\xb9\x00\x00\x01\x01\x0e\x00\x01\xff\x69\x73\x47\x65\x6e\x65\x72\x69\x00\x01\x63\x01\x01\x00\x02\x01\x01\x00\x01\x11\x01\xfa\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x45\x6c\x65\x6d\x65\x3f\x6e\x74\x53\x69\x7a\x65\x11\x01\x07\x50\x01\x01\x11\x01\xc7\x51\x20\x01\x02\x00\x00\x11\x59\x32\x00\x00\x01\x01\x11\x51\x22\x00\x00\x01\x02\x11\x49\x2a\x00\x00\x01\x03\x11\x41\x4a\x00\x00\x01\x04\x11\x3d\x52\x00\x00\x01\x05\x11\x39\x5a\x00\x00\x01\x06\x11\x35\x42\x00\x00\x01\x07\x11\x2d\x82\x00\x00\x1f\x65\x6d\x70\x74\x79\x07\x62\x69\x74\x0f\x62\x79\x74\x65\xff\x74\x77\x6f\x42\x79\x74\x65\x73\x00\x00\x00\xff\x66\x6f\x75\x72\x42\x79\x74\x65\x00\x01\x73\xff\x65\x69\x67\x68\x74\x42\x79\x74\x00\x03\x65\x73\x7f\x70\x6f\x69\x6e\x74\x65\x72\xff\x69\x6e\x6c\x69\x6e\x65\x43\x6f\x01\x6d\x70\x6f\x73\x69\x74\x65\x00\x11\x01\xca\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x46\x69\x65\x6c\x64\x00\x00\x11\x01\x17\x51\x04\x01\x01\xff\x12\xc7\xfe\x7c\xbe\x4c\xb1\x97\x00\x11\x01\x7a\xff\x6e\x6f\x44\x69\x73\x63\x72\x69\x00\x3f\x6d\x69\x6e\x61\x6e\x74\x31\x01\x8f\x01\x51\x1c\x03\x04\x00\x00\x04\x01\x00\x00\x11\xb5\x2a\x00\x00\x51\xb0\x03\x01\x51\xbc\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\xb9\x52\x00\x00\x51\xb8\x03\x01\x51\xc4\x02\x01\x11\x02\x01\x14\x01\x02\x00\x00\x11\xc1\x62\x00\x00\x51\xc0\x03\x01\x51\xdc\x02\x01\x11\x03\x01\x14\x01\x03\x01\x01\x11\xd9\x92\x00\x00\x51\xdc\x03\x01\x51\xe8\x02\x01\x0d\x04\xff\xff\x01\x01\xff\x6f\x74\xb4\x6b\x47\x05\x23\xc4\x00\x11\xe5\x2a\x00\x02\x0d\x05\xfe\xff\x01\x01\xff\x11\x1d\xdb\x68\xdb\xcd\xfc\xca\x00\x11\xcd\x32\x00\x02\x01\x06\x01\x01\xff\xe6\x0b\x87\x87\xc2\xd5\x90\xbb\x00\x11\xb5\x42\x00\x02\x0f\x6e\x61\x6d\x65\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x63\x6f\x64\x65\x4f\x72\x64\x65\x00\x01\x72\x01\x07\x00\x02\x01\x07\x00\x01\xff\x61\x6e\x6e\x6f\x74\x61\x74\x69\x00\x07\x6f\x6e\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x42\x75\x25\xab\x0d\x95\xc8\xf1\x00\x00\x01\x01\x0e\x00\x01\xff\x64\x69\x73\x63\x72\x69\x6d\x69\x01\x6e\x61\x6e\x74\x56\x61\x6c\x75\x01\x65\x01\x07\x00\x02\x0d\x07\xff\xff\x00\x01\x0f\x73\x6c\x6f\x74\x1f\x67\x72\x6f\x75\x70\x7f\x6f\x72\x64\x69\x6e\x61\x6c\x11\x01\xfa\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x2e\x3f\x73\x74\x72\x75\x63\x74\x31\x01\x8f\x01\x51\x1c\x03\x04\x10\x07\x14\x01\x07\x00\x00\x11\xb5\x72\x00\x00\x51\xb4\x03\x01\x51\xc0\x02\x01\x11\x01\x0c\x14\x01\x08\x00\x00\x11\xbd\x6a\x00\x00\x51\xbc\x03\x01\x51\xc8\x02\x01\x11\x02\x0d\x14\x01\x09\x00\x00\x11\xc5\xb2\x00\x00\x51\xc8\x03\x01\x51\xd4\x02\x01\x11\x03\xe0\x14\x01\x0a\x00\x00\x11\xd1\x42\x00\x00\x51\xcc\x03\x01\x51\xd8\x02\x01\x11\x04\x0f\x14\x01\x0b\x00\x00\x11\xd5\x92\x00\x00\x51\xd8\x03\x01\x51\xe4\x02\x01\x11\x05\x08\x14\x01\x0c\x00\x00\x11\xe1\x9a\x00\x00\x51\xe4\x03\x01\x51\xf0\x02\x01\x11\x06\x03\x14\x01\x0d\x00\x00\x11\xed\x3a\x00\x00\x51\xe8\x03\x01\x53\x04\x01\x02\x01\xff\x64\x61\x74\x61\x57\x6f\x72\x64\x00\x1f\x43\x6f\x75\x6e\x74\x01\x07\x00\x02\x01\x07\x00\x01\xff\x70\x6f\x69\x6e\x74\x65\x72\x43\x00\x0f\x6f\x75\x6e\x74\x01\x07\x00\x02\x01\x07\x00\x01\xff\x70\x72\x65\x66\x65\x72\x72\x65\x01\x64\x4c\x69\x73\x74\x45\x6e\x63\x1f\x6f\x64\x69\x6e\x67\x01\x0f\xff\x26\x19\x52\xba\x7d\x8f\x95\xd1\x00\x00\x01\x01\x0f\x00\x01\x7f\x69\x73\x47\x72\x6f\x75\x70\x01\x01\x00\x02\x01\x01\x00\x01\xff\x64\x69\x73\x63\x72\x69\x6d\x69\x01\x6e\x61\x6e\x74\x43\x6f\x75\x6e\x01\x74\x01\x07\x00\x02\x01\x07\x00\x01\xff\x64\x69\x73\x63\x72\x69\x6d\x69\x01\x6e\x61\x6e\x74\x4f\x66\x66\x73\x03\x65\x74\x01\x08\x00\x02\x01\x08\x00\x01\x3f\x66\x69\x65\x6c\x64\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x5f\xf4\x4a\x1f\xa4\x50\xad\x9a\x00\x00\x01\x01\x0e\x00\x01\x11\x01\xea\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x45\x6e\x75\x6d\x65\x0f\x72\x61\x6e\x74\x11\x01\x07\x50\x01\x01\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x2a\x00\x00\x51\x40\x03\x01\x51\x4c\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x49\x52\x00\x00\x51\x48\x03\x01\x51\x54\x02\x01\x11\x02\x01\x14\x01\x02\x00\x00\x11\x51\x62\x00\x00\x51\x50\x03\x01\x51\x6c\x02\x01\x0f\x6e\x61\x6d\x65\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x63\x6f\x64\x65\x4f\x72\x64\x65\x00\x01\x72\x01\x07\x00\x02\x01\x07\x00\x01\xff\x61\x6e\x6e\x6f\x74\x61\x74\x69\x00\x07\x6f\x6e\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x42\x75\x25\xab\x0d\x95\xc8\xf1\x00\x00\x01\x01\x0e\x00\x01\x11\x01\xea\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x2e\x0f\x65\x6e\x75\x6d\x11\x01\x3f\x51\x04\x03\x04\x10\x03\x14\x01\x0e\x00\x00\x11\x0d\x5a\x00\x00\x51\x0c\x03\x01\x51\x28\x02\x01\xff\x65\x6e\x75\x6d\x65\x72\x61\x6e\x00\x03\x74\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x4d\x9a\x54\xdc\xeb\x7c\x8a\x97\x00\x00\x01\x01\x0e\x00\x01\x11\x01\xd2\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4d\x65\x74\x68\x6f\x01\x64\x11\x01\x07\x50\x01\x01\x31\x01\xc7\x01\x51\x20\x03\x04\x00\x00\x04\x01\x00\x00\x11\xd1\x2a\x00\x00\x51\xcc\x03\x01\x51\xd8\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\xd5\x52\x00\x00\x51\xd4\x03\x01\x51\xe0\x02\x01\x11\x03\x01\x14\x01\x02\x00\x00\x11\xdd\x82\x00\x00\x51\xdc\x03\x01\x51\xe8\x02\x01\x11\x05\x02\x14\x01\x03\x00\x00\x11\xe5\x8a\x00\x00\x51\xe8\x03\x01\x11\x02\x02\x11\x07\x01\x14\x01\x04\x00\x00\x11\x22\x02\x00\x00\x11\x3a\x02\x11\x82\x02\x11\x04\x02\x14\x01\x05\x00\x00\x11\xa2\x02\x00\x00\x11\xba\x02\x11\xe2\x02\x11\x06\x03\x14\x01\x06\x00\x00\x13\x02\x01\x02\x00\x00\x13\x1a\x01\x02\x13\x42\x01\x02\x11\x02\x04\x14\x01\x07\x00\x00\x13\x62\x01\x02\x00\x00\x13\x82\x01\x02\x13\xca\x01\x02\x0f\x6e\x61\x6d\x65\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x63\x6f\x64\x65\x4f\x72\x64\x65\x00\x01\x72\x01\x07\x00\x02\x01\x07\x00\x01\xff\x70\x61\x72\x61\x6d\x53\x74\x72\x01\x75\x63\x74\x54\x79\x70\x65\x00\x01\x09\x00\x02\x01\x09\x00\x01\xff\x72\x65\x73\x75\x6c\x74\x53\x74\x01\x72\x75\x63\x74\x54\x79\x70\x65\x00\x00\x01\x09\x00\x02\x50\x02\x01\x01\x09\x00\x01\x11\x01\x62\xff\x61\x6e\x6e\x6f\x74\x61\x74\x69\x00\x07\x6f\x6e\x73\x50\x03\x01\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x42\x75\x25\xab\x0d\x95\xc8\xf1\x00\x00\x01\x50\x02\x01\x01\x0e\x00\x01\x11\x01\x5a\xff\x70\x61\x72\x61\x6d\x42\x72\x61\x00\x03\x6e\x64\x50\x03\x01\x01\x10\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x00\x01\x50\x02\x01\x01\x10\x00\x01\x11\x01\x62\xff\x72\x65\x73\x75\x6c\x74\x42\x72\x00\x07\x61\x6e\x64\x50\x03\x01\x01\x10\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x00\x01\x50\x02\x01\x01\x10\x00\x01\x11\x01\x9a\xff\x69\x6d\x70\x6c\x69\x63\x69\x74\x01\x50\x61\x72\x61\x6d\x65\x74\x65\x03\x72\x73\x50\x03\x01\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\xb1\xa3\x0f\xf1\xcc\x1b\x52\xb9\x00\x00\x01\x50\x02\x01\x01\x0e\x00\x01\x11\x01\xf2\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x53\x75\x70\x65\x72\x1f\x63\x6c\x61\x73\x73\x11\x01\x07\x50\x01\x01\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x1a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x2d\x32\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x03\x69\x64\x01\x09\x00\x02\x01\x09\x00\x01\x1f\x62\x72\x61\x6e\x64\x01\x10\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x00\x01\x01\x10\x00\x01\x31\x01\x12\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x2e\x69\x6e\x74\x65\x72\x66\x61\x63\x01\x65\x11\x01\x77\x51\x08\x03\x04\x10\x03\x14\x01\x0f\x00\x00\x11\x29\x42\x00\x00\x51\x24\x03\x01\x51\x40\x02\x01\x11\x01\x04\x14\x01\x1f\x00\x00\x11\x3d\x6a\x00\x00\x51\x3c\x03\x01\x51\x58\x02\x01\x7f\x6d\x65\x74\x68\x6f\x64\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xbf\x80\x4d\x33\x3b\xe2\xcc\x95\x00\x01\x01\x0e\x00\x01\xff\x73\x75\x70\x65\x72\x63\x6c\x61\x00\x0f\x73\x73\x65\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\xf8\xd7\xa4\xd0\x9e\x2a\x96\xa9\x00\x00\x01\x01\x0e\x00\x01\x11\x01\xc2\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x00\x11\x01\x07\x50\x01\x01\x31\x01\x2f\x04\x51\x4c\x03\x04\x0c\xff\xff\x04\x01\x00\x00\x13\x05\x02\x2a\x00\x00\x52\x02\x03\x01\x53\x0c\x02\x02\x01\x0d\x01\xfe\xff\x14\x01\x01\x00\x00\x13\x09\x02\x2a\x00\x00\x53\x04\x02\x03\x01\x53\x10\x02\x02\x01\x0d\x02\xfd\xff\x14\x01\x02\x00\x00\x13\x0d\x02\x2a\x00\x00\x53\x08\x02\x03\x01\x53\x14\x02\x02\x01\x0d\x03\xfc\xff\x14\x01\x03\x00\x00\x13\x11\x02\x32\x00\x00\x53\x0c\x02\x03\x01\x53\x18\x02\x02\x01\x0d\x04\xfb\xff\x14\x01\x04\x00\x00\x13\x15\x02\x32\x00\x00\x53\x10\x02\x03\x01\x53\x1c\x02\x02\x01\x0d\x05\xfa\xff\x14\x01\x05\x00\x00\x13\x19\x02\x32\x00\x00\x53\x14\x02\x03\x01\x53\x20\x02\x02\x01\x0d\x06\xf9\xff\x14\x01\x06\x00\x00\x13\x1d\x02\x32\x00\x00\x53\x18\x02\x03\x01\x53\x24\x02\x02\x01\x0d\x07\xf8\xff\x14\x01\x07\x00\x00\x13\x21\x02\x3a\x00\x00\x53\x1c\x02\x03\x01\x53\x28\x02\x02\x01\x0d\x08\xf7\xff\x14\x01\x08\x00\x00\x13\x25\x02\x3a\x00\x00\x53\x20\x02\x03\x01\x53\x2c\x02\x02\x01\x0d\x09\xf6\xff\x14\x01\x09\x00\x00\x13\x29\x02\x3a\x00\x00\x53\x24\x02\x03\x01\x53\x30\x02\x02\x01\x0d\x0a\xf5\xff\x14\x01\x0a\x00\x00\x13\x2d\x02\x42\x00\x00\x53\x28\x02\x03\x01\x53\x34\x02\x02\x01\x0d\x0b\xf4\xff\x14\x01\x0b\x00\x00\x13\x31\x02\x42\x00\x00\x53\x2c\x02\x03\x01\x53\x38\x02\x02\x01\x0d\x0c\xf3\xff\x14\x01\x0c\x00\x00\x13\x35\x02\x2a\x00\x00\x53\x30\x02\x03\x01\x53\x3c\x02\x02\x01\x0d\x0d\xf2\xff\x14\x01\x0d\x00\x00\x13\x39\x02\x2a\x00\x00\x53\x34\x02\x03\x01\x53\x40\x02\x02\x01\x0d\x0e\xf1\xff\x01\x01\xff\x97\xea\x60\x0a\x25\x39\xe7\x87\x00\x13\x3d\x02\x2a\x00\x02\x0d\x0f\xf0\xff\x01\x01\xff\xa9\x87\x7f\x1a\x71\x78\x0e\x9e\x00\x13\x25\x02\x2a\x00\x02\x0d\x10\xef\xff\x01\x01\xff\xd3\xc6\x4c\xef\x60\x6f\x3a\xac\x00\x13\x0d\x02\x3a\x00\x02\x0d\x11\xee\xff\x01\x01\xff\xbf\x0c\xfb\xf7\x69\xca\x8b\xed\x00\x13\xf5\x01\x52\x00\x02\x0d\x12\xed\xff\x01\x01\xff\xf1\x49\x3e\xa2\xe8\x3f\x57\xc2\x00\x13\xe1\x01\x5a\x00\x02\x0f\x76\x6f\x69\x64\x00\x06\x0f\x62\x6f\x6f\x6c\x00\x06\x0f\x69\x6e\x74\x38\x00\x06\x1f\x69\x6e\x74\x31\x36\x00\x06\x1f\x69\x6e\x74\x33\x32\x00\x06\x1f\x69\x6e\x74\x36\x34\x00\x06\x1f\x75\x69\x6e\x74\x38\x00\x06\x3f\x75\x69\x6e\x74\x31\x36\x00\x06\x3f\x75\x69\x6e\x74\x33\x32\x00\x06\x3f\x75\x69\x6e\x74\x36\x34\x00\x06\x7f\x66\x6c\x6f\x61\x74\x33\x32\x00\x06\x7f\x66\x6c\x6f\x61\x74\x36\x34\x00\x06\x0f\x74\x65\x78\x74\x00\x06\x0f\x64\x61\x74\x61\x00\x06\x0f\x6c\x69\x73\x74\x0f\x65\x6e\x75\x6d\x3f\x73\x74\x72\x75\x63\x74\xff\x69\x6e\x74\x65\x72\x66\x61\x63\x00\x01\x65\xff\x61\x6e\x79\x50\x6f\x69\x6e\x74\x00\x03\x65\x72\x11\x01\xca\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x56\x61\x6c\x75\x65\x00\x00\x11\x01\x07\x50\x01\x01\x31\x01\x2f\x04\x51\x4c\x03\x04\x0c\xff\xff\x04\x01\x00\x00\x13\x05\x02\x2a\x00\x00\x52\x02\x03\x01\x53\x0c\x02\x02\x01\x1d\x01\xfe\xff\x10\x14\x01\x01\x00\x00\x13\x09\x02\x2a\x00\x00\x53\x04\x02\x03\x01\x53\x10\x02\x02\x01\x1d\x02\xfd\xff\x02\x14\x01\x02\x00\x00\x13\x0d\x02\x2a\x00\x00\x53\x08\x02\x03\x01\x53\x14\x02\x02\x01\x1d\x03\xfc\xff\x01\x14\x01\x03\x00\x00\x13\x11\x02\x32\x00\x00\x53\x0c\x02\x03\x01\x53\x18\x02\x02\x01\x1d\x04\xfb\xff\x01\x14\x01\x04\x00\x00\x13\x15\x02\x32\x00\x00\x53\x10\x02\x03\x01\x53\x1c\x02\x02\x01\x1d\x05\xfa\xff\x01\x14\x01\x05\x00\x00\x13\x19\x02\x32\x00\x00\x53\x14\x02\x03\x01\x53\x20\x02\x02\x01\x1d\x06\xf9\xff\x02\x14\x01\x06\x00\x00\x13\x1d\x02\x32\x00\x00\x53\x18\x02\x03\x01\x53\x24\x02\x02\x01\x1d\x07\xf8\xff\x01\x14\x01\x07\x00\x00\x13\x21\x02\x3a\x00\x00\x53\x1c\x02\x03\x01\x53\x28\x02\x02\x01\x1d\x08\xf7\xff\x01\x14\x01\x08\x00\x00\x13\x25\x02\x3a\x00\x00\x53\x20\x02\x03\x01\x53\x2c\x02\x02\x01\x1d\x09\xf6\xff\x01\x14\x01\x09\x00\x00\x13\x29\x02\x3a\x00\x00\x53\x24\x02\x03\x01\x53\x30\x02\x02\x01\x1d\x0a\xf5\xff\x01\x14\x01\x0a\x00\x00\x13\x2d\x02\x42\x00\x00\x53\x28\x02\x03\x01\x53\x34\x02\x02\x01\x1d\x0b\xf4\xff\x01\x14\x01\x0b\x00\x00\x13\x31\x02\x42\x00\x00\x53\x2c\x02\x03\x01\x53\x38\x02\x02\x01\x0d\x0c\xf3\xff\x14\x01\x0c\x00\x00\x13\x35\x02\x2a\x00\x00\x53\x30\x02\x03\x01\x53\x3c\x02\x02\x01\x0d\x0d\xf2\xff\x14\x01\x0d\x00\x00\x13\x39\x02\x2a\x00\x00\x53\x34\x02\x03\x01\x53\x40\x02\x02\x01\x0d\x0e\xf1\xff\x14\x01\x0e\x00\x00\x13\x3d\x02\x2a\x00\x00\x53\x38\x02\x03\x01\x53\x44\x02\x02\x01\x1d\x0f\xf0\xff\x01\x14\x01\x0f\x00\x00\x13\x41\x02\x2a\x00\x00\x53\x3c\x02\x03\x01\x53\x48\x02\x02\x01\x0d\x10\xef\xff\x14\x01\x10\x00\x00\x13\x45\x02\x3a\x00\x00\x53\x40\x02\x03\x01\x53\x4c\x02\x02\x01\x0d\x11\xee\xff\x14\x01\x11\x00\x00\x13\x49\x02\x52\x00\x00\x53\x48\x02\x03\x01\x53\x54\x02\x02\x01\x0d\x12\xed\xff\x14\x01\x12\x00\x00\x13\x51\x02\x5a\x00\x00\x53\x50\x02\x03\x01\x53\x5c\x02\x02\x01\x0f\x76\x6f\x69\x64\x00\x06\x0f\x62\x6f\x6f\x6c\x01\x01\x00\x02\x01\x01\x00\x01\x0f\x69\x6e\x74\x38\x01\x02\x00\x02\x01\x02\x00\x01\x1f\x69\x6e\x74\x31\x36\x01\x03\x00\x02\x01\x03\x00\x01\x1f\x69\x6e\x74\x33\x32\x01\x04\x00\x02\x01\x04\x00\x01\x1f\x69\x6e\x74\x36\x34\x01\x05\x00\x02\x01\x05\x00\x01\x1f\x75\x69\x6e\x74\x38\x01\x06\x00\x02\x01\x06\x00\x01\x3f\x75\x69\x6e\x74\x31\x36\x01\x07\x00\x02\x01\x07\x00\x01\x3f\x75\x69\x6e\x74\x33\x32\x01\x08\x00\x02\x01\x08\x00\x01\x3f\x75\x69\x6e\x74\x36\x34\x01\x09\x00\x02\x01\x09\x00\x01\x7f\x66\x6c\x6f\x61\x74\x33\x32\x01\x0a\x00\x02\x01\x0a\x00\x01\x7f\x66\x6c\x6f\x61\x74\x36\x34\x01\x0b\x00\x02\x01\x0b\x00\x01\x0f\x74\x65\x78\x74\x01\x0c\x00\x02\x01\x0c\x00\x01\x0f\x64\x61\x74\x61\x01\x0d\x00\x02\x01\x0d\x00\x01\x0f\x6c\x69\x73\x74\x01\x12\x00\x02\x01\x12\x00\x01\x0f\x65\x6e\x75\x6d\x01\x07\x00\x02\x01\x07\x00\x01\x3f\x73\x74\x72\x75\x63\x74\x01\x12\x00\x02\x01\x12\x00\x01\xff\x69\x6e\x74\x65\x72\x66\x61\x63\x00\x01\x65\x00\x06\xff\x61\x6e\x79\x50\x6f\x69\x6e\x74\x00\x03\x65\x72\x01\x12\x00\x02\x01\x12\x00\x01\x11\x01\xf2\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x2e\x1f\x63\x6f\x6e\x73\x74\x11\x01\x77\x51\x08\x03\x04\x10\x03\x14\x01\x10\x00\x00\x11\x29\x2a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x11\x01\x04\x14\x01\x11\x00\x00\x11\x2d\x32\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x0f\x74\x79\x70\x65\x01\x10\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x00\x01\x01\x10\x00\x01\x1f\x76\x61\x6c\x75\x65\x01\x10\xff\x9b\x0c\xb0\xd7\xd2\xdc\x23\xce\x00\x00\x01\x01\x10\x00\x01\x31\x01\x1a\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x2e\x61\x6e\x6e\x6f\x74\x61\x74\x69\x03\x6f\x6e\x31\x01\xdf\x02\x51\x34\x03\x04\x10\x03\x14\x01\x12\x00\x00\x13\x5d\x01\x2a\x00\x00\x53\x58\x01\x03\x01\x53\x64\x01\x02\x01\x11\x01\x70\x14\x01\x13\x00\x00\x13\x61\x01\x62\x00\x00\x53\x60\x01\x03\x01\x53\x6c\x01\x02\x01\x11\x02\x71\x14\x01\x14\x00\x00\x13\x69\x01\x6a\x00\x00\x53\x68\x01\x03\x01\x53\x74\x01\x02\x01\x11\x03\x72\x14\x01\x15\x00\x00\x13\x71\x01\x62\x00\x00\x53\x70\x01\x03\x01\x53\x7c\x01\x02\x01\x11\x04\x73\x14\x01\x16\x00\x00\x13\x79\x01\x8a\x00\x00\x53\x7c\x01\x03\x01\x53\x88\x01\x02\x01\x11\x05\x74\x14\x01\x17\x00\x00\x13\x85\x01\x72\x00\x00\x53\x84\x01\x03\x01\x53\x90\x01\x02\x01\x11\x06\x75\x14\x01\x18\x00\x00\x13\x8d\x01\x6a\x00\x00\x53\x8c\x01\x03\x01\x53\x98\x01\x02\x01\x11\x07\x76\x14\x01\x19\x00\x00\x13\x95\x01\x6a\x00\x00\x53\x94\x01\x03\x01\x53\xa0\x01\x02\x01\x11\x08\x77\x14\x01\x1a\x00\x00\x13\x9d\x01\x6a\x00\x00\x53\x9c\x01\x03\x01\x53\xa8\x01\x02\x01\x11\x09\x78\x14\x01\x1b\x00\x00\x13\xa5\x01\x8a\x00\x00\x53\xa8\x01\x03\x01\x53\xb4\x01\x02\x01\x11\x0a\x79\x14\x01\x1c\x00\x00\x13\xb1\x01\x72\x00\x00\x53\xb0\x01\x03\x01\x53\xbc\x01\x02\x01\x11\x0b\x7a\x14\x01\x1d\x00\x00\x13\xb9\x01\x6a\x00\x00\x53\xb8\x01\x03\x01\x53\xc4\x01\x02\x01\x11\x0c\x7b\x14\x01\x1e\x00\x00\x13\xc1\x01\x92\x00\x00\x53\xc4\x01\x03\x01\x53\xd0\x01\x02\x01\x0f\x74\x79\x70\x65\x01\x10\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x00\x01\x01\x10\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x46\x00\x07\x69\x6c\x65\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x43\x00\x0f\x6f\x6e\x73\x74\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x45\x00\x07\x6e\x75\x6d\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x45\x01\x6e\x75\x6d\x65\x72\x61\x6e\x74\x00\x00\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x53\x00\x1f\x74\x72\x75\x63\x74\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x46\x00\x0f\x69\x65\x6c\x64\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x55\x00\x0f\x6e\x69\x6f\x6e\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x47\x00\x0f\x72\x6f\x75\x70\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x49\x01\x6e\x74\x65\x72\x66\x61\x63\x65\x00\x00\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x4d\x00\x1f\x65\x74\x68\x6f\x64\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x50\x00\x0f\x61\x72\x61\x6d\x01\x01\x00\x02\x01\x01\x00\x01\xff\x74\x61\x72\x67\x65\x74\x73\x41\x01\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x01\x6e\x01\x01\x00\x02\x01\x01\x00\x01\x31\x01\x1a\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x2e\x4e\x65\x73\x74\x65\x64\x4e\x6f\x03\x64\x65\x11\x01\x07\x50\x01\x01\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x2a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x2d\x1a\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x0f\x6e\x61\x6d\x65\x01\x0c\x00\x02\x01\x0c\x00\x01\x03\x69\x64\x01\x09\x00\x02\x01\x09\x00\x01\x11\x01\xf2\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x41\x6e\x6e\x6f\x74\x1f\x61\x74\x69\x6f\x6e\x11\x01\x07\x50\x01\x01\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x1a\x00\x00\x51\x40\x03\x01\x51\x4c\x02\x01\x01\x02\x14\x01\x01\x00\x00\x11\x49\x32\x00\x00\x51\x44\x03\x01\x51\x50\x02\x01\x11\x01\x01\x14\x01\x02\x00\x00\x11\x4d\x32\x00\x00\x51\x48\x03\x01\x51\x54\x02\x01\x03\x69\x64\x01\x09\x00\x02\x01\x09\x00\x01\x1f\x76\x61\x6c\x75\x65\x01\x10\xff\x9b\x0c\xb0\xd7\xd2\xdc\x23\xce\x00\x00\x01\x01\x10\x00\x01\x1f\x62\x72\x61\x6e\x64\x01\x10\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x00\x01\x01\x10\x00\x01\x31\x01\x12\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x4e\x6f\x64\x65\x2e\x50\x61\x72\x61\x6d\x65\x74\x65\x01\x72\x11\x01\x07\x50\x01\x01\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x2a\x00\x00\x51\x08\x03\x01\x51\x14\x02\x01\x0f\x6e\x61\x6d\x65\x01\x0c\x00\x02\x01\x0c\x00\x01\x11\x01\xca\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x42\x72\x61\x6e\x64\x00\x00\x11\x01\x27\x51\x08\x01\x01\xff\xc9\x6b\x63\xa9\x85\x34\xd7\xab\x00\x11\x09\x32\xff\xfc\xe7\x9e\x96\x16\xcd\x63\xc8\x00\x11\x05\x42\x1f\x53\x63\x6f\x70\x65\x7f\x42\x69\x6e\x64\x69\x6e\x67\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x24\x02\x01\x3f\x73\x63\x6f\x70\x65\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\xc9\x6b\x63\xa9\x85\x34\xd7\xab\x00\x00\x01\x01\x0e\x00\x01\x11\x01\x9a\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x01\x68\x65\x6d\x61\x2e\x63\x61\x70\x03\x6e\x70\x11\x01\xc7\x51\x30\x01\x01\xff\x17\xa4\x23\xf9\x4c\xab\x82\xe6\x00\x11\x59\x2a\xff\x5f\xf4\x4a\x1f\xa4\x50\xad\x9a\x00\x11\x55\x32\xff\x4d\x9a\x54\xdc\xeb\x7c\x8a\x97\x00\x11\x51\x52\xff\xf8\xd7\xa4\xd0\x9e\x2a\x96\xa9\x00\x11\x51\x5a\xbf\x80\x4d\x33\x3b\xe2\xcc\x95\x11\x51\x3a\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x11\x4d\x2a\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x11\x49\x32\xff\x9b\x0c\xb0\xd7\xd2\xdc\x23\xce\x00\x11\x45\x32\xff\x42\x75\x25\xab\x0d\x95\xc8\xf1\x00\x11\x41\x5a\xff\x26\x19\x52\xba\x7d\x8f\x95\xd1\x00\x11\x41\x62\xff\x63\x99\x83\x7d\x5b\x30\x5d\xd8\x00\x11\x41\x6a\xff\xce\xd7\x0a\x21\xf6\x46\xc5\xbf\x00\x11\x41\xaa\x0f\x4e\x6f\x64\x65\x1f\x46\x69\x65\x6c\x64\xff\x45\x6e\x75\x6d\x65\x72\x61\x6e\x00\x01\x74\xff\x53\x75\x70\x65\x72\x63\x6c\x61\x00\x03\x73\x73\x3f\x4d\x65\x74\x68\x6f\x64\x0f\x54\x79\x70\x65\x1f\x42\x72\x61\x6e\x64\x1f\x56\x61\x6c\x75\x65\xff\x41\x6e\x6e\x6f\x74\x61\x74\x69\x00\x03\x6f\x6e\xff\x45\x6c\x65\x6d\x65\x6e\x74\x53\x00\x07\x69\x7a\x65\xff\x43\x61\x70\x6e\x70\x56\x65\x72\x00\x0f\x73\x69\x6f\x6e\xff\x43\x6f\x64\x65\x47\x65\x6e\x65\x01\x72\x61\x74\x6f\x72\x52\x65\x71\x0f\x75\x65\x73\x74\x11\x01\x1f\x51\x04\x01\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x04\x02\x01\x41\x14\x01\x01\x0c\x00\x00\x11\x01\x72\xff\x63\x61\x70\x6e\x70\x3a\x3a\x73\x00\x1f\x63\x68\x65\x6d\x61\x00\x00\x11\x01\xfa\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x42\x72\x61\x6e\x64\x3f\x2e\x53\x63\x6f\x70\x65\x11\x01\x07\x50\x01\x01\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x42\x00\x00\x51\x40\x03\x01\x51\x4c\x02\x01\x0d\x01\xff\xff\x14\x01\x01\x00\x00\x11\x49\x2a\x00\x00\x51\x44\x03\x01\x51\x60\x02\x01\x0d\x02\xfe\xff\x14\x01\x02\x00\x00\x11\x5d\x42\x00\x00\x51\x58\x03\x01\x51\x64\x02\x01\x7f\x73\x63\x6f\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\x0f\x62\x69\x6e\x64\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\xfc\xe7\x9e\x96\x16\xcd\x63\xc8\x00\x00\x01\x01\x0e\x00\x01\x7f\x69\x6e\x68\x65\x72\x69\x74\x00\x06\x31\x01\x0a\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x42\x72\x61\x6e\x64\x2e\x42\x69\x6e\x64\x69\x6e\x67\x00\x00\x11\x01\x07\x50\x01\x01\x11\x01\x77\x51\x08\x03\x04\x0c\xff\xff\x04\x01\x00\x00\x11\x29\x42\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x0d\x01\xfe\xff\x14\x01\x01\x00\x00\x11\x2d\x2a\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x7f\x75\x6e\x62\x6f\x75\x6e\x64\x00\x06\x0f\x74\x79\x70\x65\x01\x10\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x00\x01\x01\x10\x00\x01\x11\x01\xea\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x0f\x6c\x69\x73\x74\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x14\x01\x0e\x00\x00\x11\x0d\x62\x00\x00\x51\x0c\x03\x01\x51\x18\x02\x01\xff\x65\x6c\x65\x6d\x65\x6e\x74\x54\x00\x07\x79\x70\x65\x01\x10\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x00\x01\x01\x10\x00\x01\x11\x01\xea\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x0f\x65\x6e\x75\x6d\x11\x01\x77\x51\x08\x03\x04\x10\x01\x14\x01\x0f\x00\x00\x11\x29\x3a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x01\x01\x14\x01\x15\x00\x00\x11\x2d\x32\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x3f\x74\x79\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\x1f\x62\x72\x61\x6e\x64\x01\x10\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x00\x01\x01\x10\x00\x01\x11\x01\xfa\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x3f\x73\x74\x72\x75\x63\x74\x11\x01\x77\x51\x08\x03\x04\x10\x01\x14\x01\x10\x00\x00\x11\x29\x3a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x01\x01\x14\x01\x16\x00\x00\x11\x2d\x32\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x3f\x74\x79\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\x1f\x62\x72\x61\x6e\x64\x01\x10\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x00\x01\x01\x10\x00\x01\x31\x01\x12\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x69\x6e\x74\x65\x72\x66\x61\x63\x01\x65\x11\x01\x77\x51\x08\x03\x04\x10\x01\x14\x01\x11\x00\x00\x11\x29\x3a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x01\x01\x14\x01\x17\x00\x00\x11\x2d\x32\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x3f\x74\x79\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\x1f\x62\x72\x61\x6e\x64\x01\x10\xff\x2b\x42\x65\x60\xf0\x55\x34\x90\x00\x00\x01\x01\x10\x00\x01\x31\x01\x8a\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x05\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x61\x6e\x79\x50\x6f\x69\x6e\x74\x65\x72\x2e\x75\x6e\x63\x6f\x6e\x73\x74\x72\x61\x69\x6e\x65\x64\x00\x00\x11\x01\xe7\x51\x10\x03\x04\x0c\xff\xff\x14\x01\x12\x00\x00\x11\x61\x42\x00\x00\x51\x5c\x03\x01\x51\x68\x02\x01\x0d\x01\xfe\xff\x14\x01\x19\x00\x00\x11\x65\x3a\x00\x00\x51\x60\x03\x01\x51\x6c\x02\x01\x0d\x02\xfd\xff\x14\x01\x1a\x00\x00\x11\x69\x2a\x00\x00\x51\x64\x03\x01\x51\x70\x02\x01\x0d\x03\xfc\xff\x14\x01\x1b\x00\x00\x11\x6d\x5a\x00\x00\x51\x6c\x03\x01\x51\x78\x02\x01\x7f\x61\x6e\x79\x4b\x69\x6e\x64\x00\x06\x3f\x73\x74\x72\x75\x63\x74\x00\x06\x0f\x6c\x69\x73\x74\x00\x06\xff\x63\x61\x70\x61\x62\x69\x6c\x69\x00\x03\x74\x79\x00\x06\x31\x01\x6a\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x04\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x61\x6e\x79\x50\x6f\x69\x6e\x74\x65\x72\x2e\x70\x61\x72\x61\x6d\x0f\x65\x74\x65\x72\x11\x01\x77\x51\x08\x03\x04\x10\x02\x14\x01\x13\x00\x00\x11\x29\x42\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x11\x01\x05\x14\x01\x14\x00\x00\x11\x2d\x7a\x00\x00\x51\x2c\x03\x01\x51\x38\x02\x01\x7f\x73\x63\x6f\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\xff\x70\x61\x72\x61\x6d\x65\x74\x65\x00\x3f\x72\x49\x6e\x64\x65\x78\x01\x07\x00\x02\x01\x07\x00\x01\x31\x01\xda\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x06\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x61\x6e\x79\x50\x6f\x69\x6e\x74\x65\x72\x2e\x69\x6d\x70\x6c\x69\x63\x69\x74\x4d\x65\x74\x68\x6f\x64\x50\x61\x72\x61\x6d\x65\x74\x03\x65\x72\x11\x01\x3f\x51\x04\x03\x04\x10\x05\x14\x01\x18\x00\x00\x11\x0d\x7a\x00\x00\x51\x0c\x03\x01\x51\x18\x02\x01\xff\x70\x61\x72\x61\x6d\x65\x74\x65\x00\x3f\x72\x49\x6e\x64\x65\x78\x01\x07\x00\x02\x01\x07\x00\x01\x31\x01\x1a\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x54\x79\x70\x65\x2e\x61\x6e\x79\x50\x6f\x69\x6e\x74\x03\x65\x72\x11\x01\xaf\x51\x0c\x03\x04\x0c\xff\xff\x01\x01\xff\x56\x36\x59\xfe\x79\x5f\x3b\x8e\x00\x11\x45\x72\x00\x02\x0d\x01\xfe\xff\x01\x01\xff\x85\x4a\x61\xf4\x24\xf7\xd1\x9d\x00\x11\x31\x52\x00\x02\x0d\x02\xfd\xff\x01\x01\xff\x74\xe2\x56\x0c\x12\xc9\xef\xba\x00\x11\x1d\xc2\x00\x02\xff\x75\x6e\x63\x6f\x6e\x73\x74\x72\x00\x1f\x61\x69\x6e\x65\x64\xff\x70\x61\x72\x61\x6d\x65\x74\x65\x00\x01\x72\xff\x69\x6d\x70\x6c\x69\x63\x69\x74\x02\x4d\x65\x74\x68\x6f\x64\x50\x61\x72\x61\x6d\x65\x74\x65\x72\x00\x11\x01\xf2\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x46\x69\x65\x6c\x64\x1f\x2e\x73\x6c\x6f\x74\x11\x01\xe7\x51\x10\x03\x04\x10\x01\x14\x01\x04\x00\x00\x11\x61\x3a\x00\x00\x51\x5c\x03\x01\x51\x68\x02\x01\x11\x01\x02\x14\x01\x05\x00\x00\x11\x65\x2a\x00\x00\x51\x60\x03\x01\x51\x6c\x02\x01\x11\x02\x03\x14\x01\x06\x00\x00\x11\x69\x6a\x00\x00\x51\x68\x03\x01\x51\x74\x02\x01\x11\x03\x80\x14\x01\x0a\x00\x00\x11\x71\x9a\x00\x00\x51\x74\x03\x01\x51\x80\x02\x01\x3f\x6f\x66\x66\x73\x65\x74\x01\x08\x00\x02\x01\x08\x00\x01\x0f\x74\x79\x70\x65\x01\x10\xff\x60\xcc\xf9\xe1\xed\x78\x73\xd0\x00\x00\x01\x01\x10\x00\x01\xff\x64\x65\x66\x61\x75\x6c\x74\x56\x00\x0f\x61\x6c\x75\x65\x01\x10\xff\x9b\x0c\xb0\xd7\xd2\xdc\x23\xce\x00\x00\x01\x01\x10\x00\x01\xff\x68\x61\x64\x45\x78\x70\x6c\x69\x01\x63\x69\x74\x44\x65\x66\x61\x75\x03\x6c\x74\x01\x01\x00\x02\x01\x01\x00\x01\x11\x01\xfa\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x02\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x46\x69\x65\x6c\x64\x3f\x2e\x67\x72\x6f\x75\x70\x11\x01\x3f\x51\x04\x03\x04\x10\x02\x14\x01\x07\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x14\x02\x01\x3f\x74\x79\x70\x65\x49\x64\x01\x09\x00\x02\x01\x09\x00\x01\x31\x01\x0a\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x63\x03\x68\x65\x6d\x61\x2e\x63\x61\x70\x6e\x70\x3a\x46\x69\x65\x6c\x64\x2e\x6f\x72\x64\x69\x6e\x61\x6c\x00\x00\x11\x01\x77\x51\x08\x03\x04\x0c\xff\xff\x14\x01\x08\x00\x00\x11\x29\x4a\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x1d\x01\xfe\xff\x06\x14\x01\x09\x00\x00\x11\x31\x4a\x00\x00\x51\x30\x03\x01\x51\x3c\x02\x01\xff\x69\x6d\x70\x6c\x69\x63\x69\x74\x00\x00\x07\xff\x65\x78\x70\x6c\x69\x63\x69\x74\x00\x00\x00\x01\x07\x00\x02\x01\x07\x00\x01\x31\x01\xaa\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2f\x72\x65\x66\x6c\x65\x63\x74\x69\x6f\x6e\x2e\x63\x0f\x61\x70\x6e\x70\x11\x01\x27\x51\x08\x01\x01\xff\xcf\x85\xeb\x76\x7a\xef\x31\xcb\x00\x11\x09\x52\xff\x76\xc7\x4b\x10\x68\x2e\xa5\xf9\x00\x11\x09\x5a\xff\x43\x61\x70\x53\x63\x68\x65\x6d\x00\x01\x61\xff\x52\x65\x66\x6c\x65\x63\x74\x69\x00\x03\x6f\x6e\x11\x01\x1f\x51\x04\x01\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x04\x02\x01\x41\x14\x01\x01\x0c\x00\x00\x11\x01\x6a\xff\x7a\x68\x69\x6e\x73\x74\x5f\x63\x00\x0f\x61\x70\x6e\x70\x00\x00\x31\x01\x8a\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x6c\x69\x73\x74\x4e\x6f\x64\x65\x73\x24\x50\x61\x72\x61\x6d\x73\x00\x00\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x7a\x00\x00\x51\x44\x03\x01\x51\x50\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x4d\x32\x00\x00\x51\x48\x03\x01\x51\x54\x02\x01\x11\x02\x01\x14\x01\x02\x00\x00\x11\x51\x3a\x00\x00\x51\x4c\x03\x01\x51\x58\x02\x01\xff\x70\x61\x74\x68\x45\x78\x70\x72\x00\x3f\x65\x73\x73\x69\x6f\x6e\x01\x0c\x00\x02\x01\x0c\x00\x01\x1f\x66\x6c\x61\x67\x73\x01\x08\x00\x02\x01\x08\x00\x01\x3f\x63\x6c\x69\x65\x6e\x74\x01\x0d\x00\x02\x01\x0d\x00\x01\x31\x01\x92\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x6c\x69\x73\x74\x4e\x6f\x64\x65\x73\x24\x52\x65\x73\x75\x6c\x74\x01\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x32\x00\x00\x51\x08\x03\x01\x51\x24\x02\x01\x1f\x70\x61\x74\x68\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x0c\x00\x02\x01\x0e\x00\x01\x31\x01\xda\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x47\x65\x74\x56\x61\x6c\x75\x65\x73\x24\x50\x61\x72\x61\x03\x6d\x73\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x32\x00\x00\x51\x24\x03\x01\x51\x40\x02\x01\x11\x01\x01\x14\x01\x01\x01\x01\x11\x3d\x3a\x00\x00\x51\x38\x03\x01\x51\x44\x02\x01\x1f\x70\x61\x74\x68\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x0c\x00\x02\x01\x0e\x00\x01\x3f\x63\x6c\x69\x65\x6e\x74\x01\x0d\x00\x02\x01\x0d\x00\x00\x11\x01\x02\x31\x01\xa2\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x72\x65\x73\x75\x6c\x74\x2e\x63\x61\x70\x6e\x70\x3a\x52\x65\x73\x07\x75\x6c\x74\x11\x01\x07\x50\x01\x01\x11\x01\x77\x51\x08\x03\x04\x0c\xff\xff\x04\x01\x00\x00\x11\x29\x1a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x0d\x01\xfe\xff\x14\x01\x01\x00\x00\x11\x2d\x22\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x03\x6f\x6b\x01\x12\x01\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x01\x12\x00\x01\x07\x65\x72\x72\x01\x12\x05\x01\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x01\x12\x00\x01\x11\x01\x17\x41\x08\x01\x11\x05\x2a\x11\x05\x32\x0f\x54\x79\x70\x65\x1f\x45\x72\x72\x6f\x72\x31\x01\xda\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x06\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x41\x6e\x6e\x6f\x74\x61\x74\x65\x64\x56\x61\x6c\x03\x75\x65\x11\x01\x17\x51\x04\x01\x01\xff\x18\x30\xaf\x57\xca\xd8\x53\xad\x00\x11\x01\x4a\xff\x4d\x65\x74\x61\x64\x61\x74\x61\x00\x00\x00\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x4a\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\x31\x32\x00\x00\x51\x2c\x03\x01\x51\x38\x02\x01\xff\x6d\x65\x74\x61\x64\x61\x74\x61\x00\x00\x00\x01\x10\xff\x18\x30\xaf\x57\xca\xd8\x53\xad\x00\x00\x01\x01\x10\x00\x01\x1f\x76\x61\x6c\x75\x65\x01\x10\xff\xac\x75\xbe\x71\x47\x8b\x83\xb1\x00\x00\x01\x01\x10\x00\x01\x31\x01\x92\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x65\x72\x72\x6f\x72\x2e\x63\x61\x70\x6e\x70\x3a\x45\x72\x72\x6f\x01\x72\x11\x01\x07\x50\x01\x01\x31\x01\x1f\x01\x51\x14\x03\x04\x00\x00\x04\x01\x00\x00\x11\x7d\x2a\x00\x00\x51\x78\x03\x01\x51\x84\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x81\x42\x00\x00\x51\x7c\x03\x01\x51\x88\x02\x01\x11\x02\x01\x14\x01\x02\x00\x00\x11\x85\x4a\x00\x00\x51\x84\x03\x01\x11\x02\x03\x11\x03\x02\x14\x01\x03\x01\x01\x11\x81\x2a\x00\x00\x11\x22\x03\x11\x4a\x03\x11\x04\x02\x14\x01\x04\x00\x00\x11\x69\x3a\x00\x00\x11\x6a\x03\x11\x92\x03\x0f\x63\x6f\x64\x65\x01\x08\x00\x02\x01\x08\x00\x01\x7f\x6d\x65\x73\x73\x61\x67\x65\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x63\x61\x74\x65\x67\x6f\x72\x79\x00\x00\x00\x01\x0c\x00\x02\x0f\x6b\x69\x6e\x64\x3f\x73\x6f\x75\x72\x63\x65\x50\x02\x01\x01\x0c\x00\x01\x50\x03\x01\x01\x0f\xff\xbd\x02\x98\x4a\xe2\x71\xe6\xb7\x00\x00\x01\x50\x02\x01\x05\x0f\x02\x00\x01\x50\x03\x01\x01\x0c\x00\x02\x50\x02\x01\x01\x0c\x00\x01\x31\x01\xe2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x47\x65\x74\x56\x61\x6c\x75\x65\x73\x24\x52\x65\x73\x75\x07\x6c\x74\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x6c\x02\x01\x3f\x72\x65\x73\x75\x6c\x74\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x40\x01\x11\x01\x1f\x51\x04\x02\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x11\x01\x27\x51\x08\x01\x01\x01\x01\x51\x08\x03\x01\x01\x01\x51\x10\x03\x01\x01\x10\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x00\x01\x01\x10\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x00\x01\x01\x0e\x00\x01\x31\x01\x92\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x56\x61\x6c\x75\x01\x65\x11\x01\x07\x50\x01\x01\x31\x01\xc7\x01\x51\x20\x03\x04\x0c\xff\xff\x04\x01\x00\x00\x11\xd1\x32\x00\x00\x51\xcc\x03\x01\x51\xd8\x02\x01\x0d\x01\xfe\xff\x14\x01\x01\x00\x00\x11\xd5\x3a\x00\x00\x51\xd0\x03\x01\x51\xdc\x02\x01\x0d\x02\xfd\xff\x14\x01\x02\x00\x00\x11\xd9\x42\x00\x00\x51\xd4\x03\x01\x51\xe0\x02\x01\x0d\x03\xfc\xff\x14\x01\x03\x00\x00\x11\xdd\x3a\x00\x00\x51\xd8\x03\x01\x51\xe4\x02\x01\x0d\x04\xfb\xff\x14\x01\x04\x00\x00\x11\xe1\x5a\x00\x00\x51\xe0\x03\x01\x51\xec\x02\x01\x0d\x05\xfa\xff\x14\x01\x05\x00\x00\x11\xe9\x52\x00\x00\x51\xe8\x03\x01\x51\xf4\x02\x01\x0d\x06\xf9\xff\x14\x01\x06\x00\x00\x11\xf1\x72\x00\x00\x51\xf0\x03\x01\x51\xfc\x02\x01\x0d\x07\xf8\xff\x14\x01\x07\x00\x00\x11\xf9\x2a\x00\x00\x51\xf4\x03\x01\x52\x01\x02\x01\x1f\x69\x6e\x74\x36\x34\x01\x05\x00\x02\x01\x05\x00\x01\x3f\x64\x6f\x75\x62\x6c\x65\x01\x0b\x00\x02\x01\x0b\x00\x01\x7f\x63\x6f\x6d\x70\x6c\x65\x78\x01\x10\xff\x57\xb1\xb4\x97\xaf\xaf\xf1\xaa\x00\x00\x01\x01\x10\x00\x01\x3f\x73\x74\x72\x69\x6e\x67\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x76\x65\x63\x74\x6f\x72\x44\x61\x00\x03\x74\x61\x01\x10\xff\x78\x89\xf3\x0d\xb8\x65\x4c\x99\x00\x00\x01\x01\x10\x00\x01\xff\x63\x6e\x74\x53\x61\x6d\x70\x6c\x00\x01\x65\x01\x10\xff\x65\x60\x7d\x28\xd8\x0b\x37\xe9\x00\x00\x01\x01\x10\x00\x01\xff\x74\x72\x69\x67\x67\x65\x72\x53\x00\x1f\x61\x6d\x70\x6c\x65\x01\x10\xff\x95\x0d\x7d\xc2\x97\x20\xb7\xde\x00\x00\x01\x01\x10\x00\x01\x0f\x6e\x6f\x6e\x65\x01\x10\xff\x16\x78\x43\x81\xe9\xe8\x7f\xdf\x00\x00\x01\x01\x10\x00\x01\x31\x01\x52\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x08\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x52\x65\x74\x75\x72\x6e\x46\x72\x6f\x6d\x53\x65\x74\x57\x68\x65\x01\x6e\x11\x01\x07\x50\x01\x01\x11\x01\x67\x51\x10\x01\x02\x00\x00\x11\x29\x2a\x00\x00\x01\x01\x11\x21\x52\x00\x00\x01\x02\x11\x1d\x62\x00\x00\x01\x03\x11\x19\xa2\x00\x00\x0f\x61\x73\x61\x70\xff\x64\x65\x76\x69\x63\x65\x41\x63\x00\x01\x6b\xff\x75\x6e\x75\x73\x65\x64\x41\x73\x00\x07\x79\x6e\x63\xff\x75\x6e\x75\x73\x65\x64\x54\x72\x01\x61\x6e\x73\x61\x63\x74\x69\x6f\x07\x6e\x61\x6c\x31\x01\xd2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x53\x65\x74\x56\x61\x6c\x75\x65\x24\x50\x61\x72\x61\x6d\x01\x73\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x2a\x00\x00\x51\x40\x03\x01\x51\x4c\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\x49\x32\x00\x00\x51\x44\x03\x01\x51\x50\x02\x01\x01\x02\x14\x01\x02\x01\x01\x11\x4d\x6a\x00\x00\x51\x4c\x03\x01\x51\x58\x02\x01\x0f\x70\x61\x74\x68\x01\x0c\x00\x02\x01\x0c\x00\x01\x1f\x76\x61\x6c\x75\x65\x01\x10\xff\xac\x75\xbe\x71\x47\x8b\x83\xb1\x00\x00\x01\x01\x10\x00\x01\xff\x63\x6f\x6d\x70\x6c\x65\x74\x65\x00\x0f\x57\x68\x65\x6e\x01\x0f\xff\xf9\xed\x55\xac\x3a\xa5\x2d\xdd\x00\x00\x01\x05\x0f\x01\x00\x01\x31\x01\x8a\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x56\x6f\x69\x64\x00\x00\x11\x01\x07\x50\x01\x01\x31\x01\xda\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x53\x65\x74\x56\x61\x6c\x75\x65\x24\x52\x65\x73\x75\x6c\x03\x74\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x5c\x02\x01\x3f\x72\x65\x73\x75\x6c\x74\x01\x10\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x40\x01\x11\x01\x1f\x51\x04\x02\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x11\x01\x27\x51\x08\x01\x01\x01\x01\x51\x08\x03\x01\x01\x01\x51\x10\x03\x01\x01\x10\xff\x16\x78\x43\x81\xe9\xe8\x7f\xdf\x00\x00\x01\x01\x10\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x00\x01\x01\x10\x00\x01\x31\x01\x02\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x07\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2e\x63\x61\x70\x6e\x70\x3a\x53\x75\x62\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x11\x01\x07\x50\x01\x01\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x2a\x00\x00\x51\x40\x03\x01\x51\x4c\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\x49\x82\x00\x00\x51\x48\x03\x01\x51\x54\x02\x01\x11\x02\x02\x14\x01\x02\x00\x00\x11\x51\x6a\x00\x00\x51\x50\x03\x01\x51\x5c\x02\x01\x0f\x70\x61\x74\x68\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x73\x74\x72\x65\x61\x6d\x69\x6e\x01\x67\x48\x61\x6e\x64\x6c\x65\x00\x01\x11\xff\x74\x15\xb4\xf5\xa7\x28\x1e\xf5\x00\x00\x01\x01\x11\x00\x01\xff\x73\x75\x62\x73\x63\x72\x69\x62\x00\x0f\x65\x72\x49\x64\x01\x0d\x00\x02\x01\x0d\x00\x01\x31\x01\x8a\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x73\x75\x62\x73\x63\x72\x69\x62\x65\x24\x50\x61\x72\x61\x6d\x73\x00\x00\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x6a\x00\x00\x51\x0c\x03\x01\x51\x18\x02\x01\xff\x73\x75\x62\x73\x63\x72\x69\x70\x00\x0f\x74\x69\x6f\x6e\x01\x10\xff\xd4\xb1\xe1\x3d\xa5\x21\xac\xed\x00\x00\x01\x01\x10\x00\x01\x31\x01\x92\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x73\x75\x62\x73\x63\x72\x69\x62\x65\x24\x52\x65\x73\x75\x6c\x74\x01\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x5c\x02\x01\x3f\x72\x65\x73\x75\x6c\x74\x01\x10\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x40\x01\x11\x01\x1f\x51\x04\x02\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x11\x01\x27\x51\x08\x01\x01\x01\x01\x51\x08\x03\x01\x01\x01\x51\x10\x03\x01\x01\x10\xff\x16\x78\x43\x81\xe9\xe8\x7f\xdf\x00\x00\x01\x01\x10\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x00\x01\x01\x10\x00\x01\x31\x01\xc2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x64\x69\x73\x63\x6f\x6e\x6e\x65\x63\x74\x44\x65\x76\x69\x63\x65\x24\x50\x61\x72\x61\x6d\x73\x00\x31\x01\xaa\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x6c\x69\x73\x74\x4e\x6f\x64\x65\x73\x4a\x73\x6f\x6e\x24\x50\x61\x0f\x72\x61\x6d\x73\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x7a\x00\x00\x51\x44\x03\x01\x51\x50\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x4d\x32\x00\x00\x51\x48\x03\x01\x51\x54\x02\x01\x11\x02\x01\x14\x01\x02\x00\x00\x11\x51\x3a\x00\x00\x51\x4c\x03\x01\x51\x58\x02\x01\xff\x70\x61\x74\x68\x45\x78\x70\x72\x00\x3f\x65\x73\x73\x69\x6f\x6e\x01\x0c\x00\x02\x01\x0c\x00\x01\x1f\x66\x6c\x61\x67\x73\x01\x08\x00\x02\x01\x08\x00\x01\x3f\x63\x6c\x69\x65\x6e\x74\x01\x0d\x00\x02\x01\x0d\x00\x01\x31\x01\xb2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x6c\x69\x73\x74\x4e\x6f\x64\x65\x73\x4a\x73\x6f\x6e\x24\x52\x65\x1f\x73\x75\x6c\x74\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x52\x00\x00\x51\x0c\x03\x01\x51\x18\x02\x01\xff\x6e\x6f\x64\x65\x50\x72\x6f\x70\x00\x01\x73\x01\x0c\x00\x02\x01\x0c\x00\x01\x31\x01\x9a\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x75\x6e\x73\x75\x62\x73\x63\x72\x69\x62\x65\x24\x50\x61\x72\x61\x03\x6d\x73\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x6a\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\x31\x32\x00\x00\x51\x2c\x03\x01\x51\x48\x02\x01\xff\x73\x75\x62\x73\x63\x72\x69\x62\x00\x0f\x65\x72\x49\x64\x01\x0d\x00\x02\x01\x0d\x00\x01\x1f\x70\x61\x74\x68\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x0c\x00\x02\x01\x0e\x00\x01\x31\x01\xca\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x67\x65\x74\x53\x65\x73\x73\x69\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e\x24\x50\x61\x72\x61\x6d\x73\x00\x00\x31\x01\xd2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x67\x65\x74\x53\x65\x73\x73\x69\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e\x24\x52\x65\x73\x75\x6c\x74\x01\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x42\x00\x00\x51\x08\x03\x01\x51\x14\x02\x01\x7f\x76\x65\x72\x73\x69\x6f\x6e\x01\x0c\x00\x02\x01\x0c\x00\x01\x31\x01\xda\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x53\x65\x74\x56\x61\x6c\x75\x65\x32\x24\x50\x61\x72\x61\x03\x6d\x73\x11\x01\xe7\x51\x10\x03\x04\x00\x00\x04\x01\x00\x00\x11\x61\x2a\x00\x00\x51\x5c\x03\x01\x51\x68\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\x65\x32\x00\x00\x51\x60\x03\x01\x51\x6c\x02\x01\x01\x02\x14\x01\x02\x01\x01\x11\x69\x6a\x00\x00\x51\x68\x03\x01\x51\x74\x02\x01\x11\x03\x02\x14\x01\x03\x01\x01\x11\x71\x3a\x00\x00\x51\x6c\x03\x01\x51\x78\x02\x01\x0f\x70\x61\x74\x68\x01\x0c\x00\x02\x01\x0c\x00\x01\x1f\x76\x61\x6c\x75\x65\x01\x10\xff\xac\x75\xbe\x71\x47\x8b\x83\xb1\x00\x00\x01\x01\x10\x00\x01\xff\x63\x6f\x6d\x70\x6c\x65\x74\x65\x00\x0f\x57\x68\x65\x6e\x01\x0f\xff\xf9\xed\x55\xac\x3a\xa5\x2d\xdd\x00\x00\x01\x05\x0f\x01\x00\x01\x3f\x63\x6c\x69\x65\x6e\x74\x01\x0d\x00\x02\x01\x0d\x00\x00\x11\x01\x02\x31\x01\xe2\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x0a\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x53\x65\x74\x56\x61\x6c\x75\x65\x32\x24\x52\x65\x73\x75\x07\x6c\x74\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x5c\x02\x01\x3f\x72\x65\x73\x75\x6c\x74\x01\x10\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x40\x01\x11\x01\x1f\x51\x04\x02\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x11\x01\x27\x51\x08\x01\x01\x01\x01\x51\x08\x03\x01\x01\x01\x51\x10\x03\x01\x01\x10\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x00\x01\x01\x10\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x00\x01\x01\x10\x00\x01\x31\x01\x1a\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x07\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x4c\x6f\x6f\x6b\x75\x70\x4d\x6f\x03\x64\x65\x11\x01\x07\x50\x01\x01\x11\x01\x37\x51\x08\x01\x02\x00\x00\x11\x11\x6a\x00\x00\x01\x01\x11\x0d\x72\x00\x00\xff\x64\x69\x72\x65\x63\x74\x4c\x6f\x00\x0f\x6f\x6b\x75\x70\xff\x77\x69\x74\x68\x45\x78\x70\x61\x00\x1f\x6e\x73\x69\x6f\x6e\x31\x01\x82\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x73\x65\x74\x56\x61\x6c\x75\x65\x24\x50\x61\x72\x61\x6d\x73\x00\x31\x01\x1f\x01\x51\x14\x03\x04\x00\x00\x04\x01\x00\x00\x11\x7d\x7a\x00\x00\x51\x7c\x03\x01\x51\x88\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\x85\x32\x00\x00\x51\x80\x03\x01\x51\x8c\x02\x01\x01\x02\x14\x01\x02\x01\x01\x11\x89\x5a\x00\x00\x51\x88\x03\x01\x51\x94\x02\x01\x11\x03\x01\x14\x01\x03\x01\x01\x11\x91\x6a\x00\x00\x51\x90\x03\x01\x51\x9c\x02\x01\x11\x04\x02\x14\x01\x04\x01\x01\x11\x99\x3a\x00\x00\x51\x94\x03\x01\x51\xa0\x02\x01\xff\x70\x61\x74\x68\x45\x78\x70\x72\x00\x3f\x65\x73\x73\x69\x6f\x6e\x01\x0c\x00\x02\x01\x0c\x00\x01\x1f\x76\x61\x6c\x75\x65\x01\x10\xff\xac\x75\xbe\x71\x47\x8b\x83\xb1\x00\x00\x01\x01\x10\x00\x01\xff\x6c\x6f\x6f\x6b\x75\x70\x4d\x6f\x00\x03\x64\x65\x01\x0f\xff\x25\xf4\x72\xe0\xb5\x49\x50\xda\x00\x00\x01\x01\x0f\x00\x01\xff\x63\x6f\x6d\x70\x6c\x65\x74\x65\x00\x0f\x57\x68\x65\x6e\x01\x0f\xff\xf9\xed\x55\xac\x3a\xa5\x2d\xdd\x00\x00\x01\x05\x0f\x01\x00\x01\x3f\x63\x6c\x69\x65\x6e\x74\x01\x0d\x00\x02\x01\x0d\x00\x00\x11\x01\x02\x31\x01\x8a\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x73\x65\x74\x56\x61\x6c\x75\x65\x24\x52\x65\x73\x75\x6c\x74\x73\x00\x00\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x6c\x02\x01\x3f\x72\x65\x73\x75\x6c\x74\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x40\x01\x11\x01\x1f\x51\x04\x02\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x11\x01\x27\x51\x08\x01\x01\x01\x01\x51\x08\x03\x01\x01\x01\x51\x10\x03\x01\x01\x10\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x00\x01\x01\x10\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x00\x01\x01\x0e\x00\x01\x31\x01\x82\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x67\x65\x74\x56\x61\x6c\x75\x65\x24\x50\x61\x72\x61\x6d\x73\x00\x11\x01\xe7\x51\x10\x03\x04\x00\x00\x04\x01\x00\x00\x11\x61\x7a\x00\x00\x51\x60\x03\x01\x51\x6c\x02\x01\x01\x01\x14\x01\x01\x01\x01\x11\x69\x5a\x00\x00\x51\x68\x03\x01\x51\x74\x02\x01\x11\x02\x01\x14\x01\x02\x01\x01\x11\x71\x32\x00\x00\x51\x6c\x03\x01\x51\x78\x02\x01\x11\x03\x01\x14\x01\x03\x01\x01\x11\x75\x3a\x00\x00\x51\x70\x03\x01\x51\x7c\x02\x01\xff\x70\x61\x74\x68\x45\x78\x70\x72\x00\x3f\x65\x73\x73\x69\x6f\x6e\x01\x0c\x00\x02\x01\x0c\x00\x01\xff\x6c\x6f\x6f\x6b\x75\x70\x4d\x6f\x00\x03\x64\x65\x01\x0f\xff\x25\xf4\x72\xe0\xb5\x49\x50\xda\x00\x00\x01\x01\x0f\x00\x01\x1f\x66\x6c\x61\x67\x73\x01\x08\x00\x02\x01\x08\x00\x01\x3f\x63\x6c\x69\x65\x6e\x74\x01\x0d\x00\x02\x01\x0d\x00\x00\x11\x01\x02\x31\x01\x8a\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x3a\x53\x65\x73\x73\x69\x6f\x6e\x2e\x67\x65\x74\x56\x61\x6c\x75\x65\x24\x52\x65\x73\x75\x6c\x74\x73\x00\x00\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x6c\x02\x01\x3f\x72\x65\x73\x75\x6c\x74\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x40\x01\x11\x01\x1f\x51\x04\x02\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x00\x00\x11\x01\x27\x51\x08\x01\x01\x01\x01\x51\x08\x03\x01\x01\x01\x51\x10\x03\x01\x01\x10\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x00\x01\x01\x10\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x00\x01\x01\x0e\x00\x01\x31\x01\x62\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x04\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x07\x70\x6e\x70\x11\x01\x77\x51\x1c\x01\x01\xff\x16\x78\x43\x81\xe9\xe8\x7f\xdf\x00\x11\x31\x2a\xff\x78\x89\xf3\x0d\xb8\x65\x4c\x99\x00\x11\x2d\x5a\xff\x57\xb1\xb4\x97\xaf\xaf\xf1\xaa\x00\x11\x2d\x42\xff\x65\x60\x7d\x28\xd8\x0b\x37\xe9\x00\x11\x29\x52\xff\x95\x0d\x7d\xc2\x97\x20\xb7\xde\x00\x11\x29\x72\xff\xac\x75\xbe\x71\x47\x8b\x83\xb1\x00\x11\x29\x32\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x11\x25\x7a\x0f\x56\x6f\x69\x64\xff\x56\x65\x63\x74\x6f\x72\x44\x61\x00\x03\x74\x61\x7f\x43\x6f\x6d\x70\x6c\x65\x78\xff\x43\x6e\x74\x53\x61\x6d\x70\x6c\x00\x01\x65\xff\x54\x72\x69\x67\x67\x65\x72\x53\x00\x1f\x61\x6d\x70\x6c\x65\x1f\x56\x61\x6c\x75\x65\xff\x41\x6e\x6e\x6f\x74\x61\x74\x65\x00\x3f\x64\x56\x61\x6c\x75\x65\x11\x01\x1f\x51\x04\x01\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x04\x02\x01\x41\x14\x01\x01\x0c\x00\x00\x11\x01\x6a\xff\x7a\x68\x69\x6e\x73\x74\x5f\x63\x00\x0f\x61\x70\x6e\x70\x00\x00\x31\x01\x6a\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x04\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x72\x65\x73\x75\x6c\x74\x2e\x63\x0f\x61\x70\x6e\x70\x11\x01\x17\x51\x04\x01\x01\xff\x3d\x32\x34\x19\x3e\xf3\xb0\xba\x00\x11\x01\x3a\x3f\x52\x65\x73\x75\x6c\x74\x11\x01\x1f\x51\x04\x01\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x04\x02\x01\x41\x14\x01\x01\x0c\x00\x00\x11\x01\x6a\xff\x7a\x68\x69\x6e\x73\x74\x5f\x63\x00\x0f\x61\x70\x6e\x70\x00\x00\x31\x01\x22\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x07\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x41\x6e\x6e\x6f\x74\x61\x74\x65\x64\x56\x61\x6c\x75\x65\x2e\x4d\x65\x74\x61\x64\x07\x61\x74\x61\x11\x01\x07\x50\x01\x01\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x52\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x01\x01\x14\x01\x01\x00\x00\x11\x31\x2a\x00\x00\x51\x2c\x03\x01\x51\x38\x02\x01\xff\x74\x69\x6d\x65\x73\x74\x61\x6d\x00\x01\x70\x01\x09\x00\x02\x01\x09\x00\x01\x0f\x70\x61\x74\x68\x01\x0c\x00\x02\x01\x0c\x00\x01\x31\x01\xa2\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x43\x6f\x6d\x70\x07\x6c\x65\x78\x11\x01\x07\x50\x01\x01\x11\x01\x77\x51\x08\x03\x04\x00\x00\x04\x01\x00\x00\x11\x29\x2a\x00\x00\x51\x24\x03\x01\x51\x30\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\x2d\x2a\x00\x00\x51\x28\x03\x01\x51\x34\x02\x01\x0f\x72\x65\x61\x6c\x01\x0b\x00\x02\x01\x0b\x00\x01\x0f\x69\x6d\x61\x67\x01\x0b\x00\x02\x01\x0b\x00\x01\x31\x01\xba\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x56\x65\x63\x74\x3f\x6f\x72\x44\x61\x74\x61\x11\x01\x07\x50\x01\x01\x11\x01\xe7\x51\x10\x03\x04\x00\x00\x04\x01\x00\x00\x11\x61\x52\x00\x00\x51\x60\x03\x01\x51\x6c\x02\x01\x11\x01\x02\x14\x01\x01\x00\x00\x11\x69\x92\x00\x00\x51\x6c\x03\x01\x51\x78\x02\x01\x11\x02\x01\x14\x01\x02\x00\x00\x11\x75\x82\x00\x00\x51\x74\x03\x01\x51\x80\x02\x01\x01\x03\x14\x01\x03\x00\x00\x11\x7d\x2a\x00\x00\x51\x78\x03\x01\x51\x84\x02\x01\xff\x76\x61\x6c\x75\x65\x54\x79\x70\x00\x01\x65\x01\x07\x00\x02\x01\x07\x00\x01\xff\x76\x65\x63\x74\x6f\x72\x45\x6c\x01\x65\x6d\x65\x6e\x74\x54\x79\x70\x01\x65\x01\x06\x00\x02\x01\x06\x00\x01\xff\x65\x78\x74\x72\x61\x48\x65\x61\x01\x64\x65\x72\x49\x6e\x66\x6f\x00\x01\x08\x00\x02\x01\x08\x00\x01\x0f\x64\x61\x74\x61\x01\x0d\x00\x02\x01\x0d\x00\x01\x31\x01\xb2\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x43\x6e\x74\x53\x1f\x61\x6d\x70\x6c\x65\x11\x01\x07\x50\x01\x01\x11\x01\xaf\x51\x0c\x03\x04\x00\x00\x04\x01\x00\x00\x11\x45\x52\x00\x00\x51\x44\x03\x01\x51\x50\x02\x01\x11\x01\x02\x14\x01\x01\x00\x00\x11\x4d\x42\x00\x00\x51\x48\x03\x01\x51\x54\x02\x01\x11\x02\x03\x14\x01\x02\x00\x00\x11\x51\x42\x00\x00\x51\x4c\x03\x01\x51\x58\x02\x01\xff\x74\x69\x6d\x65\x73\x74\x61\x6d\x00\x01\x70\x01\x09\x00\x02\x01\x09\x00\x01\x7f\x63\x6f\x75\x6e\x74\x65\x72\x01\x04\x00\x02\x01\x04\x00\x01\x7f\x74\x72\x69\x67\x67\x65\x72\x01\x08\x00\x02\x01\x08\x00\x01\x31\x01\xd2\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x06\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x76\x61\x6c\x75\x65\x2e\x63\x61\x70\x6e\x70\x3a\x54\x72\x69\x67\x67\x65\x72\x53\x61\x6d\x70\x6c\x01\x65\x11\x01\x07\x50\x01\x01\x31\x01\x8f\x01\x51\x1c\x03\x04\x00\x00\x04\x01\x00\x00\x11\xb5\x52\x00\x00\x51\xb4\x03\x01\x51\xc0\x02\x01\x11\x01\x01\x14\x01\x01\x00\x00\x11\xbd\x5a\x00\x00\x51\xbc\x03\x01\x51\xc8\x02\x01\x11\x02\x04\x14\x01\x02\x00\x00\x11\xc5\x42\x00\x00\x51\xc0\x03\x01\x51\xcc\x02\x01\x11\x03\x05\x14\x01\x03\x00\x00\x11\xc9\x7a\x00\x00\x51\xc8\x03\x01\x51\xd4\x02\x01\x11\x04\x06\x14\x01\x04\x00\x00\x11\xd1\x5a\x00\x00\x51\xd0\x03\x01\x51\xdc\x02\x01\x11\x05\x07\x14\x01\x05\x00\x00\x11\xd9\x22\x00\x00\x51\xd4\x03\x01\x51\xe0\x02\x01\x11\x06\x08\x14\x01\x06\x00\x00\x11\xdd\x72\x00\x00\x51\xdc\x03\x01\x51\xe8\x02\x01\xff\x74\x69\x6d\x65\x73\x74\x61\x6d\x00\x01\x70\x01\x09\x00\x02\x01\x09\x00\x01\xff\x73\x61\x6d\x70\x6c\x65\x54\x69\x00\x03\x63\x6b\x01\x09\x00\x02\x01\x09\x00\x01\x7f\x74\x72\x69\x67\x67\x65\x72\x01\x08\x00\x02\x01\x08\x00\x01\xff\x6d\x69\x73\x73\x65\x64\x54\x72\x00\x3f\x69\x67\x67\x65\x72\x73\x01\x08\x00\x02\x01\x08\x00\x01\xff\x61\x77\x67\x54\x72\x69\x67\x67\x00\x03\x65\x72\x01\x08\x00\x02\x01\x08\x00\x01\x07\x64\x69\x6f\x01\x08\x00\x02\x01\x08\x00\x01\xff\x73\x65\x71\x75\x65\x6e\x63\x65\x00\x1f\x49\x6e\x64\x65\x78\x01\x08\x00\x02\x01\x08\x00\x01\x31\x01\xb2\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x65\x72\x72\x6f\x72\x2e\x63\x61\x70\x6e\x70\x3a\x45\x72\x72\x6f\x1f\x72\x4b\x69\x6e\x64\x11\x01\x07\x50\x01\x01\x11\x01\xf7\x51\x28\x01\x02\x00\x00\x11\x71\x1a\x00\x00\x01\x01\x11\x69\x52\x00\x00\x01\x02\x11\x65\x42\x00\x00\x01\x03\x11\x5d\x4a\x00\x00\x01\x04\x11\x59\x62\x00\x00\x01\x05\x11\x55\x5a\x00\x00\x01\x06\x11\x51\x72\x00\x00\x01\x07\x11\x4d\x4a\x00\x00\x01\x08\x11\x49\x62\x00\x00\x01\x09\x11\x45\x42\x00\x00\x03\x6f\x6b\xff\x63\x61\x6e\x63\x65\x6c\x6c\x65\x00\x01\x64\x7f\x75\x6e\x6b\x6e\x6f\x77\x6e\xff\x6e\x6f\x74\x46\x6f\x75\x6e\x64\x00\x00\x00\xff\x6f\x76\x65\x72\x77\x68\x65\x6c\x00\x07\x6d\x65\x64\xff\x62\x61\x64\x52\x65\x71\x75\x65\x00\x03\x73\x74\xff\x75\x6e\x69\x6d\x70\x6c\x65\x6d\x00\x1f\x65\x6e\x74\x65\x64\xff\x69\x6e\x74\x65\x72\x6e\x61\x6c\x00\x00\x00\xff\x75\x6e\x61\x76\x61\x69\x6c\x61\x00\x07\x62\x6c\x65\x7f\x74\x69\x6d\x65\x6f\x75\x74\x31\x01\x62\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x04\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x65\x72\x72\x6f\x72\x2e\x63\x61\x07\x70\x6e\x70\x11\x01\x27\x51\x08\x01\x01\xff\xbd\x02\x98\x4a\xe2\x71\xe6\xb7\x00\x11\x09\x52\xff\xd9\x11\x7d\x51\x4c\x4e\xe3\xc4\x00\x11\x09\x32\xff\x45\x72\x72\x6f\x72\x4b\x69\x6e\x00\x01\x64\x1f\x45\x72\x72\x6f\x72\x11\x01\x1f\x51\x04\x01\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x04\x02\x01\x41\x14\x01\x01\x0c\x00\x00\x11\x01\x6a\xff\x7a\x68\x69\x6e\x73\x74\x5f\x63\x00\x0f\x61\x70\x6e\x70\x00\x00\x31\x01\xc2\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x06\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x65\x73\x73\x69\x6f\x6e\x2f\x73\x65\x73\x73\x69\x6f\x6e\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2e\x63\x61\x70\x6e\x70\x00\x11\x01\x37\x51\x0c\x01\x01\xff\x5c\xa5\xa4\x2d\x58\x45\xd4\xb9\x00\x11\x11\x42\xff\xf9\xed\x55\xac\x3a\xa5\x2d\xdd\x00\x11\x0d\x92\xff\x25\xf4\x72\xe0\xb5\x49\x50\xda\x00\x11\x11\x5a\x7f\x53\x65\x73\x73\x69\x6f\x6e\xff\x52\x65\x74\x75\x72\x6e\x46\x72\x01\x6f\x6d\x53\x65\x74\x57\x68\x65\x01\x6e\xff\x4c\x6f\x6f\x6b\x75\x70\x4d\x6f\x00\x03\x64\x65\x11\x01\x37\x51\x08\x01\x02\xff\xce\x9d\xfc\x8c\xff\x96\x70\xac\x00\x51\x10\x02\x01\x41\x18\x01\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x14\x02\x01\x41\x24\x01\x00\x03\x01\x0c\x00\x00\x11\x01\x6a\xff\x7a\x68\x69\x6e\x73\x74\x5f\x63\x00\x0f\x61\x70\x6e\x70\x00\x00\x31\x01\x1a\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x07\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2e\x63\x61\x70\x6e\x70\x3a\x53\x74\x72\x65\x61\x6d\x69\x6e\x67\x48\x61\x6e\x64\x03\x6c\x65\x11\x01\x07\x50\x01\x01\x11\x01\x47\x51\x04\x03\x05\x00\x00\xff\xb6\x47\x7c\x96\x0f\xad\x0b\xa3\x01\x6e\xb1\xc0\x77\x33\x9a\x5f\x99\x11\x11\x5a\x00\x02\x11\x09\x07\xff\x73\x65\x6e\x64\x56\x61\x6c\x75\x00\x03\x65\x73\x40\x01\x11\x01\x07\x50\x01\x01\x31\x01\xaa\x02\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x09\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2e\x63\x61\x70\x6e\x70\x3a\x53\x74\x72\x65\x61\x6d\x69\x6e\x67\x48\x61\x6e\x64\x6c\x65\x2e\x73\x65\x6e\x64\x56\x61\x6c\x75\x65\x73\x24\x50\x61\x0f\x72\x61\x6d\x73\x11\x01\x3f\x51\x04\x03\x04\x00\x00\x04\x01\x00\x00\x11\x0d\x3a\x00\x00\x51\x08\x03\x01\x51\x24\x02\x01\x3f\x76\x61\x6c\x75\x65\x73\x01\x0e\x00\x01\x50\x03\x01\x01\x10\xff\xdc\x7c\x83\x6e\x37\xee\x08\xf4\x00\x00\x01\x01\x0e\x00\x01\x31\x01\x02\x01\xff\x63\x61\x70\x6e\x70\x2f\x73\x74\x03\x72\x65\x61\x6d\x2e\x63\x61\x70\x6e\x70\x3a\x53\x74\x72\x65\x61\x6d\x52\x65\x73\x75\x6c\x74\x00\x11\x01\x07\x50\x01\x01\x11\x01\x9a\xff\x63\x61\x70\x6e\x70\x2f\x73\x74\x01\x72\x65\x61\x6d\x2e\x63\x61\x70\x03\x6e\x70\x11\x01\x17\x51\x04\x01\x01\xff\x6e\xb1\xc0\x77\x33\x9a\x5f\x99\x00\x11\x01\x6a\xff\x53\x74\x72\x65\x61\x6d\x52\x65\x00\x0f\x73\x75\x6c\x74\x11\x01\x1f\x51\x04\x01\x02\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x04\x02\x01\x41\x10\x01\x01\x0c\x00\x00\x11\x01\x32\x1f\x63\x61\x70\x6e\x70\x00\x00\x31\x01\x9a\x01\xff\x7a\x68\x69\x6e\x73\x74\x2f\x69\x05\x6f\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x63\x61\x70\x6e\x70\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2f\x73\x74\x72\x65\x61\x6d\x69\x6e\x67\x2e\x63\x61\x70\x03\x6e\x70\x11\x01\x27\x51\x08\x01\x01\xff\x74\x15\xb4\xf5\xa7\x28\x1e\xf5\x00\x11\x09\x82\xff\xd4\xb1\xe1\x3d\xa5\x21\xac\xed\x00\x11\x09\x6a\xff\x53\x74\x72\x65\x61\x6d\x69\x6e\x02\x67\x48\x61\x6e\x64\x6c\x65\x00\x53\x75\x62\x73\x63\x72\x69\x70\x0f\x74\x69\x6f\x6e\x11\x01\x37\x51\x08\x01\x02\xff\xce\x9d\xfc\x8c\xff\x96\x70\xac\x00\x51\x10\x02\x01\x41\x18\x01\xff\x2c\x5f\x80\xbf\x9e\xf9\xc6\xb9\x00\x51\x14\x02\x01\x41\x24\x01\x00\x03\x01\x0c\x00\x00\x11\x01\x6a\xff\x7a\x68\x69\x6e\x73\x74\x5f\x63\x00\x0f\x61\x70\x6e\x70\x00\x00" + + +def get_schema() -> CapnpStructReader: + """Get the loaded capnp schema as a reflection_capnp.CapSchema reader. + + Note that only the `theSchema` field is loaded. The rest of the fields + (e.g. TypeId) are set to their default values. + + Returns: + The loaded capnp schema. + """ + return reflection_capnp.CapSchema.from_bytes_packed(_CAPNP_BINARY_SCHEMA) diff --git a/src/labone/mock/mock_server.py b/src/labone/mock/mock_server.py index 2620e41..9b6df76 100644 --- a/src/labone/mock/mock_server.py +++ b/src/labone/mock/mock_server.py @@ -9,20 +9,16 @@ from __future__ import annotations import socket -import typing as t from abc import ABC from typing import TYPE_CHECKING import capnp -from labone.core.helper import ensure_capnp_event_loop +from labone.core.helper import CapnpStructReader, ensure_capnp_event_loop from labone.core.reflection.parsed_wire_schema import ParsedWireSchema -from labone.core.reflection.server import reflection_capnp if TYPE_CHECKING: - from pathlib import Path - - from capnp.lib.capnp import _CallContext, _DynamicStructBuilder, _InterfaceModule + from capnp.lib.capnp import _CallContext, _DynamicStructBuilder class ServerTemplate(ABC): @@ -36,14 +32,15 @@ class ServerTemplate(ABC): concrete server. """ - id_: int + server_id: int + type_id: int -def capnp_server_factory( # noqa: ANN201 - interface: _InterfaceModule, +def capnp_server_factory( + stream: capnp.AsyncIoStream, + schema: CapnpStructReader, mock: ServerTemplate, - schema_parsed_dict: dict[str, t.Any], -): +) -> capnp.TwoPartyServer: """Dynamically create a capnp server. As a reflection schema is used, the concrete server interface @@ -51,15 +48,21 @@ def capnp_server_factory( # noqa: ANN201 at-runtime-approach to creating the concrete server. Args: - interface: Capnp interface for the server. + stream: Stream for the server. + schema: Parsed capnp schema (`reflection_capnp.CapSchema`). mock: The concrete server implementation. - schema_parsed_dict: The parsed capnp schema as a dictionary. Returns: Dynamically created capnp server. """ - - class MockServerImpl(interface.Server): + schema_parsed_dict = schema.to_dict() + parsed_schema = ParsedWireSchema(schema.theSchema) + capnp_interface = capnp.lib.capnp._InterfaceModule( # noqa: SLF001 + parsed_schema.full_schema[mock.server_id].schema.as_interface(), + parsed_schema.full_schema[mock.server_id].name, + ) + + class MockServerImpl(capnp_interface.Server): # type: ignore[name-defined] """Dynamically created capnp server. Redirects all calls (except getTheSchema) to the concrete server implementation. @@ -67,6 +70,8 @@ class MockServerImpl(interface.Server): def __init__(self) -> None: self._mock = mock + # parsed schema needs to stay alive as long as the server is. + self._parsed_schema = parsed_schema def __getattr__( self, @@ -97,74 +102,33 @@ async def getTheSchema( # noqa: N802 # Use `from_dict` to benefit from pycapnp lifetime management # Otherwise the underlying capnp object need to be copied manually to avoid # segfaults - return _context.results.theSchema.from_dict(schema_parsed_dict) + _context.results.theSchema.from_dict(schema_parsed_dict) + _context.results.theSchema.typeId = mock.type_id - return MockServerImpl + return capnp.TwoPartyServer(stream, bootstrap=MockServerImpl()) -class MockServer: - """Abstracr reflection server. +async def start_local_mock( + schema: CapnpStructReader, + mock: ServerTemplate, +) -> tuple[capnp.TwoPartyServer, capnp.AsyncIoStream]: + """Starting a local mock server. - Takes in another server implementation defining the specific functionality. + This is equivalent to the `capnp_server_factory` but with the addition that + a local socket pair is created for the server. Args: - capability_bytes: Path to the binary schema file. - concrete_server: ServerTemplate with the actual functionality. + schema: Parsed capnp schema (`reflection_capnp.CapSchema`). + mock: The concrete server implementation. Returns: - A MockServer instance which can be started with `start`. - - Raises: - FileNotFoundError: If the file does not exist. - PermissionError: If the file cannot be read. - capnp.lib.capnp.KjException: If the schema is invalid. Or the id - of the concrete server is not in the schema. - + The server and the client connection. """ - - def __init__( - self, - *, - capability_bytes: Path, - concrete_server: ServerTemplate, - ): - self._concrete_server = concrete_server - with capability_bytes.open("rb") as f: - schema_bytes = f.read() - with reflection_capnp.CapSchema.from_bytes(schema_bytes) as schema: - self._schema_parsed_dict = schema.to_dict() - self._schema = ParsedWireSchema(schema.theSchema) - self._capnp_interface = capnp.lib.capnp._InterfaceModule( # noqa: SLF001 - self._schema.full_schema[concrete_server.id_].schema.as_interface(), - self._schema.full_schema[concrete_server.id_].name, - ) - self._server = None - - async def start(self) -> capnp.AsyncIoStream: - """Starting the server and returning the client connection. - - Returns: - The client connection. - - Raises: - RuntimeError: If the server is already started. - """ - if self._server is not None: # pragma: no cover - msg = "Server already started." # pragma: no cover - raise RuntimeError(msg) # pragma: no cover - await ensure_capnp_event_loop() - # create local socket pair - # Since there is only a single client there is no need to use a asyncio server - read, write = socket.socketpair() - reader = await capnp.AsyncIoStream.create_connection(sock=read) - writer = await capnp.AsyncIoStream.create_connection(sock=write) - # create server for the local socket pair - self._server = capnp.TwoPartyServer( - writer, - bootstrap=capnp_server_factory( - self._capnp_interface, - self._concrete_server, - self._schema_parsed_dict, - )(), - ) - return reader + await ensure_capnp_event_loop() + # create local socket pair + # Since there is only a single client there is no need to use a asyncio server + read, write = socket.socketpair() + reader = await capnp.AsyncIoStream.create_connection(sock=read) + writer = await capnp.AsyncIoStream.create_connection(sock=write) + # create server for the local socket pair + return capnp_server_factory(writer, schema, mock), reader diff --git a/src/labone/mock/session_mock_template.py b/src/labone/mock/session_mock_template.py index f69a153..460822f 100644 --- a/src/labone/mock/session_mock_template.py +++ b/src/labone/mock/session_mock_template.py @@ -33,6 +33,7 @@ HPK_SCHEMA_ID = 11970870220622790664 +SESSION_SCHEMA_ID = 13390403837104530780 SERVER_ERROR = "SERVER_ERROR" @@ -249,8 +250,8 @@ class SessionMockTemplate(ServerTemplate): functionality: The implementation of the mock server behavior. """ - # unique capnp id of the Hpk schema - id_ = HPK_SCHEMA_ID + server_id = HPK_SCHEMA_ID + type_id = SESSION_SCHEMA_ID def __init__(self, functionality: SessionMockFunctionality) -> None: self._functionality = functionality diff --git a/src/labone/resources/session.bin b/src/labone/resources/session.bin deleted file mode 100644 index a2968c5..0000000 Binary files a/src/labone/resources/session.bin and /dev/null differ diff --git a/tests/core/test_session.py b/tests/core/test_session.py index 259fe6b..3e2cef4 100644 --- a/tests/core/test_session.py +++ b/tests/core/test_session.py @@ -30,8 +30,9 @@ from labone.core.subscription import DataQueue from labone.core.value import AnnotatedValue from labone.mock import AutomaticSessionFunctionality, spawn_hpk_mock -from labone.mock.entry_point import SESSION_REFLECTION_BIN, MockSession -from labone.mock.mock_server import MockServer +from labone.mock.entry_point import MockSession +from labone.mock.hpk_schema import get_schema +from labone.mock.mock_server import start_local_mock from labone.mock.session_mock_template import SessionMockTemplate from .resources import session_protocol_capnp, testfile_capnp, value_capnp @@ -974,11 +975,10 @@ async def getSessionVersion(self, _context): # noqa: N802 ) @pytest.mark.asyncio() async def test_ensure_compatibility_mismatch(version, should_fail): - mock_server = MockServer( - capability_bytes=SESSION_REFLECTION_BIN, - concrete_server=DummyServerVersionTest(version), + mock_server, client_connection = await start_local_mock( + schema=get_schema(), + mock=DummyServerVersionTest(version), ) - client_connection = await mock_server.start() reflection_client = await ReflectionServer.create_from_connection(client_connection) session = MockSession( mock_server,