diff --git a/lbry/extras/daemon/daemon.py b/lbry/extras/daemon/daemon.py index 752bae4c4..8c6dbda84 100644 --- a/lbry/extras/daemon/daemon.py +++ b/lbry/extras/daemon/daemon.py @@ -2320,7 +2320,7 @@ class Daemon(metaclass=JSONRPCServerType): kwargs['signature_valid'] = 0 page_num, page_size = abs(kwargs.pop('page', 1)), min(abs(kwargs.pop('page_size', DEFAULT_PAGE_SIZE)), 50) kwargs.update({'offset': page_size * (page_num - 1), 'limit': page_size}) - txos, _, total = await self.ledger.claim_search(wallet.accounts, **kwargs) + txos, blocked, _, total = await self.ledger.claim_search(wallet.accounts, **kwargs) result = {"items": txos, "page": page_num, "page_size": page_size} if not kwargs.pop('no_totals', False): result['total_pages'] = int((total + (page_size - 1)) / page_size) diff --git a/lbry/schema/Makefile b/lbry/schema/Makefile index 6f160e697..917b2a8e2 100644 --- a/lbry/schema/Makefile +++ b/lbry/schema/Makefile @@ -1,5 +1,5 @@ build: rm types/v2/* -rf touch types/v2/__init__.py - cd types/v2/ && protoc --python_out=. -I ../../../../../../types/v2/proto/ ../../../../../../types/v2/proto/*.proto + cd types/v2/ && protoc --python_out=. -I ../../../../../types/v2/proto/ ../../../../../types/v2/proto/*.proto sed -e 's/^import\ \(.*\)_pb2\ /from . import\ \1_pb2\ /g' -i types/v2/*.py diff --git a/lbry/schema/result.py b/lbry/schema/result.py index 38cbc372c..5e59d5da7 100644 --- a/lbry/schema/result.py +++ b/lbry/schema/result.py @@ -7,22 +7,74 @@ from itertools import chain from lbry.schema.types.v2.result_pb2 import Outputs as OutputsMessage +class Censor: + + def __init__(self, claim_ids: dict = None, channel_ids: set = None, tags: set = None): + self.claim_ids = claim_ids or {} + self.channel_ids = channel_ids or set() + self.tags = tags or set() + self.blocked_claims = {} + self.blocked_channels = {} + self.blocked_tags = {} + self.total = 0 + + def censor(self, row) -> bool: + censored = False + if row['claim_hash'] in self.claim_ids: + censored = True + channel_id = self.claim_ids[row['claim_hash']] + self.blocked_claims.setdefault(channel_id, 0) + self.blocked_claims[channel_id] += 1 + if row['channel_hash'] in self.channel_ids: + censored = True + self.blocked_channels.setdefault(row['channel_hash'], 0) + self.blocked_channels[row['channel_hash']] += 1 + if self.tags.intersection(row['tags']): + censored = True + for tag in self.tags: + if tag in row['tags']: + self.blocked_tags.setdefault(tag, 0) + self.blocked_tags[tag] += 1 + if censored: + self.total += 1 + return censored + + def to_message(self, outputs: OutputsMessage): + outputs.blocked_total = self.total + for channel_hash, count in self.blocked_claims.items(): + block = outputs.blocked.add() + block.count = count + block.ban_channel = channel_hash + for channel_hash, count in self.blocked_channels.items(): + block = outputs.blocked.add() + block.count = count + block.not_channel = channel_hash + for tag, count in self.blocked_tags.items(): + block = outputs.blocked.add() + block.count = count + block.not_tag = tag + + class Outputs: - __slots__ = 'txos', 'extra_txos', 'txs', 'offset', 'total' + __slots__ = 'txos', 'extra_txos', 'txs', 'offset', 'total', 'blocked', 'blocked_total' - def __init__(self, txos: List, extra_txos: List, txs: set, offset: int, total: int): + def __init__(self, txos: List, extra_txos: List, txs: set, + offset: int, total: int, blocked: List, blocked_total: int): self.txos = txos self.txs = txs self.extra_txos = extra_txos self.offset = offset self.total = total + self.blocked = blocked + self.blocked_total = blocked_total def inflate(self, txs): tx_map = {tx.hash: tx for tx in txs} for txo_message in self.extra_txos: self.message_to_txo(txo_message, tx_map) - return [self.message_to_txo(txo_message, tx_map) for txo_message in self.txos] + txos = [self.message_to_txo(txo_message, tx_map) for txo_message in self.txos] + return txos, self.inflate_blocked(txs) def message_to_txo(self, txo_message, tx_map): if txo_message.WhichOneof('meta') == 'error': @@ -57,6 +109,41 @@ class Outputs: pass return txo + def inflate_blocked(self, txs): + blocked = {} + return + if txo_message.WhichOneof('meta') == 'error': + return None + txo = tx_map[txo_message.tx_hash].outputs[txo_message.nout] + if txo_message.WhichOneof('meta') == 'claim': + claim = txo_message.claim + txo.meta = { + 'short_url': f'lbry://{claim.short_url}', + 'canonical_url': f'lbry://{claim.canonical_url or claim.short_url}', + 'reposted': claim.reposted, + 'is_controlling': claim.is_controlling, + 'take_over_height': claim.take_over_height, + 'creation_height': claim.creation_height, + 'activation_height': claim.activation_height, + 'expiration_height': claim.expiration_height, + 'effective_amount': claim.effective_amount, + 'support_amount': claim.support_amount, + 'trending_group': claim.trending_group, + 'trending_mixed': claim.trending_mixed, + 'trending_local': claim.trending_local, + 'trending_global': claim.trending_global, + } + if claim.HasField('channel'): + txo.channel = tx_map[claim.channel.tx_hash].outputs[claim.channel.nout] + if claim.HasField('repost'): + txo.reposted_claim = tx_map[claim.repost.tx_hash].outputs[claim.repost.nout] + try: + if txo.claim.is_channel: + txo.meta['claims_in_channel'] = claim.claims_in_channel + except: + pass + return txo + @classmethod def from_base64(cls, data: str) -> 'Outputs': return cls.from_bytes(base64.b64decode(data)) @@ -70,18 +157,24 @@ class Outputs: if txo_message.WhichOneof('meta') == 'error': continue txs.add((hexlify(txo_message.tx_hash[::-1]).decode(), txo_message.height)) - return cls(outputs.txos, outputs.extra_txos, txs, outputs.offset, outputs.total) + return cls( + outputs.txos, outputs.extra_txos, txs, + outputs.offset, outputs.total, + outputs.blocked, outputs.blocked_total + ) @classmethod - def to_base64(cls, txo_rows, extra_txo_rows, offset=0, total=None) -> str: - return base64.b64encode(cls.to_bytes(txo_rows, extra_txo_rows, offset, total)).decode() + def to_base64(cls, txo_rows, extra_txo_rows, offset=0, total=None, blocked=None) -> str: + return base64.b64encode(cls.to_bytes(txo_rows, extra_txo_rows, offset, total, blocked)).decode() @classmethod - def to_bytes(cls, txo_rows, extra_txo_rows, offset=0, total=None) -> bytes: + def to_bytes(cls, txo_rows, extra_txo_rows, offset=0, total=None, blocked: Censor = None) -> bytes: page = OutputsMessage() page.offset = offset if total is not None: page.total = total + if blocked is not None: + blocked.to_message(page) for row in txo_rows: cls.row_to_message(row, page.txos.add(), extra_txo_rows) for row in extra_txo_rows: @@ -121,6 +214,10 @@ class Outputs: cls.set_reference(txo_message, 'channel', txo['channel_hash'], extra_txo_rows) cls.set_reference(txo_message, 'repost', txo['reposted_claim_hash'], extra_txo_rows) + @staticmethod + def set_blocked(message, blocked): + message.blocked_total = blocked.total + @staticmethod def set_reference(message, attr, claim_hash, rows): if claim_hash: diff --git a/lbry/schema/types/v2/claim_pb2.py b/lbry/schema/types/v2/claim_pb2.py index 8fe8a0951..d63f73964 100644 --- a/lbry/schema/types/v2/claim_pb2.py +++ b/lbry/schema/types/v2/claim_pb2.py @@ -7,6 +7,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -18,9 +19,9 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='claim.proto', package='pb', syntax='proto3', - serialized_options=None, serialized_pb=_b('\n\x0b\x63laim.proto\x12\x02pb\"\xab\x02\n\x05\x43laim\x12\x1c\n\x06stream\x18\x01 \x01(\x0b\x32\n.pb.StreamH\x00\x12\x1e\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x0b.pb.ChannelH\x00\x12#\n\ncollection\x18\x03 \x01(\x0b\x32\r.pb.ClaimListH\x00\x12$\n\x06repost\x18\x04 \x01(\x0b\x32\x12.pb.ClaimReferenceH\x00\x12\r\n\x05title\x18\x08 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\t \x01(\t\x12\x1d\n\tthumbnail\x18\n \x01(\x0b\x32\n.pb.Source\x12\x0c\n\x04tags\x18\x0b \x03(\t\x12\x1f\n\tlanguages\x18\x0c \x03(\x0b\x32\x0c.pb.Language\x12\x1f\n\tlocations\x18\r \x03(\x0b\x32\x0c.pb.LocationB\x06\n\x04type\"\x84\x02\n\x06Stream\x12\x1a\n\x06source\x18\x01 \x01(\x0b\x32\n.pb.Source\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12\x0f\n\x07license\x18\x03 \x01(\t\x12\x13\n\x0blicense_url\x18\x04 \x01(\t\x12\x14\n\x0crelease_time\x18\x05 \x01(\x03\x12\x14\n\x03\x66\x65\x65\x18\x06 \x01(\x0b\x32\x07.pb.Fee\x12\x1a\n\x05image\x18\n \x01(\x0b\x32\t.pb.ImageH\x00\x12\x1a\n\x05video\x18\x0b \x01(\x0b\x32\t.pb.VideoH\x00\x12\x1a\n\x05\x61udio\x18\x0c \x01(\x0b\x32\t.pb.AudioH\x00\x12 \n\x08software\x18\r \x01(\x0b\x32\x0c.pb.SoftwareH\x00\x42\x06\n\x04type\"}\n\x07\x43hannel\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x13\n\x0bwebsite_url\x18\x03 \x01(\t\x12\x19\n\x05\x63over\x18\x04 \x01(\x0b\x32\n.pb.Source\x12\x1f\n\x08\x66\x65\x61tured\x18\x05 \x01(\x0b\x32\r.pb.ClaimList\"$\n\x0e\x43laimReference\x12\x12\n\nclaim_hash\x18\x01 \x01(\x0c\"\x90\x01\n\tClaimList\x12)\n\tlist_type\x18\x01 \x01(\x0e\x32\x16.pb.ClaimList.ListType\x12,\n\x10\x63laim_references\x18\x02 \x03(\x0b\x32\x12.pb.ClaimReference\"*\n\x08ListType\x12\x0e\n\nCOLLECTION\x10\x00\x12\x0e\n\nDERIVATION\x10\x02\"y\n\x06Source\x12\x0c\n\x04hash\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x04\x12\x12\n\nmedia_type\x18\x04 \x01(\t\x12\x0b\n\x03url\x18\x05 \x01(\t\x12\x0f\n\x07sd_hash\x18\x06 \x01(\x0c\x12\x13\n\x0b\x62t_infohash\x18\x07 \x01(\x0c\"\x87\x01\n\x03\x46\x65\x65\x12\"\n\x08\x63urrency\x18\x01 \x01(\x0e\x32\x10.pb.Fee.Currency\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x03 \x01(\x04\";\n\x08\x43urrency\x12\x14\n\x10UNKNOWN_CURRENCY\x10\x00\x12\x07\n\x03LBC\x10\x01\x12\x07\n\x03\x42TC\x10\x02\x12\x07\n\x03USD\x10\x03\"&\n\x05Image\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\r\"R\n\x05Video\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\r\x12\x10\n\x08\x64uration\x18\x03 \x01(\r\x12\x18\n\x05\x61udio\x18\x0f \x01(\x0b\x32\t.pb.Audio\"\x19\n\x05\x41udio\x12\x10\n\x08\x64uration\x18\x01 \x01(\r\"l\n\x08Software\x12\n\n\x02os\x18\x01 \x01(\t\"T\n\x02OS\x12\x0e\n\nUNKNOWN_OS\x10\x00\x12\x07\n\x03\x41NY\x10\x01\x12\t\n\x05LINUX\x10\x02\x12\x0b\n\x07WINDOWS\x10\x03\x12\x07\n\x03MAC\x10\x04\x12\x0b\n\x07\x41NDROID\x10\x05\x12\x07\n\x03IOS\x10\x06\"\xc7\x1d\n\x08Language\x12\'\n\x08language\x18\x01 \x01(\x0e\x32\x15.pb.Language.Language\x12#\n\x06script\x18\x02 \x01(\x0e\x32\x13.pb.Language.Script\x12$\n\x06region\x18\x03 \x01(\x0e\x32\x14.pb.Location.Country\"\x99\x0c\n\x08Language\x12\x14\n\x10UNKNOWN_LANGUAGE\x10\x00\x12\x06\n\x02\x65n\x10\x01\x12\x06\n\x02\x61\x61\x10\x02\x12\x06\n\x02\x61\x62\x10\x03\x12\x06\n\x02\x61\x65\x10\x04\x12\x06\n\x02\x61\x66\x10\x05\x12\x06\n\x02\x61k\x10\x06\x12\x06\n\x02\x61m\x10\x07\x12\x06\n\x02\x61n\x10\x08\x12\x06\n\x02\x61r\x10\t\x12\x06\n\x02\x61s\x10\n\x12\x06\n\x02\x61v\x10\x0b\x12\x06\n\x02\x61y\x10\x0c\x12\x06\n\x02\x61z\x10\r\x12\x06\n\x02\x62\x61\x10\x0e\x12\x06\n\x02\x62\x65\x10\x0f\x12\x06\n\x02\x62g\x10\x10\x12\x06\n\x02\x62h\x10\x11\x12\x06\n\x02\x62i\x10\x12\x12\x06\n\x02\x62m\x10\x13\x12\x06\n\x02\x62n\x10\x14\x12\x06\n\x02\x62o\x10\x15\x12\x06\n\x02\x62r\x10\x16\x12\x06\n\x02\x62s\x10\x17\x12\x06\n\x02\x63\x61\x10\x18\x12\x06\n\x02\x63\x65\x10\x19\x12\x06\n\x02\x63h\x10\x1a\x12\x06\n\x02\x63o\x10\x1b\x12\x06\n\x02\x63r\x10\x1c\x12\x06\n\x02\x63s\x10\x1d\x12\x06\n\x02\x63u\x10\x1e\x12\x06\n\x02\x63v\x10\x1f\x12\x06\n\x02\x63y\x10 \x12\x06\n\x02\x64\x61\x10!\x12\x06\n\x02\x64\x65\x10\"\x12\x06\n\x02\x64v\x10#\x12\x06\n\x02\x64z\x10$\x12\x06\n\x02\x65\x65\x10%\x12\x06\n\x02\x65l\x10&\x12\x06\n\x02\x65o\x10\'\x12\x06\n\x02\x65s\x10(\x12\x06\n\x02\x65t\x10)\x12\x06\n\x02\x65u\x10*\x12\x06\n\x02\x66\x61\x10+\x12\x06\n\x02\x66\x66\x10,\x12\x06\n\x02\x66i\x10-\x12\x06\n\x02\x66j\x10.\x12\x06\n\x02\x66o\x10/\x12\x06\n\x02\x66r\x10\x30\x12\x06\n\x02\x66y\x10\x31\x12\x06\n\x02ga\x10\x32\x12\x06\n\x02gd\x10\x33\x12\x06\n\x02gl\x10\x34\x12\x06\n\x02gn\x10\x35\x12\x06\n\x02gu\x10\x36\x12\x06\n\x02gv\x10\x37\x12\x06\n\x02ha\x10\x38\x12\x06\n\x02he\x10\x39\x12\x06\n\x02hi\x10:\x12\x06\n\x02ho\x10;\x12\x06\n\x02hr\x10<\x12\x06\n\x02ht\x10=\x12\x06\n\x02hu\x10>\x12\x06\n\x02hy\x10?\x12\x06\n\x02hz\x10@\x12\x06\n\x02ia\x10\x41\x12\x06\n\x02id\x10\x42\x12\x06\n\x02ie\x10\x43\x12\x06\n\x02ig\x10\x44\x12\x06\n\x02ii\x10\x45\x12\x06\n\x02ik\x10\x46\x12\x06\n\x02io\x10G\x12\x06\n\x02is\x10H\x12\x06\n\x02it\x10I\x12\x06\n\x02iu\x10J\x12\x06\n\x02ja\x10K\x12\x06\n\x02jv\x10L\x12\x06\n\x02ka\x10M\x12\x06\n\x02kg\x10N\x12\x06\n\x02ki\x10O\x12\x06\n\x02kj\x10P\x12\x06\n\x02kk\x10Q\x12\x06\n\x02kl\x10R\x12\x06\n\x02km\x10S\x12\x06\n\x02kn\x10T\x12\x06\n\x02ko\x10U\x12\x06\n\x02kr\x10V\x12\x06\n\x02ks\x10W\x12\x06\n\x02ku\x10X\x12\x06\n\x02kv\x10Y\x12\x06\n\x02kw\x10Z\x12\x06\n\x02ky\x10[\x12\x06\n\x02la\x10\\\x12\x06\n\x02lb\x10]\x12\x06\n\x02lg\x10^\x12\x06\n\x02li\x10_\x12\x06\n\x02ln\x10`\x12\x06\n\x02lo\x10\x61\x12\x06\n\x02lt\x10\x62\x12\x06\n\x02lu\x10\x63\x12\x06\n\x02lv\x10\x64\x12\x06\n\x02mg\x10\x65\x12\x06\n\x02mh\x10\x66\x12\x06\n\x02mi\x10g\x12\x06\n\x02mk\x10h\x12\x06\n\x02ml\x10i\x12\x06\n\x02mn\x10j\x12\x06\n\x02mr\x10k\x12\x06\n\x02ms\x10l\x12\x06\n\x02mt\x10m\x12\x06\n\x02my\x10n\x12\x06\n\x02na\x10o\x12\x06\n\x02nb\x10p\x12\x06\n\x02nd\x10q\x12\x06\n\x02ne\x10r\x12\x06\n\x02ng\x10s\x12\x06\n\x02nl\x10t\x12\x06\n\x02nn\x10u\x12\x06\n\x02no\x10v\x12\x06\n\x02nr\x10w\x12\x06\n\x02nv\x10x\x12\x06\n\x02ny\x10y\x12\x06\n\x02oc\x10z\x12\x06\n\x02oj\x10{\x12\x06\n\x02om\x10|\x12\x06\n\x02or\x10}\x12\x06\n\x02os\x10~\x12\x06\n\x02pa\x10\x7f\x12\x07\n\x02pi\x10\x80\x01\x12\x07\n\x02pl\x10\x81\x01\x12\x07\n\x02ps\x10\x82\x01\x12\x07\n\x02pt\x10\x83\x01\x12\x07\n\x02qu\x10\x84\x01\x12\x07\n\x02rm\x10\x85\x01\x12\x07\n\x02rn\x10\x86\x01\x12\x07\n\x02ro\x10\x87\x01\x12\x07\n\x02ru\x10\x88\x01\x12\x07\n\x02rw\x10\x89\x01\x12\x07\n\x02sa\x10\x8a\x01\x12\x07\n\x02sc\x10\x8b\x01\x12\x07\n\x02sd\x10\x8c\x01\x12\x07\n\x02se\x10\x8d\x01\x12\x07\n\x02sg\x10\x8e\x01\x12\x07\n\x02si\x10\x8f\x01\x12\x07\n\x02sk\x10\x90\x01\x12\x07\n\x02sl\x10\x91\x01\x12\x07\n\x02sm\x10\x92\x01\x12\x07\n\x02sn\x10\x93\x01\x12\x07\n\x02so\x10\x94\x01\x12\x07\n\x02sq\x10\x95\x01\x12\x07\n\x02sr\x10\x96\x01\x12\x07\n\x02ss\x10\x97\x01\x12\x07\n\x02st\x10\x98\x01\x12\x07\n\x02su\x10\x99\x01\x12\x07\n\x02sv\x10\x9a\x01\x12\x07\n\x02sw\x10\x9b\x01\x12\x07\n\x02ta\x10\x9c\x01\x12\x07\n\x02te\x10\x9d\x01\x12\x07\n\x02tg\x10\x9e\x01\x12\x07\n\x02th\x10\x9f\x01\x12\x07\n\x02ti\x10\xa0\x01\x12\x07\n\x02tk\x10\xa1\x01\x12\x07\n\x02tl\x10\xa2\x01\x12\x07\n\x02tn\x10\xa3\x01\x12\x07\n\x02to\x10\xa4\x01\x12\x07\n\x02tr\x10\xa5\x01\x12\x07\n\x02ts\x10\xa6\x01\x12\x07\n\x02tt\x10\xa7\x01\x12\x07\n\x02tw\x10\xa8\x01\x12\x07\n\x02ty\x10\xa9\x01\x12\x07\n\x02ug\x10\xaa\x01\x12\x07\n\x02uk\x10\xab\x01\x12\x07\n\x02ur\x10\xac\x01\x12\x07\n\x02uz\x10\xad\x01\x12\x07\n\x02ve\x10\xae\x01\x12\x07\n\x02vi\x10\xaf\x01\x12\x07\n\x02vo\x10\xb0\x01\x12\x07\n\x02wa\x10\xb1\x01\x12\x07\n\x02wo\x10\xb2\x01\x12\x07\n\x02xh\x10\xb3\x01\x12\x07\n\x02yi\x10\xb4\x01\x12\x07\n\x02yo\x10\xb5\x01\x12\x07\n\x02za\x10\xb6\x01\x12\x07\n\x02zh\x10\xb7\x01\x12\x07\n\x02zu\x10\xb8\x01\"\xaa\x10\n\x06Script\x12\x12\n\x0eUNKNOWN_SCRIPT\x10\x00\x12\x08\n\x04\x41\x64lm\x10\x01\x12\x08\n\x04\x41\x66\x61k\x10\x02\x12\x08\n\x04\x41ghb\x10\x03\x12\x08\n\x04\x41hom\x10\x04\x12\x08\n\x04\x41rab\x10\x05\x12\x08\n\x04\x41ran\x10\x06\x12\x08\n\x04\x41rmi\x10\x07\x12\x08\n\x04\x41rmn\x10\x08\x12\x08\n\x04\x41vst\x10\t\x12\x08\n\x04\x42\x61li\x10\n\x12\x08\n\x04\x42\x61mu\x10\x0b\x12\x08\n\x04\x42\x61ss\x10\x0c\x12\x08\n\x04\x42\x61tk\x10\r\x12\x08\n\x04\x42\x65ng\x10\x0e\x12\x08\n\x04\x42hks\x10\x0f\x12\x08\n\x04\x42lis\x10\x10\x12\x08\n\x04\x42opo\x10\x11\x12\x08\n\x04\x42rah\x10\x12\x12\x08\n\x04\x42rai\x10\x13\x12\x08\n\x04\x42ugi\x10\x14\x12\x08\n\x04\x42uhd\x10\x15\x12\x08\n\x04\x43\x61km\x10\x16\x12\x08\n\x04\x43\x61ns\x10\x17\x12\x08\n\x04\x43\x61ri\x10\x18\x12\x08\n\x04\x43ham\x10\x19\x12\x08\n\x04\x43her\x10\x1a\x12\x08\n\x04\x43irt\x10\x1b\x12\x08\n\x04\x43opt\x10\x1c\x12\x08\n\x04\x43pmn\x10\x1d\x12\x08\n\x04\x43prt\x10\x1e\x12\x08\n\x04\x43yrl\x10\x1f\x12\x08\n\x04\x43yrs\x10 \x12\x08\n\x04\x44\x65va\x10!\x12\x08\n\x04\x44ogr\x10\"\x12\x08\n\x04\x44srt\x10#\x12\x08\n\x04\x44upl\x10$\x12\x08\n\x04\x45gyd\x10%\x12\x08\n\x04\x45gyh\x10&\x12\x08\n\x04\x45gyp\x10\'\x12\x08\n\x04\x45lba\x10(\x12\x08\n\x04\x45lym\x10)\x12\x08\n\x04\x45thi\x10*\x12\x08\n\x04Geok\x10+\x12\x08\n\x04Geor\x10,\x12\x08\n\x04Glag\x10-\x12\x08\n\x04Gong\x10.\x12\x08\n\x04Gonm\x10/\x12\x08\n\x04Goth\x10\x30\x12\x08\n\x04Gran\x10\x31\x12\x08\n\x04Grek\x10\x32\x12\x08\n\x04Gujr\x10\x33\x12\x08\n\x04Guru\x10\x34\x12\x08\n\x04Hanb\x10\x35\x12\x08\n\x04Hang\x10\x36\x12\x08\n\x04Hani\x10\x37\x12\x08\n\x04Hano\x10\x38\x12\x08\n\x04Hans\x10\x39\x12\x08\n\x04Hant\x10:\x12\x08\n\x04Hatr\x10;\x12\x08\n\x04Hebr\x10<\x12\x08\n\x04Hira\x10=\x12\x08\n\x04Hluw\x10>\x12\x08\n\x04Hmng\x10?\x12\x08\n\x04Hmnp\x10@\x12\x08\n\x04Hrkt\x10\x41\x12\x08\n\x04Hung\x10\x42\x12\x08\n\x04Inds\x10\x43\x12\x08\n\x04Ital\x10\x44\x12\x08\n\x04Jamo\x10\x45\x12\x08\n\x04Java\x10\x46\x12\x08\n\x04Jpan\x10G\x12\x08\n\x04Jurc\x10H\x12\x08\n\x04Kali\x10I\x12\x08\n\x04Kana\x10J\x12\x08\n\x04Khar\x10K\x12\x08\n\x04Khmr\x10L\x12\x08\n\x04Khoj\x10M\x12\x08\n\x04Kitl\x10N\x12\x08\n\x04Kits\x10O\x12\x08\n\x04Knda\x10P\x12\x08\n\x04Kore\x10Q\x12\x08\n\x04Kpel\x10R\x12\x08\n\x04Kthi\x10S\x12\x08\n\x04Lana\x10T\x12\x08\n\x04Laoo\x10U\x12\x08\n\x04Latf\x10V\x12\x08\n\x04Latg\x10W\x12\x08\n\x04Latn\x10X\x12\x08\n\x04Leke\x10Y\x12\x08\n\x04Lepc\x10Z\x12\x08\n\x04Limb\x10[\x12\x08\n\x04Lina\x10\\\x12\x08\n\x04Linb\x10]\x12\x08\n\x04Lisu\x10^\x12\x08\n\x04Loma\x10_\x12\x08\n\x04Lyci\x10`\x12\x08\n\x04Lydi\x10\x61\x12\x08\n\x04Mahj\x10\x62\x12\x08\n\x04Maka\x10\x63\x12\x08\n\x04Mand\x10\x64\x12\x08\n\x04Mani\x10\x65\x12\x08\n\x04Marc\x10\x66\x12\x08\n\x04Maya\x10g\x12\x08\n\x04Medf\x10h\x12\x08\n\x04Mend\x10i\x12\x08\n\x04Merc\x10j\x12\x08\n\x04Mero\x10k\x12\x08\n\x04Mlym\x10l\x12\x08\n\x04Modi\x10m\x12\x08\n\x04Mong\x10n\x12\x08\n\x04Moon\x10o\x12\x08\n\x04Mroo\x10p\x12\x08\n\x04Mtei\x10q\x12\x08\n\x04Mult\x10r\x12\x08\n\x04Mymr\x10s\x12\x08\n\x04Nand\x10t\x12\x08\n\x04Narb\x10u\x12\x08\n\x04Nbat\x10v\x12\x08\n\x04Newa\x10w\x12\x08\n\x04Nkdb\x10x\x12\x08\n\x04Nkgb\x10y\x12\x08\n\x04Nkoo\x10z\x12\x08\n\x04Nshu\x10{\x12\x08\n\x04Ogam\x10|\x12\x08\n\x04Olck\x10}\x12\x08\n\x04Orkh\x10~\x12\x08\n\x04Orya\x10\x7f\x12\t\n\x04Osge\x10\x80\x01\x12\t\n\x04Osma\x10\x81\x01\x12\t\n\x04Palm\x10\x82\x01\x12\t\n\x04Pauc\x10\x83\x01\x12\t\n\x04Perm\x10\x84\x01\x12\t\n\x04Phag\x10\x85\x01\x12\t\n\x04Phli\x10\x86\x01\x12\t\n\x04Phlp\x10\x87\x01\x12\t\n\x04Phlv\x10\x88\x01\x12\t\n\x04Phnx\x10\x89\x01\x12\t\n\x04Plrd\x10\x8a\x01\x12\t\n\x04Piqd\x10\x8b\x01\x12\t\n\x04Prti\x10\x8c\x01\x12\t\n\x04Qaaa\x10\x8d\x01\x12\t\n\x04Qabx\x10\x8e\x01\x12\t\n\x04Rjng\x10\x8f\x01\x12\t\n\x04Rohg\x10\x90\x01\x12\t\n\x04Roro\x10\x91\x01\x12\t\n\x04Runr\x10\x92\x01\x12\t\n\x04Samr\x10\x93\x01\x12\t\n\x04Sara\x10\x94\x01\x12\t\n\x04Sarb\x10\x95\x01\x12\t\n\x04Saur\x10\x96\x01\x12\t\n\x04Sgnw\x10\x97\x01\x12\t\n\x04Shaw\x10\x98\x01\x12\t\n\x04Shrd\x10\x99\x01\x12\t\n\x04Shui\x10\x9a\x01\x12\t\n\x04Sidd\x10\x9b\x01\x12\t\n\x04Sind\x10\x9c\x01\x12\t\n\x04Sinh\x10\x9d\x01\x12\t\n\x04Sogd\x10\x9e\x01\x12\t\n\x04Sogo\x10\x9f\x01\x12\t\n\x04Sora\x10\xa0\x01\x12\t\n\x04Soyo\x10\xa1\x01\x12\t\n\x04Sund\x10\xa2\x01\x12\t\n\x04Sylo\x10\xa3\x01\x12\t\n\x04Syrc\x10\xa4\x01\x12\t\n\x04Syre\x10\xa5\x01\x12\t\n\x04Syrj\x10\xa6\x01\x12\t\n\x04Syrn\x10\xa7\x01\x12\t\n\x04Tagb\x10\xa8\x01\x12\t\n\x04Takr\x10\xa9\x01\x12\t\n\x04Tale\x10\xaa\x01\x12\t\n\x04Talu\x10\xab\x01\x12\t\n\x04Taml\x10\xac\x01\x12\t\n\x04Tang\x10\xad\x01\x12\t\n\x04Tavt\x10\xae\x01\x12\t\n\x04Telu\x10\xaf\x01\x12\t\n\x04Teng\x10\xb0\x01\x12\t\n\x04Tfng\x10\xb1\x01\x12\t\n\x04Tglg\x10\xb2\x01\x12\t\n\x04Thaa\x10\xb3\x01\x12\t\n\x04Thai\x10\xb4\x01\x12\t\n\x04Tibt\x10\xb5\x01\x12\t\n\x04Tirh\x10\xb6\x01\x12\t\n\x04Ugar\x10\xb7\x01\x12\t\n\x04Vaii\x10\xb8\x01\x12\t\n\x04Visp\x10\xb9\x01\x12\t\n\x04Wara\x10\xba\x01\x12\t\n\x04Wcho\x10\xbb\x01\x12\t\n\x04Wole\x10\xbc\x01\x12\t\n\x04Xpeo\x10\xbd\x01\x12\t\n\x04Xsux\x10\xbe\x01\x12\t\n\x04Yiii\x10\xbf\x01\x12\t\n\x04Zanb\x10\xc0\x01\x12\t\n\x04Zinh\x10\xc1\x01\x12\t\n\x04Zmth\x10\xc2\x01\x12\t\n\x04Zsye\x10\xc3\x01\x12\t\n\x04Zsym\x10\xc4\x01\x12\t\n\x04Zxxx\x10\xc5\x01\x12\t\n\x04Zyyy\x10\xc6\x01\x12\t\n\x04Zzzz\x10\xc7\x01\"\xec)\n\x08Location\x12%\n\x07\x63ountry\x18\x01 \x01(\x0e\x32\x14.pb.Location.Country\x12\r\n\x05state\x18\x02 \x01(\t\x12\x0c\n\x04\x63ity\x18\x03 \x01(\t\x12\x0c\n\x04\x63ode\x18\x04 \x01(\t\x12\x10\n\x08latitude\x18\x05 \x01(\x11\x12\x11\n\tlongitude\x18\x06 \x01(\x11\"\xe8(\n\x07\x43ountry\x12\x13\n\x0fUNKNOWN_COUNTRY\x10\x00\x12\x06\n\x02\x41\x46\x10\x01\x12\x06\n\x02\x41X\x10\x02\x12\x06\n\x02\x41L\x10\x03\x12\x06\n\x02\x44Z\x10\x04\x12\x06\n\x02\x41S\x10\x05\x12\x06\n\x02\x41\x44\x10\x06\x12\x06\n\x02\x41O\x10\x07\x12\x06\n\x02\x41I\x10\x08\x12\x06\n\x02\x41Q\x10\t\x12\x06\n\x02\x41G\x10\n\x12\x06\n\x02\x41R\x10\x0b\x12\x06\n\x02\x41M\x10\x0c\x12\x06\n\x02\x41W\x10\r\x12\x06\n\x02\x41U\x10\x0e\x12\x06\n\x02\x41T\x10\x0f\x12\x06\n\x02\x41Z\x10\x10\x12\x06\n\x02\x42S\x10\x11\x12\x06\n\x02\x42H\x10\x12\x12\x06\n\x02\x42\x44\x10\x13\x12\x06\n\x02\x42\x42\x10\x14\x12\x06\n\x02\x42Y\x10\x15\x12\x06\n\x02\x42\x45\x10\x16\x12\x06\n\x02\x42Z\x10\x17\x12\x06\n\x02\x42J\x10\x18\x12\x06\n\x02\x42M\x10\x19\x12\x06\n\x02\x42T\x10\x1a\x12\x06\n\x02\x42O\x10\x1b\x12\x06\n\x02\x42Q\x10\x1c\x12\x06\n\x02\x42\x41\x10\x1d\x12\x06\n\x02\x42W\x10\x1e\x12\x06\n\x02\x42V\x10\x1f\x12\x06\n\x02\x42R\x10 \x12\x06\n\x02IO\x10!\x12\x06\n\x02\x42N\x10\"\x12\x06\n\x02\x42G\x10#\x12\x06\n\x02\x42\x46\x10$\x12\x06\n\x02\x42I\x10%\x12\x06\n\x02KH\x10&\x12\x06\n\x02\x43M\x10\'\x12\x06\n\x02\x43\x41\x10(\x12\x06\n\x02\x43V\x10)\x12\x06\n\x02KY\x10*\x12\x06\n\x02\x43\x46\x10+\x12\x06\n\x02TD\x10,\x12\x06\n\x02\x43L\x10-\x12\x06\n\x02\x43N\x10.\x12\x06\n\x02\x43X\x10/\x12\x06\n\x02\x43\x43\x10\x30\x12\x06\n\x02\x43O\x10\x31\x12\x06\n\x02KM\x10\x32\x12\x06\n\x02\x43G\x10\x33\x12\x06\n\x02\x43\x44\x10\x34\x12\x06\n\x02\x43K\x10\x35\x12\x06\n\x02\x43R\x10\x36\x12\x06\n\x02\x43I\x10\x37\x12\x06\n\x02HR\x10\x38\x12\x06\n\x02\x43U\x10\x39\x12\x06\n\x02\x43W\x10:\x12\x06\n\x02\x43Y\x10;\x12\x06\n\x02\x43Z\x10<\x12\x06\n\x02\x44K\x10=\x12\x06\n\x02\x44J\x10>\x12\x06\n\x02\x44M\x10?\x12\x06\n\x02\x44O\x10@\x12\x06\n\x02\x45\x43\x10\x41\x12\x06\n\x02\x45G\x10\x42\x12\x06\n\x02SV\x10\x43\x12\x06\n\x02GQ\x10\x44\x12\x06\n\x02\x45R\x10\x45\x12\x06\n\x02\x45\x45\x10\x46\x12\x06\n\x02\x45T\x10G\x12\x06\n\x02\x46K\x10H\x12\x06\n\x02\x46O\x10I\x12\x06\n\x02\x46J\x10J\x12\x06\n\x02\x46I\x10K\x12\x06\n\x02\x46R\x10L\x12\x06\n\x02GF\x10M\x12\x06\n\x02PF\x10N\x12\x06\n\x02TF\x10O\x12\x06\n\x02GA\x10P\x12\x06\n\x02GM\x10Q\x12\x06\n\x02GE\x10R\x12\x06\n\x02\x44\x45\x10S\x12\x06\n\x02GH\x10T\x12\x06\n\x02GI\x10U\x12\x06\n\x02GR\x10V\x12\x06\n\x02GL\x10W\x12\x06\n\x02GD\x10X\x12\x06\n\x02GP\x10Y\x12\x06\n\x02GU\x10Z\x12\x06\n\x02GT\x10[\x12\x06\n\x02GG\x10\\\x12\x06\n\x02GN\x10]\x12\x06\n\x02GW\x10^\x12\x06\n\x02GY\x10_\x12\x06\n\x02HT\x10`\x12\x06\n\x02HM\x10\x61\x12\x06\n\x02VA\x10\x62\x12\x06\n\x02HN\x10\x63\x12\x06\n\x02HK\x10\x64\x12\x06\n\x02HU\x10\x65\x12\x06\n\x02IS\x10\x66\x12\x06\n\x02IN\x10g\x12\x06\n\x02ID\x10h\x12\x06\n\x02IR\x10i\x12\x06\n\x02IQ\x10j\x12\x06\n\x02IE\x10k\x12\x06\n\x02IM\x10l\x12\x06\n\x02IL\x10m\x12\x06\n\x02IT\x10n\x12\x06\n\x02JM\x10o\x12\x06\n\x02JP\x10p\x12\x06\n\x02JE\x10q\x12\x06\n\x02JO\x10r\x12\x06\n\x02KZ\x10s\x12\x06\n\x02KE\x10t\x12\x06\n\x02KI\x10u\x12\x06\n\x02KP\x10v\x12\x06\n\x02KR\x10w\x12\x06\n\x02KW\x10x\x12\x06\n\x02KG\x10y\x12\x06\n\x02LA\x10z\x12\x06\n\x02LV\x10{\x12\x06\n\x02LB\x10|\x12\x06\n\x02LS\x10}\x12\x06\n\x02LR\x10~\x12\x06\n\x02LY\x10\x7f\x12\x07\n\x02LI\x10\x80\x01\x12\x07\n\x02LT\x10\x81\x01\x12\x07\n\x02LU\x10\x82\x01\x12\x07\n\x02MO\x10\x83\x01\x12\x07\n\x02MK\x10\x84\x01\x12\x07\n\x02MG\x10\x85\x01\x12\x07\n\x02MW\x10\x86\x01\x12\x07\n\x02MY\x10\x87\x01\x12\x07\n\x02MV\x10\x88\x01\x12\x07\n\x02ML\x10\x89\x01\x12\x07\n\x02MT\x10\x8a\x01\x12\x07\n\x02MH\x10\x8b\x01\x12\x07\n\x02MQ\x10\x8c\x01\x12\x07\n\x02MR\x10\x8d\x01\x12\x07\n\x02MU\x10\x8e\x01\x12\x07\n\x02YT\x10\x8f\x01\x12\x07\n\x02MX\x10\x90\x01\x12\x07\n\x02\x46M\x10\x91\x01\x12\x07\n\x02MD\x10\x92\x01\x12\x07\n\x02MC\x10\x93\x01\x12\x07\n\x02MN\x10\x94\x01\x12\x07\n\x02ME\x10\x95\x01\x12\x07\n\x02MS\x10\x96\x01\x12\x07\n\x02MA\x10\x97\x01\x12\x07\n\x02MZ\x10\x98\x01\x12\x07\n\x02MM\x10\x99\x01\x12\x07\n\x02NA\x10\x9a\x01\x12\x07\n\x02NR\x10\x9b\x01\x12\x07\n\x02NP\x10\x9c\x01\x12\x07\n\x02NL\x10\x9d\x01\x12\x07\n\x02NC\x10\x9e\x01\x12\x07\n\x02NZ\x10\x9f\x01\x12\x07\n\x02NI\x10\xa0\x01\x12\x07\n\x02NE\x10\xa1\x01\x12\x07\n\x02NG\x10\xa2\x01\x12\x07\n\x02NU\x10\xa3\x01\x12\x07\n\x02NF\x10\xa4\x01\x12\x07\n\x02MP\x10\xa5\x01\x12\x07\n\x02NO\x10\xa6\x01\x12\x07\n\x02OM\x10\xa7\x01\x12\x07\n\x02PK\x10\xa8\x01\x12\x07\n\x02PW\x10\xa9\x01\x12\x07\n\x02PS\x10\xaa\x01\x12\x07\n\x02PA\x10\xab\x01\x12\x07\n\x02PG\x10\xac\x01\x12\x07\n\x02PY\x10\xad\x01\x12\x07\n\x02PE\x10\xae\x01\x12\x07\n\x02PH\x10\xaf\x01\x12\x07\n\x02PN\x10\xb0\x01\x12\x07\n\x02PL\x10\xb1\x01\x12\x07\n\x02PT\x10\xb2\x01\x12\x07\n\x02PR\x10\xb3\x01\x12\x07\n\x02QA\x10\xb4\x01\x12\x07\n\x02RE\x10\xb5\x01\x12\x07\n\x02RO\x10\xb6\x01\x12\x07\n\x02RU\x10\xb7\x01\x12\x07\n\x02RW\x10\xb8\x01\x12\x07\n\x02\x42L\x10\xb9\x01\x12\x07\n\x02SH\x10\xba\x01\x12\x07\n\x02KN\x10\xbb\x01\x12\x07\n\x02LC\x10\xbc\x01\x12\x07\n\x02MF\x10\xbd\x01\x12\x07\n\x02PM\x10\xbe\x01\x12\x07\n\x02VC\x10\xbf\x01\x12\x07\n\x02WS\x10\xc0\x01\x12\x07\n\x02SM\x10\xc1\x01\x12\x07\n\x02ST\x10\xc2\x01\x12\x07\n\x02SA\x10\xc3\x01\x12\x07\n\x02SN\x10\xc4\x01\x12\x07\n\x02RS\x10\xc5\x01\x12\x07\n\x02SC\x10\xc6\x01\x12\x07\n\x02SL\x10\xc7\x01\x12\x07\n\x02SG\x10\xc8\x01\x12\x07\n\x02SX\x10\xc9\x01\x12\x07\n\x02SK\x10\xca\x01\x12\x07\n\x02SI\x10\xcb\x01\x12\x07\n\x02SB\x10\xcc\x01\x12\x07\n\x02SO\x10\xcd\x01\x12\x07\n\x02ZA\x10\xce\x01\x12\x07\n\x02GS\x10\xcf\x01\x12\x07\n\x02SS\x10\xd0\x01\x12\x07\n\x02\x45S\x10\xd1\x01\x12\x07\n\x02LK\x10\xd2\x01\x12\x07\n\x02SD\x10\xd3\x01\x12\x07\n\x02SR\x10\xd4\x01\x12\x07\n\x02SJ\x10\xd5\x01\x12\x07\n\x02SZ\x10\xd6\x01\x12\x07\n\x02SE\x10\xd7\x01\x12\x07\n\x02\x43H\x10\xd8\x01\x12\x07\n\x02SY\x10\xd9\x01\x12\x07\n\x02TW\x10\xda\x01\x12\x07\n\x02TJ\x10\xdb\x01\x12\x07\n\x02TZ\x10\xdc\x01\x12\x07\n\x02TH\x10\xdd\x01\x12\x07\n\x02TL\x10\xde\x01\x12\x07\n\x02TG\x10\xdf\x01\x12\x07\n\x02TK\x10\xe0\x01\x12\x07\n\x02TO\x10\xe1\x01\x12\x07\n\x02TT\x10\xe2\x01\x12\x07\n\x02TN\x10\xe3\x01\x12\x07\n\x02TR\x10\xe4\x01\x12\x07\n\x02TM\x10\xe5\x01\x12\x07\n\x02TC\x10\xe6\x01\x12\x07\n\x02TV\x10\xe7\x01\x12\x07\n\x02UG\x10\xe8\x01\x12\x07\n\x02UA\x10\xe9\x01\x12\x07\n\x02\x41\x45\x10\xea\x01\x12\x07\n\x02GB\x10\xeb\x01\x12\x07\n\x02US\x10\xec\x01\x12\x07\n\x02UM\x10\xed\x01\x12\x07\n\x02UY\x10\xee\x01\x12\x07\n\x02UZ\x10\xef\x01\x12\x07\n\x02VU\x10\xf0\x01\x12\x07\n\x02VE\x10\xf1\x01\x12\x07\n\x02VN\x10\xf2\x01\x12\x07\n\x02VG\x10\xf3\x01\x12\x07\n\x02VI\x10\xf4\x01\x12\x07\n\x02WF\x10\xf5\x01\x12\x07\n\x02\x45H\x10\xf6\x01\x12\x07\n\x02YE\x10\xf7\x01\x12\x07\n\x02ZM\x10\xf8\x01\x12\x07\n\x02ZW\x10\xf9\x01\x12\t\n\x04R001\x10\xfa\x01\x12\t\n\x04R002\x10\xfb\x01\x12\t\n\x04R015\x10\xfc\x01\x12\t\n\x04R012\x10\xfd\x01\x12\t\n\x04R818\x10\xfe\x01\x12\t\n\x04R434\x10\xff\x01\x12\t\n\x04R504\x10\x80\x02\x12\t\n\x04R729\x10\x81\x02\x12\t\n\x04R788\x10\x82\x02\x12\t\n\x04R732\x10\x83\x02\x12\t\n\x04R202\x10\x84\x02\x12\t\n\x04R014\x10\x85\x02\x12\t\n\x04R086\x10\x86\x02\x12\t\n\x04R108\x10\x87\x02\x12\t\n\x04R174\x10\x88\x02\x12\t\n\x04R262\x10\x89\x02\x12\t\n\x04R232\x10\x8a\x02\x12\t\n\x04R231\x10\x8b\x02\x12\t\n\x04R260\x10\x8c\x02\x12\t\n\x04R404\x10\x8d\x02\x12\t\n\x04R450\x10\x8e\x02\x12\t\n\x04R454\x10\x8f\x02\x12\t\n\x04R480\x10\x90\x02\x12\t\n\x04R175\x10\x91\x02\x12\t\n\x04R508\x10\x92\x02\x12\t\n\x04R638\x10\x93\x02\x12\t\n\x04R646\x10\x94\x02\x12\t\n\x04R690\x10\x95\x02\x12\t\n\x04R706\x10\x96\x02\x12\t\n\x04R728\x10\x97\x02\x12\t\n\x04R800\x10\x98\x02\x12\t\n\x04R834\x10\x99\x02\x12\t\n\x04R894\x10\x9a\x02\x12\t\n\x04R716\x10\x9b\x02\x12\t\n\x04R017\x10\x9c\x02\x12\t\n\x04R024\x10\x9d\x02\x12\t\n\x04R120\x10\x9e\x02\x12\t\n\x04R140\x10\x9f\x02\x12\t\n\x04R148\x10\xa0\x02\x12\t\n\x04R178\x10\xa1\x02\x12\t\n\x04R180\x10\xa2\x02\x12\t\n\x04R226\x10\xa3\x02\x12\t\n\x04R266\x10\xa4\x02\x12\t\n\x04R678\x10\xa5\x02\x12\t\n\x04R018\x10\xa6\x02\x12\t\n\x04R072\x10\xa7\x02\x12\t\n\x04R748\x10\xa8\x02\x12\t\n\x04R426\x10\xa9\x02\x12\t\n\x04R516\x10\xaa\x02\x12\t\n\x04R710\x10\xab\x02\x12\t\n\x04R011\x10\xac\x02\x12\t\n\x04R204\x10\xad\x02\x12\t\n\x04R854\x10\xae\x02\x12\t\n\x04R132\x10\xaf\x02\x12\t\n\x04R384\x10\xb0\x02\x12\t\n\x04R270\x10\xb1\x02\x12\t\n\x04R288\x10\xb2\x02\x12\t\n\x04R324\x10\xb3\x02\x12\t\n\x04R624\x10\xb4\x02\x12\t\n\x04R430\x10\xb5\x02\x12\t\n\x04R466\x10\xb6\x02\x12\t\n\x04R478\x10\xb7\x02\x12\t\n\x04R562\x10\xb8\x02\x12\t\n\x04R566\x10\xb9\x02\x12\t\n\x04R654\x10\xba\x02\x12\t\n\x04R686\x10\xbb\x02\x12\t\n\x04R694\x10\xbc\x02\x12\t\n\x04R768\x10\xbd\x02\x12\t\n\x04R019\x10\xbe\x02\x12\t\n\x04R419\x10\xbf\x02\x12\t\n\x04R029\x10\xc0\x02\x12\t\n\x04R660\x10\xc1\x02\x12\t\n\x04R028\x10\xc2\x02\x12\t\n\x04R533\x10\xc3\x02\x12\t\n\x04R044\x10\xc4\x02\x12\t\n\x04R052\x10\xc5\x02\x12\t\n\x04R535\x10\xc6\x02\x12\t\n\x04R092\x10\xc7\x02\x12\t\n\x04R136\x10\xc8\x02\x12\t\n\x04R192\x10\xc9\x02\x12\t\n\x04R531\x10\xca\x02\x12\t\n\x04R212\x10\xcb\x02\x12\t\n\x04R214\x10\xcc\x02\x12\t\n\x04R308\x10\xcd\x02\x12\t\n\x04R312\x10\xce\x02\x12\t\n\x04R332\x10\xcf\x02\x12\t\n\x04R388\x10\xd0\x02\x12\t\n\x04R474\x10\xd1\x02\x12\t\n\x04R500\x10\xd2\x02\x12\t\n\x04R630\x10\xd3\x02\x12\t\n\x04R652\x10\xd4\x02\x12\t\n\x04R659\x10\xd5\x02\x12\t\n\x04R662\x10\xd6\x02\x12\t\n\x04R663\x10\xd7\x02\x12\t\n\x04R670\x10\xd8\x02\x12\t\n\x04R534\x10\xd9\x02\x12\t\n\x04R780\x10\xda\x02\x12\t\n\x04R796\x10\xdb\x02\x12\t\n\x04R850\x10\xdc\x02\x12\t\n\x04R013\x10\xdd\x02\x12\t\n\x04R084\x10\xde\x02\x12\t\n\x04R188\x10\xdf\x02\x12\t\n\x04R222\x10\xe0\x02\x12\t\n\x04R320\x10\xe1\x02\x12\t\n\x04R340\x10\xe2\x02\x12\t\n\x04R484\x10\xe3\x02\x12\t\n\x04R558\x10\xe4\x02\x12\t\n\x04R591\x10\xe5\x02\x12\t\n\x04R005\x10\xe6\x02\x12\t\n\x04R032\x10\xe7\x02\x12\t\n\x04R068\x10\xe8\x02\x12\t\n\x04R074\x10\xe9\x02\x12\t\n\x04R076\x10\xea\x02\x12\t\n\x04R152\x10\xeb\x02\x12\t\n\x04R170\x10\xec\x02\x12\t\n\x04R218\x10\xed\x02\x12\t\n\x04R238\x10\xee\x02\x12\t\n\x04R254\x10\xef\x02\x12\t\n\x04R328\x10\xf0\x02\x12\t\n\x04R600\x10\xf1\x02\x12\t\n\x04R604\x10\xf2\x02\x12\t\n\x04R239\x10\xf3\x02\x12\t\n\x04R740\x10\xf4\x02\x12\t\n\x04R858\x10\xf5\x02\x12\t\n\x04R862\x10\xf6\x02\x12\t\n\x04R021\x10\xf7\x02\x12\t\n\x04R060\x10\xf8\x02\x12\t\n\x04R124\x10\xf9\x02\x12\t\n\x04R304\x10\xfa\x02\x12\t\n\x04R666\x10\xfb\x02\x12\t\n\x04R840\x10\xfc\x02\x12\t\n\x04R010\x10\xfd\x02\x12\t\n\x04R142\x10\xfe\x02\x12\t\n\x04R143\x10\xff\x02\x12\t\n\x04R398\x10\x80\x03\x12\t\n\x04R417\x10\x81\x03\x12\t\n\x04R762\x10\x82\x03\x12\t\n\x04R795\x10\x83\x03\x12\t\n\x04R860\x10\x84\x03\x12\t\n\x04R030\x10\x85\x03\x12\t\n\x04R156\x10\x86\x03\x12\t\n\x04R344\x10\x87\x03\x12\t\n\x04R446\x10\x88\x03\x12\t\n\x04R408\x10\x89\x03\x12\t\n\x04R392\x10\x8a\x03\x12\t\n\x04R496\x10\x8b\x03\x12\t\n\x04R410\x10\x8c\x03\x12\t\n\x04R035\x10\x8d\x03\x12\t\n\x04R096\x10\x8e\x03\x12\t\n\x04R116\x10\x8f\x03\x12\t\n\x04R360\x10\x90\x03\x12\t\n\x04R418\x10\x91\x03\x12\t\n\x04R458\x10\x92\x03\x12\t\n\x04R104\x10\x93\x03\x12\t\n\x04R608\x10\x94\x03\x12\t\n\x04R702\x10\x95\x03\x12\t\n\x04R764\x10\x96\x03\x12\t\n\x04R626\x10\x97\x03\x12\t\n\x04R704\x10\x98\x03\x12\t\n\x04R034\x10\x99\x03\x12\t\n\x04R004\x10\x9a\x03\x12\t\n\x04R050\x10\x9b\x03\x12\t\n\x04R064\x10\x9c\x03\x12\t\n\x04R356\x10\x9d\x03\x12\t\n\x04R364\x10\x9e\x03\x12\t\n\x04R462\x10\x9f\x03\x12\t\n\x04R524\x10\xa0\x03\x12\t\n\x04R586\x10\xa1\x03\x12\t\n\x04R144\x10\xa2\x03\x12\t\n\x04R145\x10\xa3\x03\x12\t\n\x04R051\x10\xa4\x03\x12\t\n\x04R031\x10\xa5\x03\x12\t\n\x04R048\x10\xa6\x03\x12\t\n\x04R196\x10\xa7\x03\x12\t\n\x04R268\x10\xa8\x03\x12\t\n\x04R368\x10\xa9\x03\x12\t\n\x04R376\x10\xaa\x03\x12\t\n\x04R400\x10\xab\x03\x12\t\n\x04R414\x10\xac\x03\x12\t\n\x04R422\x10\xad\x03\x12\t\n\x04R512\x10\xae\x03\x12\t\n\x04R634\x10\xaf\x03\x12\t\n\x04R682\x10\xb0\x03\x12\t\n\x04R275\x10\xb1\x03\x12\t\n\x04R760\x10\xb2\x03\x12\t\n\x04R792\x10\xb3\x03\x12\t\n\x04R784\x10\xb4\x03\x12\t\n\x04R887\x10\xb5\x03\x12\t\n\x04R150\x10\xb6\x03\x12\t\n\x04R151\x10\xb7\x03\x12\t\n\x04R112\x10\xb8\x03\x12\t\n\x04R100\x10\xb9\x03\x12\t\n\x04R203\x10\xba\x03\x12\t\n\x04R348\x10\xbb\x03\x12\t\n\x04R616\x10\xbc\x03\x12\t\n\x04R498\x10\xbd\x03\x12\t\n\x04R642\x10\xbe\x03\x12\t\n\x04R643\x10\xbf\x03\x12\t\n\x04R703\x10\xc0\x03\x12\t\n\x04R804\x10\xc1\x03\x12\t\n\x04R154\x10\xc2\x03\x12\t\n\x04R248\x10\xc3\x03\x12\t\n\x04R830\x10\xc4\x03\x12\t\n\x04R831\x10\xc5\x03\x12\t\n\x04R832\x10\xc6\x03\x12\t\n\x04R680\x10\xc7\x03\x12\t\n\x04R208\x10\xc8\x03\x12\t\n\x04R233\x10\xc9\x03\x12\t\n\x04R234\x10\xca\x03\x12\t\n\x04R246\x10\xcb\x03\x12\t\n\x04R352\x10\xcc\x03\x12\t\n\x04R372\x10\xcd\x03\x12\t\n\x04R833\x10\xce\x03\x12\t\n\x04R428\x10\xcf\x03\x12\t\n\x04R440\x10\xd0\x03\x12\t\n\x04R578\x10\xd1\x03\x12\t\n\x04R744\x10\xd2\x03\x12\t\n\x04R752\x10\xd3\x03\x12\t\n\x04R826\x10\xd4\x03\x12\t\n\x04R039\x10\xd5\x03\x12\t\n\x04R008\x10\xd6\x03\x12\t\n\x04R020\x10\xd7\x03\x12\t\n\x04R070\x10\xd8\x03\x12\t\n\x04R191\x10\xd9\x03\x12\t\n\x04R292\x10\xda\x03\x12\t\n\x04R300\x10\xdb\x03\x12\t\n\x04R336\x10\xdc\x03\x12\t\n\x04R380\x10\xdd\x03\x12\t\n\x04R470\x10\xde\x03\x12\t\n\x04R499\x10\xdf\x03\x12\t\n\x04R807\x10\xe0\x03\x12\t\n\x04R620\x10\xe1\x03\x12\t\n\x04R674\x10\xe2\x03\x12\t\n\x04R688\x10\xe3\x03\x12\t\n\x04R705\x10\xe4\x03\x12\t\n\x04R724\x10\xe5\x03\x12\t\n\x04R155\x10\xe6\x03\x12\t\n\x04R040\x10\xe7\x03\x12\t\n\x04R056\x10\xe8\x03\x12\t\n\x04R250\x10\xe9\x03\x12\t\n\x04R276\x10\xea\x03\x12\t\n\x04R438\x10\xeb\x03\x12\t\n\x04R442\x10\xec\x03\x12\t\n\x04R492\x10\xed\x03\x12\t\n\x04R528\x10\xee\x03\x12\t\n\x04R756\x10\xef\x03\x12\t\n\x04R009\x10\xf0\x03\x12\t\n\x04R053\x10\xf1\x03\x12\t\n\x04R036\x10\xf2\x03\x12\t\n\x04R162\x10\xf3\x03\x12\t\n\x04R166\x10\xf4\x03\x12\t\n\x04R334\x10\xf5\x03\x12\t\n\x04R554\x10\xf6\x03\x12\t\n\x04R574\x10\xf7\x03\x12\t\n\x04R054\x10\xf8\x03\x12\t\n\x04R242\x10\xf9\x03\x12\t\n\x04R540\x10\xfa\x03\x12\t\n\x04R598\x10\xfb\x03\x12\t\n\x04R090\x10\xfc\x03\x12\t\n\x04R548\x10\xfd\x03\x12\t\n\x04R057\x10\xfe\x03\x12\t\n\x04R316\x10\xff\x03\x12\t\n\x04R296\x10\x80\x04\x12\t\n\x04R584\x10\x81\x04\x12\t\n\x04R583\x10\x82\x04\x12\t\n\x04R520\x10\x83\x04\x12\t\n\x04R580\x10\x84\x04\x12\t\n\x04R585\x10\x85\x04\x12\t\n\x04R581\x10\x86\x04\x12\t\n\x04R061\x10\x87\x04\x12\t\n\x04R016\x10\x88\x04\x12\t\n\x04R184\x10\x89\x04\x12\t\n\x04R258\x10\x8a\x04\x12\t\n\x04R570\x10\x8b\x04\x12\t\n\x04R612\x10\x8c\x04\x12\t\n\x04R882\x10\x8d\x04\x12\t\n\x04R772\x10\x8e\x04\x12\t\n\x04R776\x10\x8f\x04\x12\t\n\x04R798\x10\x90\x04\x12\t\n\x04R876\x10\x91\x04\x62\x06proto3') ) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -32,15 +33,15 @@ _CLAIMLIST_LISTTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='COLLECTION', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DERIVATION', index=1, number=2, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=852, serialized_end=894, ) @@ -54,23 +55,23 @@ _FEE_CURRENCY = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_CURRENCY', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LBC', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BTC', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='USD', index=3, number=3, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1096, serialized_end=1155, ) @@ -84,35 +85,35 @@ _SOFTWARE_OS = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_OS', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ANY', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LINUX', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='WINDOWS', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MAC', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ANDROID', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IOS', index=6, number=6, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1332, serialized_end=1416, ) @@ -126,747 +127,747 @@ _LANGUAGE_LANGUAGE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_LANGUAGE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='en', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='aa', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ab', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ae', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='af', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ak', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='am', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='an', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ar', index=9, number=9, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='as', index=10, number=10, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='av', index=11, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ay', index=12, number=12, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='az', index=13, number=13, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ba', index=14, number=14, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='be', index=15, number=15, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='bg', index=16, number=16, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='bh', index=17, number=17, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='bi', index=18, number=18, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='bm', index=19, number=19, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='bn', index=20, number=20, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='bo', index=21, number=21, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='br', index=22, number=22, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='bs', index=23, number=23, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ca', index=24, number=24, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ce', index=25, number=25, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ch', index=26, number=26, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='co', index=27, number=27, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='cr', index=28, number=28, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='cs', index=29, number=29, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='cu', index=30, number=30, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='cv', index=31, number=31, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='cy', index=32, number=32, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='da', index=33, number=33, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='de', index=34, number=34, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='dv', index=35, number=35, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='dz', index=36, number=36, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ee', index=37, number=37, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='el', index=38, number=38, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='eo', index=39, number=39, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='es', index=40, number=40, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='et', index=41, number=41, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='eu', index=42, number=42, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='fa', index=43, number=43, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ff', index=44, number=44, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='fi', index=45, number=45, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='fj', index=46, number=46, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='fo', index=47, number=47, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='fr', index=48, number=48, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='fy', index=49, number=49, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ga', index=50, number=50, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='gd', index=51, number=51, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='gl', index=52, number=52, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='gn', index=53, number=53, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='gu', index=54, number=54, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='gv', index=55, number=55, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ha', index=56, number=56, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='he', index=57, number=57, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='hi', index=58, number=58, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ho', index=59, number=59, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='hr', index=60, number=60, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ht', index=61, number=61, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='hu', index=62, number=62, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='hy', index=63, number=63, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='hz', index=64, number=64, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ia', index=65, number=65, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='id', index=66, number=66, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ie', index=67, number=67, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ig', index=68, number=68, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ii', index=69, number=69, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ik', index=70, number=70, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='io', index=71, number=71, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='is', index=72, number=72, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='it', index=73, number=73, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='iu', index=74, number=74, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ja', index=75, number=75, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='jv', index=76, number=76, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ka', index=77, number=77, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kg', index=78, number=78, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ki', index=79, number=79, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kj', index=80, number=80, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kk', index=81, number=81, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kl', index=82, number=82, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='km', index=83, number=83, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kn', index=84, number=84, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ko', index=85, number=85, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kr', index=86, number=86, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ks', index=87, number=87, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ku', index=88, number=88, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kv', index=89, number=89, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='kw', index=90, number=90, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ky', index=91, number=91, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='la', index=92, number=92, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='lb', index=93, number=93, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='lg', index=94, number=94, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='li', index=95, number=95, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ln', index=96, number=96, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='lo', index=97, number=97, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='lt', index=98, number=98, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='lu', index=99, number=99, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='lv', index=100, number=100, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='mg', index=101, number=101, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='mh', index=102, number=102, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='mi', index=103, number=103, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='mk', index=104, number=104, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ml', index=105, number=105, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='mn', index=106, number=106, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='mr', index=107, number=107, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ms', index=108, number=108, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='mt', index=109, number=109, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='my', index=110, number=110, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='na', index=111, number=111, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='nb', index=112, number=112, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='nd', index=113, number=113, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ne', index=114, number=114, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ng', index=115, number=115, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='nl', index=116, number=116, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='nn', index=117, number=117, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='no', index=118, number=118, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='nr', index=119, number=119, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='nv', index=120, number=120, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ny', index=121, number=121, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='oc', index=122, number=122, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='oj', index=123, number=123, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='om', index=124, number=124, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='or', index=125, number=125, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='os', index=126, number=126, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='pa', index=127, number=127, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='pi', index=128, number=128, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='pl', index=129, number=129, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ps', index=130, number=130, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='pt', index=131, number=131, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='qu', index=132, number=132, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='rm', index=133, number=133, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='rn', index=134, number=134, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ro', index=135, number=135, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ru', index=136, number=136, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='rw', index=137, number=137, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sa', index=138, number=138, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sc', index=139, number=139, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sd', index=140, number=140, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='se', index=141, number=141, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sg', index=142, number=142, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='si', index=143, number=143, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sk', index=144, number=144, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sl', index=145, number=145, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sm', index=146, number=146, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sn', index=147, number=147, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='so', index=148, number=148, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sq', index=149, number=149, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sr', index=150, number=150, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ss', index=151, number=151, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='st', index=152, number=152, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='su', index=153, number=153, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sv', index=154, number=154, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='sw', index=155, number=155, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ta', index=156, number=156, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='te', index=157, number=157, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='tg', index=158, number=158, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='th', index=159, number=159, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ti', index=160, number=160, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='tk', index=161, number=161, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='tl', index=162, number=162, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='tn', index=163, number=163, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='to', index=164, number=164, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='tr', index=165, number=165, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ts', index=166, number=166, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='tt', index=167, number=167, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='tw', index=168, number=168, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ty', index=169, number=169, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ug', index=170, number=170, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='uk', index=171, number=171, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ur', index=172, number=172, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='uz', index=173, number=173, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ve', index=174, number=174, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='vi', index=175, number=175, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='vo', index=176, number=176, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='wa', index=177, number=177, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='wo', index=178, number=178, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='xh', index=179, number=179, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='yi', index=180, number=180, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='yo', index=181, number=181, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='za', index=182, number=182, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='zh', index=183, number=183, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='zu', index=184, number=184, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1548, serialized_end=3109, ) @@ -880,807 +881,807 @@ _LANGUAGE_SCRIPT = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_SCRIPT', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Adlm', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Afak', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Aghb', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Ahom', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Arab', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Aran', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Armi', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Armn', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Avst', index=9, number=9, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Bali', index=10, number=10, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Bamu', index=11, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Bass', index=12, number=12, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Batk', index=13, number=13, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Beng', index=14, number=14, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Bhks', index=15, number=15, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Blis', index=16, number=16, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Bopo', index=17, number=17, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Brah', index=18, number=18, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Brai', index=19, number=19, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Bugi', index=20, number=20, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Buhd', index=21, number=21, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cakm', index=22, number=22, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cans', index=23, number=23, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cari', index=24, number=24, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cham', index=25, number=25, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cher', index=26, number=26, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cirt', index=27, number=27, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Copt', index=28, number=28, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cpmn', index=29, number=29, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cprt', index=30, number=30, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cyrl', index=31, number=31, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Cyrs', index=32, number=32, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Deva', index=33, number=33, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Dogr', index=34, number=34, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Dsrt', index=35, number=35, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Dupl', index=36, number=36, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Egyd', index=37, number=37, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Egyh', index=38, number=38, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Egyp', index=39, number=39, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Elba', index=40, number=40, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Elym', index=41, number=41, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Ethi', index=42, number=42, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Geok', index=43, number=43, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Geor', index=44, number=44, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Glag', index=45, number=45, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Gong', index=46, number=46, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Gonm', index=47, number=47, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Goth', index=48, number=48, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Gran', index=49, number=49, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Grek', index=50, number=50, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Gujr', index=51, number=51, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Guru', index=52, number=52, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hanb', index=53, number=53, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hang', index=54, number=54, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hani', index=55, number=55, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hano', index=56, number=56, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hans', index=57, number=57, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hant', index=58, number=58, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hatr', index=59, number=59, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hebr', index=60, number=60, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hira', index=61, number=61, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hluw', index=62, number=62, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hmng', index=63, number=63, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hmnp', index=64, number=64, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hrkt', index=65, number=65, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Hung', index=66, number=66, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Inds', index=67, number=67, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Ital', index=68, number=68, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Jamo', index=69, number=69, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Java', index=70, number=70, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Jpan', index=71, number=71, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Jurc', index=72, number=72, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Kali', index=73, number=73, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Kana', index=74, number=74, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Khar', index=75, number=75, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Khmr', index=76, number=76, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Khoj', index=77, number=77, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Kitl', index=78, number=78, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Kits', index=79, number=79, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Knda', index=80, number=80, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Kore', index=81, number=81, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Kpel', index=82, number=82, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Kthi', index=83, number=83, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Lana', index=84, number=84, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Laoo', index=85, number=85, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Latf', index=86, number=86, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Latg', index=87, number=87, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Latn', index=88, number=88, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Leke', index=89, number=89, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Lepc', index=90, number=90, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Limb', index=91, number=91, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Lina', index=92, number=92, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Linb', index=93, number=93, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Lisu', index=94, number=94, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Loma', index=95, number=95, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Lyci', index=96, number=96, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Lydi', index=97, number=97, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mahj', index=98, number=98, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Maka', index=99, number=99, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mand', index=100, number=100, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mani', index=101, number=101, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Marc', index=102, number=102, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Maya', index=103, number=103, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Medf', index=104, number=104, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mend', index=105, number=105, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Merc', index=106, number=106, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mero', index=107, number=107, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mlym', index=108, number=108, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Modi', index=109, number=109, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mong', index=110, number=110, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Moon', index=111, number=111, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mroo', index=112, number=112, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mtei', index=113, number=113, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mult', index=114, number=114, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Mymr', index=115, number=115, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Nand', index=116, number=116, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Narb', index=117, number=117, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Nbat', index=118, number=118, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Newa', index=119, number=119, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Nkdb', index=120, number=120, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Nkgb', index=121, number=121, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Nkoo', index=122, number=122, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Nshu', index=123, number=123, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Ogam', index=124, number=124, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Olck', index=125, number=125, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Orkh', index=126, number=126, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Orya', index=127, number=127, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Osge', index=128, number=128, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Osma', index=129, number=129, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Palm', index=130, number=130, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Pauc', index=131, number=131, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Perm', index=132, number=132, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Phag', index=133, number=133, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Phli', index=134, number=134, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Phlp', index=135, number=135, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Phlv', index=136, number=136, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Phnx', index=137, number=137, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Plrd', index=138, number=138, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Piqd', index=139, number=139, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Prti', index=140, number=140, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Qaaa', index=141, number=141, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Qabx', index=142, number=142, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Rjng', index=143, number=143, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Rohg', index=144, number=144, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Roro', index=145, number=145, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Runr', index=146, number=146, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Samr', index=147, number=147, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sara', index=148, number=148, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sarb', index=149, number=149, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Saur', index=150, number=150, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sgnw', index=151, number=151, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Shaw', index=152, number=152, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Shrd', index=153, number=153, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Shui', index=154, number=154, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sidd', index=155, number=155, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sind', index=156, number=156, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sinh', index=157, number=157, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sogd', index=158, number=158, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sogo', index=159, number=159, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sora', index=160, number=160, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Soyo', index=161, number=161, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sund', index=162, number=162, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Sylo', index=163, number=163, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Syrc', index=164, number=164, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Syre', index=165, number=165, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Syrj', index=166, number=166, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Syrn', index=167, number=167, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tagb', index=168, number=168, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Takr', index=169, number=169, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tale', index=170, number=170, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Talu', index=171, number=171, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Taml', index=172, number=172, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tang', index=173, number=173, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tavt', index=174, number=174, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Telu', index=175, number=175, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Teng', index=176, number=176, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tfng', index=177, number=177, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tglg', index=178, number=178, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Thaa', index=179, number=179, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Thai', index=180, number=180, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tibt', index=181, number=181, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Tirh', index=182, number=182, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Ugar', index=183, number=183, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Vaii', index=184, number=184, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Visp', index=185, number=185, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Wara', index=186, number=186, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Wcho', index=187, number=187, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Wole', index=188, number=188, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Xpeo', index=189, number=189, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Xsux', index=190, number=190, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Yiii', index=191, number=191, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zanb', index=192, number=192, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zinh', index=193, number=193, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zmth', index=194, number=194, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zsye', index=195, number=195, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zsym', index=196, number=196, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zxxx', index=197, number=197, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zyyy', index=198, number=198, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='Zzzz', index=199, number=199, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=3112, serialized_end=5202, ) @@ -1694,2127 +1695,2127 @@ _LOCATION_COUNTRY = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_COUNTRY', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AF', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AX', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AL', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DZ', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AS', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AD', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AO', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AI', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AQ', index=9, number=9, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AG', index=10, number=10, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AR', index=11, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AM', index=12, number=12, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AW', index=13, number=13, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AU', index=14, number=14, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AT', index=15, number=15, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AZ', index=16, number=16, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BS', index=17, number=17, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BH', index=18, number=18, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BD', index=19, number=19, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BB', index=20, number=20, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BY', index=21, number=21, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BE', index=22, number=22, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BZ', index=23, number=23, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BJ', index=24, number=24, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BM', index=25, number=25, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BT', index=26, number=26, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BO', index=27, number=27, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BQ', index=28, number=28, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BA', index=29, number=29, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BW', index=30, number=30, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BV', index=31, number=31, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BR', index=32, number=32, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IO', index=33, number=33, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BN', index=34, number=34, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BG', index=35, number=35, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BF', index=36, number=36, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BI', index=37, number=37, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KH', index=38, number=38, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CM', index=39, number=39, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CA', index=40, number=40, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CV', index=41, number=41, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KY', index=42, number=42, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CF', index=43, number=43, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TD', index=44, number=44, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CL', index=45, number=45, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CN', index=46, number=46, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CX', index=47, number=47, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CC', index=48, number=48, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CO', index=49, number=49, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KM', index=50, number=50, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CG', index=51, number=51, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CD', index=52, number=52, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CK', index=53, number=53, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CR', index=54, number=54, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CI', index=55, number=55, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HR', index=56, number=56, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CU', index=57, number=57, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CW', index=58, number=58, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CY', index=59, number=59, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CZ', index=60, number=60, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DK', index=61, number=61, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DJ', index=62, number=62, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DM', index=63, number=63, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DO', index=64, number=64, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='EC', index=65, number=65, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='EG', index=66, number=66, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SV', index=67, number=67, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GQ', index=68, number=68, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ER', index=69, number=69, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='EE', index=70, number=70, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ET', index=71, number=71, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FK', index=72, number=72, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FO', index=73, number=73, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FJ', index=74, number=74, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FI', index=75, number=75, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FR', index=76, number=76, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GF', index=77, number=77, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PF', index=78, number=78, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TF', index=79, number=79, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GA', index=80, number=80, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GM', index=81, number=81, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GE', index=82, number=82, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DE', index=83, number=83, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GH', index=84, number=84, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GI', index=85, number=85, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GR', index=86, number=86, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GL', index=87, number=87, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GD', index=88, number=88, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GP', index=89, number=89, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GU', index=90, number=90, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GT', index=91, number=91, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GG', index=92, number=92, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GN', index=93, number=93, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GW', index=94, number=94, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GY', index=95, number=95, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HT', index=96, number=96, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HM', index=97, number=97, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VA', index=98, number=98, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HN', index=99, number=99, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HK', index=100, number=100, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HU', index=101, number=101, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IS', index=102, number=102, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IN', index=103, number=103, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ID', index=104, number=104, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IR', index=105, number=105, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IQ', index=106, number=106, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IE', index=107, number=107, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IM', index=108, number=108, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IL', index=109, number=109, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='IT', index=110, number=110, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='JM', index=111, number=111, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='JP', index=112, number=112, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='JE', index=113, number=113, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='JO', index=114, number=114, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KZ', index=115, number=115, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KE', index=116, number=116, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KI', index=117, number=117, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KP', index=118, number=118, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KR', index=119, number=119, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KW', index=120, number=120, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KG', index=121, number=121, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LA', index=122, number=122, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LV', index=123, number=123, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LB', index=124, number=124, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LS', index=125, number=125, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LR', index=126, number=126, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LY', index=127, number=127, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LI', index=128, number=128, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LT', index=129, number=129, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LU', index=130, number=130, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MO', index=131, number=131, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MK', index=132, number=132, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MG', index=133, number=133, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MW', index=134, number=134, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MY', index=135, number=135, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MV', index=136, number=136, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ML', index=137, number=137, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MT', index=138, number=138, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MH', index=139, number=139, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MQ', index=140, number=140, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MR', index=141, number=141, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MU', index=142, number=142, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='YT', index=143, number=143, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MX', index=144, number=144, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FM', index=145, number=145, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MD', index=146, number=146, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MC', index=147, number=147, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MN', index=148, number=148, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ME', index=149, number=149, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MS', index=150, number=150, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MA', index=151, number=151, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MZ', index=152, number=152, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MM', index=153, number=153, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NA', index=154, number=154, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NR', index=155, number=155, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NP', index=156, number=156, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NL', index=157, number=157, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NC', index=158, number=158, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NZ', index=159, number=159, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NI', index=160, number=160, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NE', index=161, number=161, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NG', index=162, number=162, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NU', index=163, number=163, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NF', index=164, number=164, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MP', index=165, number=165, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NO', index=166, number=166, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='OM', index=167, number=167, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PK', index=168, number=168, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PW', index=169, number=169, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PS', index=170, number=170, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PA', index=171, number=171, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PG', index=172, number=172, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PY', index=173, number=173, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PE', index=174, number=174, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PH', index=175, number=175, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PN', index=176, number=176, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PL', index=177, number=177, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PT', index=178, number=178, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PR', index=179, number=179, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='QA', index=180, number=180, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='RE', index=181, number=181, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='RO', index=182, number=182, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='RU', index=183, number=183, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='RW', index=184, number=184, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BL', index=185, number=185, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SH', index=186, number=186, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KN', index=187, number=187, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LC', index=188, number=188, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MF', index=189, number=189, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PM', index=190, number=190, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VC', index=191, number=191, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='WS', index=192, number=192, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SM', index=193, number=193, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ST', index=194, number=194, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SA', index=195, number=195, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SN', index=196, number=196, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='RS', index=197, number=197, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SC', index=198, number=198, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SL', index=199, number=199, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SG', index=200, number=200, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SX', index=201, number=201, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SK', index=202, number=202, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SI', index=203, number=203, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SB', index=204, number=204, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SO', index=205, number=205, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ZA', index=206, number=206, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GS', index=207, number=207, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SS', index=208, number=208, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ES', index=209, number=209, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LK', index=210, number=210, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SD', index=211, number=211, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SR', index=212, number=212, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SJ', index=213, number=213, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SZ', index=214, number=214, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SE', index=215, number=215, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CH', index=216, number=216, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SY', index=217, number=217, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TW', index=218, number=218, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TJ', index=219, number=219, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TZ', index=220, number=220, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TH', index=221, number=221, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TL', index=222, number=222, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TG', index=223, number=223, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TK', index=224, number=224, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TO', index=225, number=225, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TT', index=226, number=226, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TN', index=227, number=227, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TR', index=228, number=228, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TM', index=229, number=229, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TC', index=230, number=230, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TV', index=231, number=231, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='UG', index=232, number=232, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='UA', index=233, number=233, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AE', index=234, number=234, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GB', index=235, number=235, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='US', index=236, number=236, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='UM', index=237, number=237, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='UY', index=238, number=238, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='UZ', index=239, number=239, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VU', index=240, number=240, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VE', index=241, number=241, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VN', index=242, number=242, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VG', index=243, number=243, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VI', index=244, number=244, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='WF', index=245, number=245, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='EH', index=246, number=246, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='YE', index=247, number=247, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ZM', index=248, number=248, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ZW', index=249, number=249, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R001', index=250, number=250, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R002', index=251, number=251, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R015', index=252, number=252, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R012', index=253, number=253, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R818', index=254, number=254, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R434', index=255, number=255, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R504', index=256, number=256, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R729', index=257, number=257, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R788', index=258, number=258, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R732', index=259, number=259, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R202', index=260, number=260, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R014', index=261, number=261, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R086', index=262, number=262, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R108', index=263, number=263, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R174', index=264, number=264, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R262', index=265, number=265, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R232', index=266, number=266, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R231', index=267, number=267, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R260', index=268, number=268, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R404', index=269, number=269, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R450', index=270, number=270, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R454', index=271, number=271, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R480', index=272, number=272, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R175', index=273, number=273, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R508', index=274, number=274, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R638', index=275, number=275, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R646', index=276, number=276, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R690', index=277, number=277, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R706', index=278, number=278, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R728', index=279, number=279, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R800', index=280, number=280, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R834', index=281, number=281, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R894', index=282, number=282, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R716', index=283, number=283, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R017', index=284, number=284, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R024', index=285, number=285, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R120', index=286, number=286, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R140', index=287, number=287, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R148', index=288, number=288, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R178', index=289, number=289, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R180', index=290, number=290, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R226', index=291, number=291, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R266', index=292, number=292, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R678', index=293, number=293, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R018', index=294, number=294, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R072', index=295, number=295, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R748', index=296, number=296, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R426', index=297, number=297, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R516', index=298, number=298, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R710', index=299, number=299, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R011', index=300, number=300, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R204', index=301, number=301, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R854', index=302, number=302, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R132', index=303, number=303, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R384', index=304, number=304, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R270', index=305, number=305, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R288', index=306, number=306, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R324', index=307, number=307, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R624', index=308, number=308, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R430', index=309, number=309, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R466', index=310, number=310, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R478', index=311, number=311, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R562', index=312, number=312, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R566', index=313, number=313, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R654', index=314, number=314, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R686', index=315, number=315, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R694', index=316, number=316, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R768', index=317, number=317, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R019', index=318, number=318, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R419', index=319, number=319, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R029', index=320, number=320, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R660', index=321, number=321, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R028', index=322, number=322, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R533', index=323, number=323, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R044', index=324, number=324, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R052', index=325, number=325, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R535', index=326, number=326, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R092', index=327, number=327, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R136', index=328, number=328, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R192', index=329, number=329, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R531', index=330, number=330, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R212', index=331, number=331, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R214', index=332, number=332, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R308', index=333, number=333, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R312', index=334, number=334, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R332', index=335, number=335, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R388', index=336, number=336, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R474', index=337, number=337, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R500', index=338, number=338, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R630', index=339, number=339, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R652', index=340, number=340, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R659', index=341, number=341, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R662', index=342, number=342, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R663', index=343, number=343, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R670', index=344, number=344, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R534', index=345, number=345, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R780', index=346, number=346, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R796', index=347, number=347, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R850', index=348, number=348, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R013', index=349, number=349, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R084', index=350, number=350, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R188', index=351, number=351, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R222', index=352, number=352, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R320', index=353, number=353, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R340', index=354, number=354, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R484', index=355, number=355, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R558', index=356, number=356, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R591', index=357, number=357, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R005', index=358, number=358, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R032', index=359, number=359, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R068', index=360, number=360, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R074', index=361, number=361, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R076', index=362, number=362, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R152', index=363, number=363, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R170', index=364, number=364, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R218', index=365, number=365, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R238', index=366, number=366, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R254', index=367, number=367, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R328', index=368, number=368, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R600', index=369, number=369, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R604', index=370, number=370, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R239', index=371, number=371, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R740', index=372, number=372, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R858', index=373, number=373, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R862', index=374, number=374, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R021', index=375, number=375, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R060', index=376, number=376, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R124', index=377, number=377, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R304', index=378, number=378, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R666', index=379, number=379, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R840', index=380, number=380, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R010', index=381, number=381, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R142', index=382, number=382, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R143', index=383, number=383, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R398', index=384, number=384, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R417', index=385, number=385, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R762', index=386, number=386, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R795', index=387, number=387, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R860', index=388, number=388, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R030', index=389, number=389, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R156', index=390, number=390, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R344', index=391, number=391, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R446', index=392, number=392, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R408', index=393, number=393, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R392', index=394, number=394, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R496', index=395, number=395, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R410', index=396, number=396, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R035', index=397, number=397, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R096', index=398, number=398, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R116', index=399, number=399, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R360', index=400, number=400, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R418', index=401, number=401, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R458', index=402, number=402, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R104', index=403, number=403, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R608', index=404, number=404, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R702', index=405, number=405, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R764', index=406, number=406, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R626', index=407, number=407, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R704', index=408, number=408, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R034', index=409, number=409, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R004', index=410, number=410, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R050', index=411, number=411, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R064', index=412, number=412, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R356', index=413, number=413, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R364', index=414, number=414, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R462', index=415, number=415, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R524', index=416, number=416, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R586', index=417, number=417, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R144', index=418, number=418, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R145', index=419, number=419, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R051', index=420, number=420, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R031', index=421, number=421, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R048', index=422, number=422, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R196', index=423, number=423, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R268', index=424, number=424, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R368', index=425, number=425, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R376', index=426, number=426, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R400', index=427, number=427, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R414', index=428, number=428, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R422', index=429, number=429, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R512', index=430, number=430, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R634', index=431, number=431, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R682', index=432, number=432, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R275', index=433, number=433, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R760', index=434, number=434, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R792', index=435, number=435, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R784', index=436, number=436, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R887', index=437, number=437, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R150', index=438, number=438, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R151', index=439, number=439, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R112', index=440, number=440, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R100', index=441, number=441, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R203', index=442, number=442, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R348', index=443, number=443, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R616', index=444, number=444, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R498', index=445, number=445, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R642', index=446, number=446, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R643', index=447, number=447, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R703', index=448, number=448, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R804', index=449, number=449, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R154', index=450, number=450, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R248', index=451, number=451, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R830', index=452, number=452, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R831', index=453, number=453, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R832', index=454, number=454, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R680', index=455, number=455, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R208', index=456, number=456, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R233', index=457, number=457, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R234', index=458, number=458, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R246', index=459, number=459, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R352', index=460, number=460, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R372', index=461, number=461, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R833', index=462, number=462, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R428', index=463, number=463, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R440', index=464, number=464, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R578', index=465, number=465, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R744', index=466, number=466, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R752', index=467, number=467, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R826', index=468, number=468, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R039', index=469, number=469, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R008', index=470, number=470, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R020', index=471, number=471, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R070', index=472, number=472, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R191', index=473, number=473, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R292', index=474, number=474, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R300', index=475, number=475, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R336', index=476, number=476, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R380', index=477, number=477, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R470', index=478, number=478, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R499', index=479, number=479, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R807', index=480, number=480, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R620', index=481, number=481, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R674', index=482, number=482, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R688', index=483, number=483, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R705', index=484, number=484, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R724', index=485, number=485, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R155', index=486, number=486, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R040', index=487, number=487, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R056', index=488, number=488, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R250', index=489, number=489, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R276', index=490, number=490, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R438', index=491, number=491, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R442', index=492, number=492, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R492', index=493, number=493, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R528', index=494, number=494, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R756', index=495, number=495, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R009', index=496, number=496, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R053', index=497, number=497, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R036', index=498, number=498, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R162', index=499, number=499, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R166', index=500, number=500, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R334', index=501, number=501, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R554', index=502, number=502, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R574', index=503, number=503, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R054', index=504, number=504, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R242', index=505, number=505, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R540', index=506, number=506, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R598', index=507, number=507, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R090', index=508, number=508, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R548', index=509, number=509, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R057', index=510, number=510, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R316', index=511, number=511, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R296', index=512, number=512, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R584', index=513, number=513, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R583', index=514, number=514, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R520', index=515, number=515, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R580', index=516, number=516, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R585', index=517, number=517, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R581', index=518, number=518, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R061', index=519, number=519, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R016', index=520, number=520, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R184', index=521, number=521, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R258', index=522, number=522, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R570', index=523, number=523, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R612', index=524, number=524, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R882', index=525, number=525, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R772', index=526, number=526, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R776', index=527, number=527, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R798', index=528, number=528, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='R876', index=529, number=529, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=5337, serialized_end=10561, ) @@ -3834,77 +3835,77 @@ _CLAIM = _descriptor.Descriptor( has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='channel', full_name='pb.Claim.channel', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='collection', full_name='pb.Claim.collection', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='repost', full_name='pb.Claim.repost', index=3, number=4, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='title', full_name='pb.Claim.title', index=4, number=8, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='description', full_name='pb.Claim.description', index=5, number=9, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='thumbnail', full_name='pb.Claim.thumbnail', index=6, number=10, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='tags', full_name='pb.Claim.tags', index=7, number=11, type=9, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='languages', full_name='pb.Claim.languages', index=8, number=12, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='locations', full_name='pb.Claim.locations', index=9, number=13, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -3931,77 +3932,77 @@ _STREAM = _descriptor.Descriptor( has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='author', full_name='pb.Stream.author', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='license', full_name='pb.Stream.license', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='license_url', full_name='pb.Stream.license_url', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='release_time', full_name='pb.Stream.release_time', index=4, number=5, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='fee', full_name='pb.Stream.fee', index=5, number=6, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='image', full_name='pb.Stream.image', index=6, number=10, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='video', full_name='pb.Stream.video', index=7, number=11, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='audio', full_name='pb.Stream.audio', index=8, number=12, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='software', full_name='pb.Stream.software', index=9, number=13, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4028,42 +4029,42 @@ _CHANNEL = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='email', full_name='pb.Channel.email', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='website_url', full_name='pb.Channel.website_url', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='cover', full_name='pb.Channel.cover', index=3, number=4, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='featured', full_name='pb.Channel.featured', index=4, number=5, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4087,14 +4088,14 @@ _CLAIMREFERENCE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4118,14 +4119,14 @@ _CLAIMLIST = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='claim_references', full_name='pb.ClaimList.claim_references', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], @@ -4133,7 +4134,7 @@ _CLAIMLIST = _descriptor.Descriptor( enum_types=[ _CLAIMLIST_LISTTYPE, ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4157,56 +4158,56 @@ _SOURCE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='name', full_name='pb.Source.name', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='size', full_name='pb.Source.size', index=2, number=3, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='media_type', full_name='pb.Source.media_type', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='url', full_name='pb.Source.url', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sd_hash', full_name='pb.Source.sd_hash', index=5, number=6, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='bt_infohash', full_name='pb.Source.bt_infohash', index=6, number=7, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4230,21 +4231,21 @@ _FEE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='address', full_name='pb.Fee.address', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='amount', full_name='pb.Fee.amount', index=2, number=3, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], @@ -4252,7 +4253,7 @@ _FEE = _descriptor.Descriptor( enum_types=[ _FEE_CURRENCY, ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4276,21 +4277,21 @@ _IMAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='height', full_name='pb.Image.height', index=1, number=2, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4314,35 +4315,35 @@ _VIDEO = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='height', full_name='pb.Video.height', index=1, number=2, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='duration', full_name='pb.Video.duration', index=2, number=3, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='audio', full_name='pb.Video.audio', index=3, number=15, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4366,14 +4367,14 @@ _AUDIO = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4397,7 +4398,7 @@ _SOFTWARE = _descriptor.Descriptor( has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], @@ -4405,7 +4406,7 @@ _SOFTWARE = _descriptor.Descriptor( enum_types=[ _SOFTWARE_OS, ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4429,21 +4430,21 @@ _LANGUAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='script', full_name='pb.Language.script', index=1, number=2, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='region', full_name='pb.Language.region', index=2, number=3, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], @@ -4452,7 +4453,7 @@ _LANGUAGE = _descriptor.Descriptor( _LANGUAGE_LANGUAGE, _LANGUAGE_SCRIPT, ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4476,42 +4477,42 @@ _LOCATION = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='state', full_name='pb.Location.state', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='city', full_name='pb.Location.city', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='code', full_name='pb.Location.code', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='latitude', full_name='pb.Location.latitude', index=4, number=5, type=17, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='longitude', full_name='pb.Location.longitude', index=5, number=6, type=17, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], @@ -4519,7 +4520,7 @@ _LOCATION = _descriptor.Descriptor( enum_types=[ _LOCATION_COUNTRY, ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -4595,7 +4596,6 @@ DESCRIPTOR.message_types_by_name['Audio'] = _AUDIO DESCRIPTOR.message_types_by_name['Software'] = _SOFTWARE DESCRIPTOR.message_types_by_name['Language'] = _LANGUAGE DESCRIPTOR.message_types_by_name['Location'] = _LOCATION -_sym_db.RegisterFileDescriptor(DESCRIPTOR) Claim = _reflection.GeneratedProtocolMessageType('Claim', (_message.Message,), dict( DESCRIPTOR = _CLAIM, diff --git a/lbry/schema/types/v2/purchase_pb2.py b/lbry/schema/types/v2/purchase_pb2.py index c9fc673ae..a2f02e584 100644 --- a/lbry/schema/types/v2/purchase_pb2.py +++ b/lbry/schema/types/v2/purchase_pb2.py @@ -7,6 +7,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -18,9 +19,9 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='purchase.proto', package='pb', syntax='proto3', - serialized_options=None, serialized_pb=_b('\n\x0epurchase.proto\x12\x02pb\"\x1e\n\x08Purchase\x12\x12\n\nclaim_hash\x18\x01 \x01(\x0c\x62\x06proto3') ) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -38,14 +39,14 @@ _PURCHASE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -56,7 +57,6 @@ _PURCHASE = _descriptor.Descriptor( ) DESCRIPTOR.message_types_by_name['Purchase'] = _PURCHASE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) Purchase = _reflection.GeneratedProtocolMessageType('Purchase', (_message.Message,), dict( DESCRIPTOR = _PURCHASE, diff --git a/lbry/schema/types/v2/result_pb2.py b/lbry/schema/types/v2/result_pb2.py index 8993203e2..784e6d7fe 100644 --- a/lbry/schema/types/v2/result_pb2.py +++ b/lbry/schema/types/v2/result_pb2.py @@ -7,6 +7,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -18,9 +19,9 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='result.proto', package='pb', syntax='proto3', - serialized_options=None, - serialized_pb=_b('\n\x0cresult.proto\x12\x02pb\"b\n\x07Outputs\x12\x18\n\x04txos\x18\x01 \x03(\x0b\x32\n.pb.Output\x12\x1e\n\nextra_txos\x18\x02 \x03(\x0b\x32\n.pb.Output\x12\r\n\x05total\x18\x03 \x01(\r\x12\x0e\n\x06offset\x18\x04 \x01(\r\"{\n\x06Output\x12\x0f\n\x07tx_hash\x18\x01 \x01(\x0c\x12\x0c\n\x04nout\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x1e\n\x05\x63laim\x18\x07 \x01(\x0b\x32\r.pb.ClaimMetaH\x00\x12\x1a\n\x05\x65rror\x18\x0f \x01(\x0b\x32\t.pb.ErrorH\x00\x42\x06\n\x04meta\"\xaf\x03\n\tClaimMeta\x12\x1b\n\x07\x63hannel\x18\x01 \x01(\x0b\x32\n.pb.Output\x12\x1a\n\x06repost\x18\x02 \x01(\x0b\x32\n.pb.Output\x12\x11\n\tshort_url\x18\x03 \x01(\t\x12\x15\n\rcanonical_url\x18\x04 \x01(\t\x12\x16\n\x0eis_controlling\x18\x05 \x01(\x08\x12\x18\n\x10take_over_height\x18\x06 \x01(\r\x12\x17\n\x0f\x63reation_height\x18\x07 \x01(\r\x12\x19\n\x11\x61\x63tivation_height\x18\x08 \x01(\r\x12\x19\n\x11\x65xpiration_height\x18\t \x01(\r\x12\x19\n\x11\x63laims_in_channel\x18\n \x01(\r\x12\x10\n\x08reposted\x18\x0b \x01(\r\x12\x18\n\x10\x65\x66\x66\x65\x63tive_amount\x18\x14 \x01(\x04\x12\x16\n\x0esupport_amount\x18\x15 \x01(\x04\x12\x16\n\x0etrending_group\x18\x16 \x01(\r\x12\x16\n\x0etrending_mixed\x18\x17 \x01(\x02\x12\x16\n\x0etrending_local\x18\x18 \x01(\x02\x12\x17\n\x0ftrending_global\x18\x19 \x01(\x02\"i\n\x05\x45rror\x12\x1c\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x0e.pb.Error.Code\x12\x0c\n\x04text\x18\x02 \x01(\t\"4\n\x04\x43ode\x12\x10\n\x0cUNKNOWN_CODE\x10\x00\x12\r\n\tNOT_FOUND\x10\x01\x12\x0b\n\x07INVALID\x10\x02\x62\x06proto3') + serialized_pb=_b('\n\x0cresult.proto\x12\x02pb\"\x97\x01\n\x07Outputs\x12\x18\n\x04txos\x18\x01 \x03(\x0b\x32\n.pb.Output\x12\x1e\n\nextra_txos\x18\x02 \x03(\x0b\x32\n.pb.Output\x12\x1c\n\x07\x62locked\x18\x03 \x03(\x0b\x32\x0b.pb.Blocked\x12\r\n\x05total\x18\x04 \x01(\r\x12\x0e\n\x06offset\x18\x05 \x01(\r\x12\x15\n\rblocked_total\x18\x06 \x01(\r\"{\n\x06Output\x12\x0f\n\x07tx_hash\x18\x01 \x01(\x0c\x12\x0c\n\x04nout\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x1e\n\x05\x63laim\x18\x07 \x01(\x0b\x32\r.pb.ClaimMetaH\x00\x12\x1a\n\x05\x65rror\x18\x0f \x01(\x0b\x32\t.pb.ErrorH\x00\x42\x06\n\x04meta\"\xaf\x03\n\tClaimMeta\x12\x1b\n\x07\x63hannel\x18\x01 \x01(\x0b\x32\n.pb.Output\x12\x1a\n\x06repost\x18\x02 \x01(\x0b\x32\n.pb.Output\x12\x11\n\tshort_url\x18\x03 \x01(\t\x12\x15\n\rcanonical_url\x18\x04 \x01(\t\x12\x16\n\x0eis_controlling\x18\x05 \x01(\x08\x12\x18\n\x10take_over_height\x18\x06 \x01(\r\x12\x17\n\x0f\x63reation_height\x18\x07 \x01(\r\x12\x19\n\x11\x61\x63tivation_height\x18\x08 \x01(\r\x12\x19\n\x11\x65xpiration_height\x18\t \x01(\r\x12\x19\n\x11\x63laims_in_channel\x18\n \x01(\r\x12\x10\n\x08reposted\x18\x0b \x01(\r\x12\x18\n\x10\x65\x66\x66\x65\x63tive_amount\x18\x14 \x01(\x04\x12\x16\n\x0esupport_amount\x18\x15 \x01(\x04\x12\x16\n\x0etrending_group\x18\x16 \x01(\r\x12\x16\n\x0etrending_mixed\x18\x17 \x01(\x02\x12\x16\n\x0etrending_local\x18\x18 \x01(\x02\x12\x17\n\x0ftrending_global\x18\x19 \x01(\x02\"\x94\x01\n\x05\x45rror\x12\x1c\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x0e.pb.Error.Code\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x1c\n\x07\x62locked\x18\x03 \x01(\x0b\x32\x0b.pb.Blocked\"A\n\x04\x43ode\x12\x10\n\x0cUNKNOWN_CODE\x10\x00\x12\r\n\tNOT_FOUND\x10\x01\x12\x0b\n\x07INVALID\x10\x02\x12\x0b\n\x07\x42LOCKED\x10\x03\"j\n\x07\x42locked\x12\r\n\x05\x63ount\x18\x01 \x01(\r\x12\x1d\n\x13reposted_in_channel\x18\x02 \x01(\x0cH\x00\x12\x14\n\nin_channel\x18\x03 \x01(\x0cH\x00\x12\x11\n\x07has_tag\x18\x04 \x01(\tH\x00\x42\x08\n\x06reasonb\x06proto3') ) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -32,21 +33,25 @@ _ERROR_CODE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_CODE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NOT_FOUND', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='INVALID', index=2, number=2, - serialized_options=None, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='BLOCKED', index=3, number=3, + options=None, type=None), ], containing_type=None, - serialized_options=None, - serialized_start=732, - serialized_end=784, + options=None, + serialized_start=817, + serialized_end=882, ) _sym_db.RegisterEnumDescriptor(_ERROR_CODE) @@ -64,42 +69,56 @@ _OUTPUTS = _descriptor.Descriptor( has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='extra_txos', full_name='pb.Outputs.extra_txos', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( - name='total', full_name='pb.Outputs.total', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, + name='blocked', full_name='pb.Outputs.blocked', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( - name='offset', full_name='pb.Outputs.offset', index=3, + name='total', full_name='pb.Outputs.total', index=3, number=4, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), + _descriptor.FieldDescriptor( + name='offset', full_name='pb.Outputs.offset', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='blocked_total', full_name='pb.Outputs.blocked_total', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], oneofs=[ ], - serialized_start=20, - serialized_end=118, + serialized_start=21, + serialized_end=172, ) @@ -116,42 +135,42 @@ _OUTPUT = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='nout', full_name='pb.Output.nout', index=1, number=2, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='height', full_name='pb.Output.height', index=2, number=3, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='claim', full_name='pb.Output.claim', index=3, number=7, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='error', full_name='pb.Output.error', index=4, number=15, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -160,8 +179,8 @@ _OUTPUT = _descriptor.Descriptor( name='meta', full_name='pb.Output.meta', index=0, containing_type=None, fields=[]), ], - serialized_start=120, - serialized_end=243, + serialized_start=174, + serialized_end=297, ) @@ -178,133 +197,133 @@ _CLAIMMETA = _descriptor.Descriptor( has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='repost', full_name='pb.ClaimMeta.repost', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='short_url', full_name='pb.ClaimMeta.short_url', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='canonical_url', full_name='pb.ClaimMeta.canonical_url', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_controlling', full_name='pb.ClaimMeta.is_controlling', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='take_over_height', full_name='pb.ClaimMeta.take_over_height', index=5, number=6, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='creation_height', full_name='pb.ClaimMeta.creation_height', index=6, number=7, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='activation_height', full_name='pb.ClaimMeta.activation_height', index=7, number=8, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='expiration_height', full_name='pb.ClaimMeta.expiration_height', index=8, number=9, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='claims_in_channel', full_name='pb.ClaimMeta.claims_in_channel', index=9, number=10, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='reposted', full_name='pb.ClaimMeta.reposted', index=10, number=11, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='effective_amount', full_name='pb.ClaimMeta.effective_amount', index=11, number=20, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='support_amount', full_name='pb.ClaimMeta.support_amount', index=12, number=21, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='trending_group', full_name='pb.ClaimMeta.trending_group', index=13, number=22, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='trending_mixed', full_name='pb.ClaimMeta.trending_mixed', index=14, number=23, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='trending_local', full_name='pb.ClaimMeta.trending_local', index=15, number=24, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='trending_global', full_name='pb.ClaimMeta.trending_global', index=16, number=25, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], oneofs=[ ], - serialized_start=246, - serialized_end=677, + serialized_start=300, + serialized_end=731, ) @@ -321,14 +340,21 @@ _ERROR = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='text', full_name='pb.Error.text', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), + _descriptor.FieldDescriptor( + name='blocked', full_name='pb.Error.blocked', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), ], extensions=[ ], @@ -336,18 +362,74 @@ _ERROR = _descriptor.Descriptor( enum_types=[ _ERROR_CODE, ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto3', extension_ranges=[], oneofs=[ ], - serialized_start=679, - serialized_end=784, + serialized_start=734, + serialized_end=882, +) + + +_BLOCKED = _descriptor.Descriptor( + name='Blocked', + full_name='pb.Blocked', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='count', full_name='pb.Blocked.count', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reposted_in_channel', full_name='pb.Blocked.reposted_in_channel', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='in_channel', full_name='pb.Blocked.in_channel', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='has_tag', full_name='pb.Blocked.has_tag', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='reason', full_name='pb.Blocked.reason', + index=0, containing_type=None, fields=[]), + ], + serialized_start=884, + serialized_end=990, ) _OUTPUTS.fields_by_name['txos'].message_type = _OUTPUT _OUTPUTS.fields_by_name['extra_txos'].message_type = _OUTPUT +_OUTPUTS.fields_by_name['blocked'].message_type = _BLOCKED _OUTPUT.fields_by_name['claim'].message_type = _CLAIMMETA _OUTPUT.fields_by_name['error'].message_type = _ERROR _OUTPUT.oneofs_by_name['meta'].fields.append( @@ -359,12 +441,22 @@ _OUTPUT.fields_by_name['error'].containing_oneof = _OUTPUT.oneofs_by_name['meta' _CLAIMMETA.fields_by_name['channel'].message_type = _OUTPUT _CLAIMMETA.fields_by_name['repost'].message_type = _OUTPUT _ERROR.fields_by_name['code'].enum_type = _ERROR_CODE +_ERROR.fields_by_name['blocked'].message_type = _BLOCKED _ERROR_CODE.containing_type = _ERROR +_BLOCKED.oneofs_by_name['reason'].fields.append( + _BLOCKED.fields_by_name['reposted_in_channel']) +_BLOCKED.fields_by_name['reposted_in_channel'].containing_oneof = _BLOCKED.oneofs_by_name['reason'] +_BLOCKED.oneofs_by_name['reason'].fields.append( + _BLOCKED.fields_by_name['in_channel']) +_BLOCKED.fields_by_name['in_channel'].containing_oneof = _BLOCKED.oneofs_by_name['reason'] +_BLOCKED.oneofs_by_name['reason'].fields.append( + _BLOCKED.fields_by_name['has_tag']) +_BLOCKED.fields_by_name['has_tag'].containing_oneof = _BLOCKED.oneofs_by_name['reason'] DESCRIPTOR.message_types_by_name['Outputs'] = _OUTPUTS DESCRIPTOR.message_types_by_name['Output'] = _OUTPUT DESCRIPTOR.message_types_by_name['ClaimMeta'] = _CLAIMMETA DESCRIPTOR.message_types_by_name['Error'] = _ERROR -_sym_db.RegisterFileDescriptor(DESCRIPTOR) +DESCRIPTOR.message_types_by_name['Blocked'] = _BLOCKED Outputs = _reflection.GeneratedProtocolMessageType('Outputs', (_message.Message,), dict( DESCRIPTOR = _OUTPUTS, @@ -394,5 +486,12 @@ Error = _reflection.GeneratedProtocolMessageType('Error', (_message.Message,), d )) _sym_db.RegisterMessage(Error) +Blocked = _reflection.GeneratedProtocolMessageType('Blocked', (_message.Message,), dict( + DESCRIPTOR = _BLOCKED, + __module__ = 'result_pb2' + # @@protoc_insertion_point(class_scope:pb.Blocked) + )) +_sym_db.RegisterMessage(Blocked) + # @@protoc_insertion_point(module_scope) diff --git a/lbry/wallet/ledger.py b/lbry/wallet/ledger.py index 6721c6ff6..e229ca14f 100644 --- a/lbry/wallet/ledger.py +++ b/lbry/wallet/ledger.py @@ -629,7 +629,7 @@ class Ledger(metaclass=LedgerRegistry): print(record['history'], addresses, tx.id) raise asyncio.TimeoutError('Timed out waiting for transaction.') - async def _inflate_outputs(self, query, accounts): + async def _inflate_outputs(self, query, accounts) -> Tuple[List[Output], dict, int, int]: outputs = Outputs.from_base64(await query) txs = [] if len(outputs.txs) > 0: @@ -652,7 +652,8 @@ class Ledger(metaclass=LedgerRegistry): } for txo in priced_claims: txo.purchase_receipt = receipts.get(txo.claim_id) - return outputs.inflate(txs), outputs.offset, outputs.total + txos, blocked = outputs.inflate(txs) + return txos, blocked, outputs.offset, outputs.total async def resolve(self, accounts, urls): resolve = partial(self.network.retriable_call, self.network.resolve) @@ -669,7 +670,7 @@ class Ledger(metaclass=LedgerRegistry): result[url] = {'error': f'{url} did not resolve to a claim'} return result - async def claim_search(self, accounts, **kwargs) -> Tuple[List[Output], int, int]: + async def claim_search(self, accounts, **kwargs) -> Tuple[List[Output], dict, int, int]: return await self._inflate_outputs(self.network.claim_search(**kwargs), accounts) async def get_claim_by_claim_id(self, accounts, claim_id) -> Output: diff --git a/lbry/wallet/server/coin.py b/lbry/wallet/server/coin.py index 146d5b646..3b7598eb3 100644 --- a/lbry/wallet/server/coin.py +++ b/lbry/wallet/server/coin.py @@ -12,9 +12,9 @@ from lbry.wallet.server.util import cachedproperty, subclasses from lbry.wallet.server.hash import Base58, hash160, double_sha256, hash_to_hex_str, HASHX_LEN from lbry.wallet.server.daemon import Daemon, LBCDaemon from lbry.wallet.server.script import ScriptPubKey, OpCodes -from lbry.wallet.server.leveldb import DB +from lbry.wallet.server.leveldb import LevelDB from lbry.wallet.server.session import LBRYElectrumX, LBRYSessionManager -from lbry.wallet.server.db.writer import LBRYDB +from lbry.wallet.server.db.writer import LBRYLevelDB from lbry.wallet.server.block_processor import LBRYBlockProcessor @@ -41,7 +41,7 @@ class Coin: DAEMON = Daemon BLOCK_PROCESSOR = LBRYBlockProcessor SESSION_MANAGER = LBRYSessionManager - DB = DB + DB = LevelDB HEADER_VALUES = [ 'version', 'prev_block_hash', 'merkle_root', 'timestamp', 'bits', 'nonce' ] @@ -240,7 +240,7 @@ class LBC(Coin): BLOCK_PROCESSOR = LBRYBlockProcessor SESSION_MANAGER = LBRYSessionManager DESERIALIZER = DeserializerSegWit - DB = LBRYDB + DB = LBRYLevelDB NAME = "LBRY" SHORTNAME = "LBC" NET = "mainnet" diff --git a/lbry/wallet/server/db/reader.py b/lbry/wallet/server/db/reader.py index dd5495e67..a6f734fbf 100644 --- a/lbry/wallet/server/db/reader.py +++ b/lbry/wallet/server/db/reader.py @@ -14,7 +14,7 @@ from lbry.wallet.database import query, interpolate from lbry.schema.url import URL, normalize_name from lbry.schema.tags import clean_tags -from lbry.schema.result import Outputs +from lbry.schema.result import Outputs, Censor from lbry.wallet import Ledger, RegTestLedger from .common import CLAIM_TYPES, STREAM_TYPES, COMMON_TAGS @@ -47,7 +47,7 @@ INTEGER_PARAMS = { SEARCH_PARAMS = { 'name', 'text', 'claim_id', 'claim_ids', 'txid', 'nout', 'channel', 'channel_ids', 'not_channel_ids', 'public_key_id', 'claim_type', 'stream_types', 'media_types', 'fee_currency', - 'has_channel_signature', 'signature_valid', 'blocklist_channel_ids', + 'has_channel_signature', 'signature_valid', 'any_tags', 'all_tags', 'not_tags', 'reposted_claim_id', 'any_locations', 'all_locations', 'not_locations', 'any_languages', 'all_languages', 'not_languages', @@ -70,6 +70,7 @@ class ReaderState: ledger: Type[Ledger] query_timeout: float log: logging.Logger + blocked_claims: Dict def close(self): self.db.close() @@ -92,16 +93,22 @@ class ReaderState: ctx: ContextVar[Optional[ReaderState]] = ContextVar('ctx') -def initializer(log, _path, _ledger_name, query_timeout, _measure=False): +def row_factory(cursor, row): + return { + k[0]: (set(row[i].split(',')) if k[0] == 'tags' else row[i]) + for i, k in enumerate(cursor.getdescription()) + } + + +def initializer(log, _path, _ledger_name, query_timeout, _measure=False, blocked_claims=None): db = apsw.Connection(_path, flags=apsw.SQLITE_OPEN_READONLY | apsw.SQLITE_OPEN_URI) - def row_factory(cursor, row): - return {k[0]: row[i] for i, k in enumerate(cursor.getdescription())} db.setrowtrace(row_factory) ctx.set( ReaderState( db=db, stack=[], metrics={}, is_tracking_metrics=_measure, ledger=Ledger if _ledger_name == 'mainnet' else RegTestLedger, - query_timeout=query_timeout, log=log + query_timeout=query_timeout, log=log, + blocked_claims={} if blocked_claims is None else blocked_claims ) ) @@ -159,11 +166,24 @@ def encode_result(result): @measure -def execute_query(sql, values) -> List: +def execute_query(sql, values, row_limit, censor) -> List: context = ctx.get() context.set_query_timeout() try: - return context.db.cursor().execute(sql, values).fetchall() + c = context.db.cursor() + def row_filter(cursor, row): + row = row_factory(cursor, row) + if len(row) > 1 and censor.censor(row): + return + return row + c.setrowtrace(row_filter) + i, rows = 0, [] + for row in c.execute(sql, values): + i += 1 + rows.append(row) + if i >= row_limit: + break + return rows except apsw.Error as err: plain_sql = interpolate(sql, values) if context.is_tracking_metrics: @@ -243,34 +263,6 @@ def _get_claims(cols, for_count=False, **constraints) -> Tuple[str, Dict]: constraints['claim.channel_hash__in'] = [ unhexlify(cid)[::-1] for cid in channel_ids ] - if 'not_channel_ids' in constraints: - not_channel_ids = constraints.pop('not_channel_ids') - if not_channel_ids: - not_channel_ids_binary = [ - unhexlify(ncid)[::-1] for ncid in not_channel_ids - ] - if constraints.get('has_channel_signature', False): - constraints['claim.channel_hash__not_in'] = not_channel_ids_binary - else: - constraints['null_or_not_channel__or'] = { - 'claim.signature_valid__is_null': True, - 'claim.channel_hash__not_in': not_channel_ids_binary - } - if 'blocklist_channel_ids' in constraints: - blocklist_ids = constraints.pop('blocklist_channel_ids') - if blocklist_ids: - blocking_channels = [ - unhexlify(channel_id)[::-1] for channel_id in blocklist_ids - ] - constraints.update({ - f'$blocking_channel{i}': a for i, a in enumerate(blocking_channels) - }) - blocklist = ', '.join([ - f':$blocking_channel{i}' for i in range(len(blocking_channels)) - ]) - constraints['claim.claim_hash__not_in#blocklist_channel_ids'] = f""" - SELECT reposted_claim_hash FROM claim WHERE channel_hash IN ({blocklist}) - """ if 'signature_valid' in constraints: has_channel_signature = constraints.pop('has_channel_signature', False) if has_channel_signature: @@ -319,16 +311,23 @@ def _get_claims(cols, for_count=False, **constraints) -> Tuple[str, Dict]: return query(select, **constraints) -def get_claims(cols, for_count=False, **constraints) -> List: +def get_claims(cols, for_count=False, **constraints) -> Tuple[List, Censor]: if 'channel' in constraints: channel_url = constraints.pop('channel') match = resolve_url(channel_url) if isinstance(match, dict): constraints['channel_hash'] = match['claim_hash'] else: - return [{'row_count': 0}] if cols == 'count(*) as row_count' else [] + return ([{'row_count': 0}] if cols == 'count(*) as row_count' else []), Censor() + censor = Censor( + ctx.get().blocked_claims, + {unhexlify(ncid)[::-1] for ncid in constraints.pop('not_channel_ids', [])}, + set(constraints.pop('not_tags', {})) + ) + row_limit = constraints.pop('limit', 20) + constraints['limit'] = 1000 sql, values = _get_claims(cols, for_count, **constraints) - return execute_query(sql, values) + return execute_query(sql, values, row_limit, censor), censor @measure @@ -336,11 +335,11 @@ def get_claims_count(**constraints) -> int: constraints.pop('offset', None) constraints.pop('limit', None) constraints.pop('order_by', None) - count = get_claims('count(*) as row_count', for_count=True, **constraints) + count, _ = get_claims('count(*) as row_count', for_count=True, **constraints) return count[0]['row_count'] -def _search(**constraints): +def _search(**constraints) -> Tuple[List, Censor]: return get_claims( """ claimtrie.claim_hash as is_controlling, @@ -354,7 +353,11 @@ def _search(**constraints): claim.trending_local, claim.trending_global, claim.short_url, claim.canonical_url, claim.channel_hash, claim.reposted_claim_hash, - claim.signature_valid + claim.signature_valid, + COALESCE( + (SELECT group_concat(tag) FROM tag WHERE tag.claim_hash = claim.claim_hash), + "" + ) as tags """, **constraints ) @@ -365,19 +368,19 @@ def _get_referenced_rows(txo_rows: List[dict]): reposted_txos = [] if repost_hashes: - reposted_txos = _search(**{'claim.claim_hash__in': repost_hashes}) + reposted_txos, _ = _search(**{'claim.claim_hash__in': repost_hashes}) channel_hashes |= set(filter(None, map(itemgetter('channel_hash'), reposted_txos))) channel_txos = [] if channel_hashes: - channel_txos = _search(**{'claim.claim_hash__in': channel_hashes}) + channel_txos, _ = _search(**{'claim.claim_hash__in': channel_hashes}) # channels must come first for client side inflation to work properly return channel_txos + reposted_txos @measure -def search(constraints) -> Tuple[List, List, int, int]: +def search(constraints) -> Tuple[List, List, int, int, Censor]: assert set(constraints).issubset(SEARCH_PARAMS), \ f"Search query contains invalid arguments: {set(constraints).difference(SEARCH_PARAMS)}" total = None @@ -387,9 +390,9 @@ def search(constraints) -> Tuple[List, List, int, int]: constraints['limit'] = min(abs(constraints.get('limit', 10)), 50) if 'order_by' not in constraints: constraints['order_by'] = ["claim_hash"] - txo_rows = _search(**constraints) + txo_rows, censor = _search(**constraints) extra_txo_rows = _get_referenced_rows(txo_rows) - return txo_rows, extra_txo_rows, constraints['offset'], total + return txo_rows, extra_txo_rows, constraints['offset'], total, censor @measure @@ -415,7 +418,7 @@ def resolve_url(raw_url): query['is_controlling'] = True else: query['order_by'] = ['^creation_height'] - matches = _search(**query, limit=1) + matches, _ = _search(**query, limit=1) if matches: channel = matches[0] else: @@ -433,7 +436,7 @@ def resolve_url(raw_url): query['signature_valid'] = 1 elif set(query) == {'name'}: query['is_controlling'] = 1 - matches = _search(**query, limit=1) + matches, _ = _search(**query, limit=1) if matches: return matches[0] else: @@ -445,10 +448,6 @@ def resolve_url(raw_url): def _apply_constraints_for_array_attributes(constraints, attr, cleaner, for_count=False): any_items = set(cleaner(constraints.pop(f'any_{attr}s', []))[:ATTRIBUTE_ARRAY_MAX_LENGTH]) all_items = set(cleaner(constraints.pop(f'all_{attr}s', []))[:ATTRIBUTE_ARRAY_MAX_LENGTH]) - not_items = set(cleaner(constraints.pop(f'not_{attr}s', []))[:ATTRIBUTE_ARRAY_MAX_LENGTH]) - - all_items = {item for item in all_items if item not in not_items} - any_items = {item for item in any_items if item not in not_items} any_queries = {} @@ -526,23 +525,3 @@ def _apply_constraints_for_array_attributes(constraints, attr, cleaner, for_coun AND {attr} IN ({values}) ) """ - - if not_items: - constraints.update({ - f'$not_{attr}{i}': item for i, item in enumerate(not_items) - }) - values = ', '.join( - f':$not_{attr}{i}' for i in range(len(not_items)) - ) - if for_count: - constraints[f'claim.claim_hash__not_in#_not_{attr}'] = f""" - SELECT claim_hash FROM {attr} WHERE {attr} IN ({values}) - """ - else: - constraints[f'#_not_{attr}'] = f""" - NOT EXISTS( - SELECT 1 FROM {attr} WHERE - claim.claim_hash={attr}.claim_hash - AND {attr} IN ({values}) - ) - """ diff --git a/lbry/wallet/server/db/writer.py b/lbry/wallet/server/db/writer.py index 094694f34..f5123b824 100644 --- a/lbry/wallet/server/db/writer.py +++ b/lbry/wallet/server/db/writer.py @@ -4,8 +4,10 @@ from typing import Union, Tuple, Set, List from itertools import chain from decimal import Decimal from collections import namedtuple +from multiprocessing import Manager +from binascii import unhexlify -from lbry.wallet.server.leveldb import DB +from lbry.wallet.server.leveldb import LevelDB from lbry.wallet.server.util import class_logger from lbry.wallet.database import query, constraints_to_sql @@ -166,13 +168,18 @@ class SQLDB: CREATE_TAG_TABLE ) - def __init__(self, main, path): + def __init__(self, main, path: str, filtering_channels: list): self.main = main self._db_path = path self.db = None + self.state_manager = None + self.blocked_claims = None self.logger = class_logger(__name__, self.__class__.__name__) - self.ledger = Ledger if self.main.coin.NET == 'mainnet' else RegTestLedger + self.ledger = Ledger if main.coin.NET == 'mainnet' else RegTestLedger self._fts_synced = False + self.filtering_channel_hashes = { + unhexlify(channel_id)[::-1] for channel_id in filtering_channels if channel_id + } def open(self): self.db = apsw.Connection( @@ -192,10 +199,27 @@ class SQLDB: self.execute(self.CREATE_TABLES_QUERY) register_canonical_functions(self.db) register_trending_functions(self.db) + self.state_manager = Manager() + self.blocked_claims = self.state_manager.dict() + self.update_blocked_claims() def close(self): if self.db is not None: self.db.close() + if self.state_manager is not None: + self.state_manager.shutdown() + + def update_blocked_claims(self): + sql = query( + "SELECT channel_hash, reposted_claim_hash FROM claim", + reposted_claim_hash__is_not_null=1, + channel_hash__in=self.filtering_channel_hashes + ) + blocked_claims = {} + for blocked_claim in self.execute(*sql): + blocked_claims[blocked_claim.reposted_claim_hash] = blocked_claim.channel_hash + self.blocked_claims.clear() + self.blocked_claims.update(blocked_claims) @staticmethod def _insert_sql(table: str, data: dict) -> Tuple[str, list]: @@ -585,6 +609,12 @@ class SQLDB: """, [(channel_hash,) for channel_hash in all_channel_keys.keys()]) sub_timer.stop() + sub_timer = timer.add_timer('update blocked claims list') + sub_timer.start() + if self.filtering_channel_hashes.intersection(all_channel_keys): + self.update_blocked_claims() + sub_timer.stop() + def _update_support_amount(self, claim_hashes): if claim_hashes: self.execute(f""" @@ -778,12 +808,13 @@ class SQLDB: self._fts_synced = True -class LBRYDB(DB): +class LBRYLevelDB(LevelDB): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) path = os.path.join(self.env.db_dir, 'claims.db') - self.sql = SQLDB(self, path) + # space separated list of channel URIs used for filtering bad content + self.sql = SQLDB(self, path, self.env.default('FILTERING_CHANNELS_IDS', '').split(' ')) def close(self): super().close() diff --git a/lbry/wallet/server/leveldb.py b/lbry/wallet/server/leveldb.py index 6f5ff5b46..0ce465389 100644 --- a/lbry/wallet/server/leveldb.py +++ b/lbry/wallet/server/leveldb.py @@ -47,7 +47,7 @@ class FlushData: tip = attr.ib() -class DB: +class LevelDB: """Simple wrapper of the backend database for querying. Performs no DB update, though the DB will be cleaned on opening if diff --git a/lbry/wallet/server/session.py b/lbry/wallet/server/session.py index 786993f8c..63b279d40 100644 --- a/lbry/wallet/server/session.py +++ b/lbry/wallet/server/session.py @@ -23,7 +23,7 @@ from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor import lbry from lbry.wallet.server.block_processor import LBRYBlockProcessor -from lbry.wallet.server.db.writer import LBRYDB +from lbry.wallet.server.db.writer import LBRYLevelDB from lbry.wallet.server.db import reader from lbry.wallet.server.websocket import AdminWebSocket from lbry.wallet.server.metrics import ServerLoadData, APICallMetrics @@ -40,8 +40,6 @@ from lbry.wallet.server.daemon import DaemonError from lbry.wallet.server.peers import PeerManager if typing.TYPE_CHECKING: from lbry.wallet.server.env import Env - from lbry.wallet.server.leveldb import DB - from lbry.wallet.server.block_processor import BlockProcessor from lbry.wallet.server.mempool import MemPool from lbry.wallet.server.daemon import Daemon @@ -120,7 +118,7 @@ class SessionGroup: class SessionManager: """Holds global state about all sessions.""" - def __init__(self, env: 'Env', db: 'DB', bp: 'BlockProcessor', daemon: 'Daemon', mempool: 'MemPool', + def __init__(self, env: 'Env', db: LBRYLevelDB, bp: LBRYBlockProcessor, daemon: 'Daemon', mempool: 'MemPool', shutdown_event: asyncio.Event): env.max_send = max(350000, env.max_send) self.env = env @@ -750,7 +748,7 @@ class LBRYSessionManager(SessionManager): args = dict( initializer=reader.initializer, initargs=(self.logger, path, self.env.coin.NET, self.env.database_query_timeout, - self.env.track_metrics) + self.env.track_metrics, self.db.sql.blocked_claims) ) if self.env.max_query_workers is not None and self.env.max_query_workers == 0: self.query_executor = ThreadPoolExecutor(max_workers=1, **args) @@ -793,10 +791,7 @@ class LBRYElectrumX(SessionBase): # fixme: this is a rebase hack, we need to go through ChainState instead later self.daemon = self.session_mgr.daemon self.bp: LBRYBlockProcessor = self.session_mgr.bp - self.db: LBRYDB = self.bp.db - # space separated list of channel URIs used for filtering bad content - filtering_channels = self.env.default('FILTERING_CHANNELS_IDS', '') - self.filtering_channels_ids = list(filter(None, filtering_channels.split(' '))) + self.db: LBRYLevelDB = self.bp.db @classmethod def protocol_min_max_strings(cls): @@ -936,7 +931,6 @@ class LBRYElectrumX(SessionBase): async def claimtrie_search(self, **kwargs): if kwargs: - kwargs.setdefault('blocklist_channel_ids', []).extend(self.filtering_channels_ids) return await self.run_and_cache_query('search', reader.search_to_bytes, kwargs) async def claimtrie_resolve(self, *urls): diff --git a/tests/integration/blockchain/test_claim_commands.py b/tests/integration/blockchain/test_claim_commands.py index 18153c984..3ca9fa3dc 100644 --- a/tests/integration/blockchain/test_claim_commands.py +++ b/tests/integration/blockchain/test_claim_commands.py @@ -766,7 +766,7 @@ class StreamCommands(ClaimTestCase): ) await self.ledger.stop() await self.ledger.start() - filtered_claim_search = await self.claim_search(name='too_bad') + filtered_claim_search = await self.out(self.daemon.jsonrpc_claim_search(name='too_bad')) self.assertEqual(filtered_claim_search, []) filtered_claim_search = await self.claim_search(name='not_bad') self.assertEqual(len(filtered_claim_search), 1) diff --git a/tests/unit/wallet/server/test_sqldb.py b/tests/unit/wallet/server/test_sqldb.py index 9d08f2b87..995d14c36 100644 --- a/tests/unit/wallet/server/test_sqldb.py +++ b/tests/unit/wallet/server/test_sqldb.py @@ -3,8 +3,8 @@ import ecdsa import hashlib import logging from binascii import hexlify -from lbry.wallet.constants import COIN, NULL_HASH32 +from lbry.wallet.constants import COIN, NULL_HASH32 from lbry.schema.claim import Claim from lbry.wallet.server.db import reader, writer from lbry.wallet.server.coin import LBCRegTest @@ -36,10 +36,13 @@ class TestSQLDB(unittest.TestCase): self.daemon_height = 1 self.coin = LBCRegTest() db_url = 'file:test_sqldb?mode=memory&cache=shared' - self.sql = writer.SQLDB(self, db_url) + self.sql = writer.SQLDB(self, db_url, []) self.addCleanup(self.sql.close) self.sql.open() - reader.initializer(logging.getLogger(__name__), db_url, 'regtest', self.query_timeout) + reader.initializer( + logging.getLogger(__name__), db_url, 'regtest', + self.query_timeout, blocked_claims=self.sql.blocked_claims + ) self.addCleanup(reader.cleanup) self.timer = Timer('BlockProcessor') self._current_height = 0 @@ -74,9 +77,9 @@ class TestSQLDB(unittest.TestCase): Input.spend(channel) ) - def get_stream(self, title, amount, name='foo', channel=None): + def get_stream(self, title, amount, name='foo', channel=None, **kwargs): claim = Claim() - claim.stream.title = title + claim.stream.update(title=title, **kwargs) result = self._make_tx(Output.pay_claim_name_pubkey_hash(amount, name, claim, b'abc')) if channel: result[0].outputs[0].sign(channel) @@ -96,6 +99,14 @@ class TestSQLDB(unittest.TestCase): result[0]._reset() return result + def get_repost(self, claim_id, amount, channel): + claim = Claim() + claim.repost.reference.claim_id = claim_id + result = self._make_tx(Output.pay_claim_name_pubkey_hash(amount, 'repost', claim, b'abc')) + result[0].outputs[0].sign(channel) + result[0]._reset() + return result + def get_abandon(self, tx): claim = Transaction(tx[0].raw).outputs[0] return self._make_tx( @@ -319,7 +330,7 @@ class TestClaimtrie(TestSQLDB): advance, state = self.advance, self.state stream = self.get_stream('Claim A', 10*COIN) advance(10, [stream, self.get_stream_update(stream, 11*COIN)]) - self.assertTrue(reader._search()) + self.assertTrue(reader._search()[0]) def test_double_updates_in_same_block(self): advance, state = self.advance, self.state @@ -327,13 +338,13 @@ class TestClaimtrie(TestSQLDB): advance(10, [stream]) update = self.get_stream_update(stream, 11*COIN) advance(20, [update, self.get_stream_update(update, 9*COIN)]) - self.assertTrue(reader._search()) + self.assertTrue(reader._search()[0]) def test_create_and_abandon_in_same_block(self): advance, state = self.advance, self.state stream = self.get_stream('Claim A', 10*COIN) advance(10, [stream, self.get_abandon(stream)]) - self.assertFalse(reader._search()) + self.assertFalse(reader._search()[0]) def test_update_and_abandon_in_same_block(self): advance, state = self.advance, self.state @@ -341,14 +352,14 @@ class TestClaimtrie(TestSQLDB): advance(10, [stream]) update = self.get_stream_update(stream, 11*COIN) advance(20, [update, self.get_abandon(update)]) - self.assertFalse(reader._search()) + self.assertFalse(reader._search()[0]) def test_create_update_and_delete_in_same_block(self): advance, state = self.advance, self.state stream = self.get_stream('Claim A', 10*COIN) update = self.get_stream_update(stream, 11*COIN) advance(10, [stream, update, self.get_abandon(update)]) - self.assertFalse(reader._search()) + self.assertFalse(reader._search()[0]) def test_support_added_and_removed_in_same_block(self): advance, state = self.advance, self.state @@ -356,7 +367,7 @@ class TestClaimtrie(TestSQLDB): advance(10, [stream]) support = self.get_support(stream, COIN) advance(20, [support, self.get_abandon(support)]) - self.assertEqual(reader._search()[0]['support_amount'], 0) + self.assertEqual(reader._search()[0][0]['support_amount'], 0) @staticmethod def _get_x_with_claim_id_prefix(getter, prefix, cached_iteration=None, **kwargs): @@ -385,7 +396,7 @@ class TestClaimtrie(TestSQLDB): txo_chan_ab = tx_chan_ab[0].outputs[0] advance(1, [tx_chan_a]) advance(2, [tx_chan_ab]) - r_ab, r_a = reader._search(order_by=['creation_height'], limit=2) + (r_ab, r_a), _ = reader._search(order_by=['creation_height'], limit=2) self.assertEqual("@foo#a", r_a['short_url']) self.assertEqual("@foo#ab", r_ab['short_url']) self.assertIsNone(r_a['canonical_url']) @@ -398,7 +409,7 @@ class TestClaimtrie(TestSQLDB): tx_abc = self.get_stream_with_claim_id_prefix('abc', 65) advance(3, [tx_a]) advance(4, [tx_ab, tx_abc]) - r_abc, r_ab, r_a = reader._search(order_by=['creation_height', 'tx_position'], limit=3) + (r_abc, r_ab, r_a), _ = reader._search(order_by=['creation_height', 'tx_position'], limit=3) self.assertEqual("foo#a", r_a['short_url']) self.assertEqual("foo#ab", r_ab['short_url']) self.assertEqual("foo#abc", r_abc['short_url']) @@ -412,51 +423,51 @@ class TestClaimtrie(TestSQLDB): ab2_claim = tx_ab2[0].outputs[0] advance(6, [tx_a2]) advance(7, [tx_ab2]) - r_ab2, r_a2 = reader._search(order_by=['creation_height'], limit=2) + (r_ab2, r_a2), _ = reader._search(order_by=['creation_height'], limit=2) self.assertEqual(f"foo#{a2_claim.claim_id[:2]}", r_a2['short_url']) self.assertEqual(f"foo#{ab2_claim.claim_id[:4]}", r_ab2['short_url']) self.assertEqual("@foo#a/foo#a", r_a2['canonical_url']) self.assertEqual("@foo#a/foo#ab", r_ab2['canonical_url']) - self.assertEqual(2, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0]['claims_in_channel']) + self.assertEqual(2, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0][0]['claims_in_channel']) # change channel public key, invaliding stream claim signatures advance(8, [self.get_channel_update(txo_chan_a, COIN, key=b'a')]) - r_ab2, r_a2 = reader._search(order_by=['creation_height'], limit=2) + (r_ab2, r_a2), _ = reader._search(order_by=['creation_height'], limit=2) self.assertEqual(f"foo#{a2_claim.claim_id[:2]}", r_a2['short_url']) self.assertEqual(f"foo#{ab2_claim.claim_id[:4]}", r_ab2['short_url']) self.assertIsNone(r_a2['canonical_url']) self.assertIsNone(r_ab2['canonical_url']) - self.assertEqual(0, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0]['claims_in_channel']) + self.assertEqual(0, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0][0]['claims_in_channel']) # reinstate previous channel public key (previous stream claim signatures become valid again) channel_update = self.get_channel_update(txo_chan_a, COIN, key=b'c') advance(9, [channel_update]) - r_ab2, r_a2 = reader._search(order_by=['creation_height'], limit=2) + (r_ab2, r_a2), _ = reader._search(order_by=['creation_height'], limit=2) self.assertEqual(f"foo#{a2_claim.claim_id[:2]}", r_a2['short_url']) self.assertEqual(f"foo#{ab2_claim.claim_id[:4]}", r_ab2['short_url']) self.assertEqual("@foo#a/foo#a", r_a2['canonical_url']) self.assertEqual("@foo#a/foo#ab", r_ab2['canonical_url']) - self.assertEqual(2, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0]['claims_in_channel']) - self.assertEqual(0, reader._search(claim_id=txo_chan_ab.claim_id, limit=1)[0]['claims_in_channel']) + self.assertEqual(2, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0][0]['claims_in_channel']) + self.assertEqual(0, reader._search(claim_id=txo_chan_ab.claim_id, limit=1)[0][0]['claims_in_channel']) # change channel of stream - self.assertEqual("@foo#a/foo#ab", reader._search(claim_id=ab2_claim.claim_id, limit=1)[0]['canonical_url']) + self.assertEqual("@foo#a/foo#ab", reader._search(claim_id=ab2_claim.claim_id, limit=1)[0][0]['canonical_url']) tx_ab2 = self.get_stream_update(tx_ab2, COIN, txo_chan_ab) advance(10, [tx_ab2]) - self.assertEqual("@foo#ab/foo#a", reader._search(claim_id=ab2_claim.claim_id, limit=1)[0]['canonical_url']) + self.assertEqual("@foo#ab/foo#a", reader._search(claim_id=ab2_claim.claim_id, limit=1)[0][0]['canonical_url']) # TODO: currently there is a bug where stream leaving a channel does not update that channels claims count - self.assertEqual(2, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0]['claims_in_channel']) + self.assertEqual(2, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0][0]['claims_in_channel']) # TODO: after bug is fixed remove test above and add test below - #self.assertEqual(1, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0]['claims_in_channel']) - self.assertEqual(1, reader._search(claim_id=txo_chan_ab.claim_id, limit=1)[0]['claims_in_channel']) + #self.assertEqual(1, reader._search(claim_id=txo_chan_a.claim_id, limit=1)[0][0]['claims_in_channel']) + self.assertEqual(1, reader._search(claim_id=txo_chan_ab.claim_id, limit=1)[0][0]['claims_in_channel']) # claim abandon updates claims_in_channel advance(11, [self.get_abandon(tx_ab2)]) - self.assertEqual(0, reader._search(claim_id=txo_chan_ab.claim_id, limit=1)[0]['claims_in_channel']) + self.assertEqual(0, reader._search(claim_id=txo_chan_ab.claim_id, limit=1)[0][0]['claims_in_channel']) # delete channel, invaliding stream claim signatures advance(12, [self.get_abandon(channel_update)]) - r_a2, = reader._search(order_by=['creation_height'], limit=1) + (r_a2,), _ = reader._search(order_by=['creation_height'], limit=1) self.assertEqual(f"foo#{a2_claim.claim_id[:2]}", r_a2['short_url']) self.assertIsNone(r_a2['canonical_url']) @@ -514,7 +525,7 @@ class TestTrending(TestSQLDB): self.get_support(up_medium, (20+(window*(2 if window == 7 else 1)))*COIN), self.get_support(up_biggly, (20+(window*(3 if window == 7 else 1)))*COIN), ]) - results = reader._search(order_by=['trending_local']) + results, _ = reader._search(order_by=['trending_local']) self.assertEqual([c.claim_id for c in claims], [hexlify(c['claim_hash'][::-1]).decode() for c in results]) self.assertEqual([10, 6, 2, 0, -2], [int(c['trending_local']) for c in results]) self.assertEqual([53, 38, -32, 0, -6], [int(c['trending_global']) for c in results]) @@ -526,3 +537,60 @@ class TestTrending(TestSQLDB): self.advance(1, [problematic]) self.advance(TRENDING_WINDOW, [self.get_support(problematic, 53000000000)]) self.advance(TRENDING_WINDOW * 2, [self.get_support(problematic, 500000000)]) + + +class TestContentBlocking(TestSQLDB): + + def test_blocking(self): + tx0 = self.get_channel('A Channel', COIN) + a_channel = tx0[0].outputs[0] + tx1 = self.get_stream('Claim One', COIN) + tx2 = self.get_stream('Claim Two', COIN, tags=["mature"], channel=a_channel) + self.advance(1, [tx0, tx1, tx2]) + claim1, claim2 = tx1[0].outputs[0], tx2[0].outputs[0] + + # nothing blocked + results, censor = reader._search(text='Claim') + self.assertEqual(2, len(results)) + self.assertEqual(0, censor.total) + self.assertEqual({}, dict(self.sql.blocked_claims)) + + # block claim reposted to blocking channel + tx = self.get_channel('Blocking Channel', COIN) + channel = tx[0].outputs[0] + self.sql.filtering_channel_hashes.add(channel.claim_hash) + self.advance(2, [tx]) + self.assertEqual({}, dict(self.sql.blocked_claims)) + + tx = self.get_repost(claim1.claim_id, COIN, channel) + reposting_claim = tx[0].outputs[0] + self.advance(3, [tx]) + self.assertEqual( + {reposting_claim.claim.repost.reference.claim_hash: channel.claim_hash}, + dict(self.sql.blocked_claims) + ) + + # claim is blocked from results by repost + results, censor = reader._search(text='Claim') + self.assertEqual(1, len(results)) + self.assertEqual(claim2.claim_hash, results[0]['claim_hash']) + self.assertEqual(1, censor.total) + self.assertEqual({channel.claim_hash: 1}, censor.blocked_claims) + self.assertEqual({}, censor.blocked_channels) + self.assertEqual({}, censor.blocked_tags) + + # claim is blocked from results by repost and tags + results, censor = reader._search(text='Claim', not_tags=["mature"]) + self.assertEqual(0, len(results)) + self.assertEqual(2, censor.total) + self.assertEqual({channel.claim_hash: 1}, censor.blocked_claims) + self.assertEqual({}, censor.blocked_channels) + self.assertEqual({"mature": 1}, censor.blocked_tags) + + # claim is blocked from results by repost and channel + results, censor = reader._search(text='Claim', not_channel_ids=[a_channel.claim_id]) + self.assertEqual(0, len(results)) + self.assertEqual(2, censor.total) + self.assertEqual({channel.claim_hash: 1}, censor.blocked_claims) + self.assertEqual({a_channel.claim_hash: 1}, censor.blocked_channels) + self.assertEqual({}, censor.blocked_tags)