txt2stix 0.0.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- txt2stix/__init__.py +33 -0
- txt2stix/ai_extractor/__init__.py +15 -0
- txt2stix/ai_extractor/anthropic.py +12 -0
- txt2stix/ai_extractor/base.py +87 -0
- txt2stix/ai_extractor/deepseek.py +19 -0
- txt2stix/ai_extractor/gemini.py +18 -0
- txt2stix/ai_extractor/openai.py +15 -0
- txt2stix/ai_extractor/openrouter.py +20 -0
- txt2stix/ai_extractor/prompts.py +164 -0
- txt2stix/ai_extractor/utils.py +85 -0
- txt2stix/attack_flow.py +101 -0
- txt2stix/bundler.py +428 -0
- txt2stix/common.py +23 -0
- txt2stix/extractions.py +59 -0
- txt2stix/includes/__init__.py +0 -0
- txt2stix/includes/extractions/ai/config.yaml +1023 -0
- txt2stix/includes/extractions/lookup/config.yaml +393 -0
- txt2stix/includes/extractions/pattern/config.yaml +609 -0
- txt2stix/includes/helpers/mimetype_filename_extension_list.csv +936 -0
- txt2stix/includes/helpers/stix_relationship_types.txt +41 -0
- txt2stix/includes/helpers/tlds.txt +1446 -0
- txt2stix/includes/helpers/windows_registry_key_prefix.txt +12 -0
- txt2stix/includes/lookups/_README.md +11 -0
- txt2stix/includes/lookups/_generate_lookups.py +247 -0
- txt2stix/includes/lookups/attack_pattern.txt +1 -0
- txt2stix/includes/lookups/campaign.txt +1 -0
- txt2stix/includes/lookups/country_iso3166_alpha2.txt +249 -0
- txt2stix/includes/lookups/course_of_action.txt +1 -0
- txt2stix/includes/lookups/disarm_id_v1_5.txt +345 -0
- txt2stix/includes/lookups/disarm_name_v1_5.txt +347 -0
- txt2stix/includes/lookups/extensions.txt +78 -0
- txt2stix/includes/lookups/identity.txt +1 -0
- txt2stix/includes/lookups/infrastructure.txt +1 -0
- txt2stix/includes/lookups/intrusion_set.txt +1 -0
- txt2stix/includes/lookups/malware.txt +2 -0
- txt2stix/includes/lookups/mitre_atlas_id_v4_5_2.txt +116 -0
- txt2stix/includes/lookups/mitre_atlas_name_v4_5_2.txt +117 -0
- txt2stix/includes/lookups/mitre_attack_enterprise_aliases_v16_0.txt +1502 -0
- txt2stix/includes/lookups/mitre_attack_enterprise_id_v16_0.txt +1656 -0
- txt2stix/includes/lookups/mitre_attack_enterprise_name_v16_0.txt +1765 -0
- txt2stix/includes/lookups/mitre_attack_ics_aliases_v16_0.txt +141 -0
- txt2stix/includes/lookups/mitre_attack_ics_id_v16_0.txt +254 -0
- txt2stix/includes/lookups/mitre_attack_ics_name_v16_0.txt +293 -0
- txt2stix/includes/lookups/mitre_attack_mobile_aliases_v16_0.txt +159 -0
- txt2stix/includes/lookups/mitre_attack_mobile_id_v16_0.txt +277 -0
- txt2stix/includes/lookups/mitre_attack_mobile_name_v16_0.txt +296 -0
- txt2stix/includes/lookups/mitre_capec_id_v3_9.txt +559 -0
- txt2stix/includes/lookups/mitre_capec_name_v3_9.txt +560 -0
- txt2stix/includes/lookups/mitre_cwe_id_v4_15.txt +939 -0
- txt2stix/includes/lookups/mitre_cwe_name_v4_15.txt +939 -0
- txt2stix/includes/lookups/threat_actor.txt +1 -0
- txt2stix/includes/lookups/tld.txt +1422 -0
- txt2stix/includes/lookups/tool.txt +1 -0
- txt2stix/includes/tests/test_cases.yaml +695 -0
- txt2stix/indicator.py +860 -0
- txt2stix/lookups.py +68 -0
- txt2stix/pattern/__init__.py +13 -0
- txt2stix/pattern/extractors/__init__.py +0 -0
- txt2stix/pattern/extractors/base_extractor.py +167 -0
- txt2stix/pattern/extractors/card/README.md +34 -0
- txt2stix/pattern/extractors/card/__init__.py +15 -0
- txt2stix/pattern/extractors/card/amex_card_extractor.py +52 -0
- txt2stix/pattern/extractors/card/diners_card_extractor.py +47 -0
- txt2stix/pattern/extractors/card/discover_card_extractor.py +48 -0
- txt2stix/pattern/extractors/card/jcb_card_extractor.py +43 -0
- txt2stix/pattern/extractors/card/master_card_extractor.py +63 -0
- txt2stix/pattern/extractors/card/union_card_extractor.py +38 -0
- txt2stix/pattern/extractors/card/visa_card_extractor.py +46 -0
- txt2stix/pattern/extractors/crypto/__init__.py +3 -0
- txt2stix/pattern/extractors/crypto/btc_extractor.py +38 -0
- txt2stix/pattern/extractors/directory/__init__.py +10 -0
- txt2stix/pattern/extractors/directory/unix_directory_extractor.py +40 -0
- txt2stix/pattern/extractors/directory/unix_file_path_extractor.py +42 -0
- txt2stix/pattern/extractors/directory/windows_directory_path_extractor.py +47 -0
- txt2stix/pattern/extractors/directory/windows_file_path_extractor.py +42 -0
- txt2stix/pattern/extractors/domain/__init__.py +8 -0
- txt2stix/pattern/extractors/domain/domain_extractor.py +39 -0
- txt2stix/pattern/extractors/domain/hostname_extractor.py +36 -0
- txt2stix/pattern/extractors/domain/sub_domain_extractor.py +49 -0
- txt2stix/pattern/extractors/hashes/__init__.py +16 -0
- txt2stix/pattern/extractors/hashes/md5_extractor.py +16 -0
- txt2stix/pattern/extractors/hashes/sha1_extractor.py +14 -0
- txt2stix/pattern/extractors/hashes/sha224_extractor.py +18 -0
- txt2stix/pattern/extractors/hashes/sha2_256_exactor.py +14 -0
- txt2stix/pattern/extractors/hashes/sha2_512_exactor.py +13 -0
- txt2stix/pattern/extractors/hashes/sha3_256_exactor.py +15 -0
- txt2stix/pattern/extractors/hashes/sha3_512_exactor.py +16 -0
- txt2stix/pattern/extractors/helper.py +64 -0
- txt2stix/pattern/extractors/ip/__init__.py +14 -0
- txt2stix/pattern/extractors/ip/ipv4_cidr_extractor.py +49 -0
- txt2stix/pattern/extractors/ip/ipv4_extractor.py +18 -0
- txt2stix/pattern/extractors/ip/ipv4_port_extractor.py +42 -0
- txt2stix/pattern/extractors/ip/ipv6_cidr_extractor.py +18 -0
- txt2stix/pattern/extractors/ip/ipv6_extractor.py +16 -0
- txt2stix/pattern/extractors/ip/ipv6_port_extractor.py +46 -0
- txt2stix/pattern/extractors/others/__init__.py +22 -0
- txt2stix/pattern/extractors/others/asn_extractor.py +14 -0
- txt2stix/pattern/extractors/others/cpe_extractor.py +29 -0
- txt2stix/pattern/extractors/others/cve_extractor.py +14 -0
- txt2stix/pattern/extractors/others/email_extractor.py +21 -0
- txt2stix/pattern/extractors/others/filename_extractor.py +17 -0
- txt2stix/pattern/extractors/others/iban_extractor.py +15 -0
- txt2stix/pattern/extractors/others/mac_address_extractor.py +13 -0
- txt2stix/pattern/extractors/others/phonenumber_extractor.py +41 -0
- txt2stix/pattern/extractors/others/user_agent_extractor.py +20 -0
- txt2stix/pattern/extractors/others/windows_registry_key_extractor.py +18 -0
- txt2stix/pattern/extractors/url/__init__.py +7 -0
- txt2stix/pattern/extractors/url/url_extractor.py +22 -0
- txt2stix/pattern/extractors/url/url_file_extractor.py +21 -0
- txt2stix/pattern/extractors/url/url_path_extractor.py +74 -0
- txt2stix/retriever.py +126 -0
- txt2stix/stix.py +1 -0
- txt2stix/txt2stix.py +336 -0
- txt2stix/utils.py +86 -0
- txt2stix-0.0.4.dist-info/METADATA +190 -0
- txt2stix-0.0.4.dist-info/RECORD +119 -0
- txt2stix-0.0.4.dist-info/WHEEL +4 -0
- txt2stix-0.0.4.dist-info/entry_points.txt +2 -0
- txt2stix-0.0.4.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
The following script can be run after importing the data -- these scripts will do this for you: https://github.com/muchdogesec/stix2arango/blob/main/utilities/README.md
|
2
|
+
|
3
|
+
Make sure the versions imported, match those in the searches below.
|
4
|
+
|
5
|
+
```shell
|
6
|
+
pip3 install python-arango
|
7
|
+
```
|
8
|
+
|
9
|
+
```shell
|
10
|
+
python3 includes/lookups/_generate_lookups.py
|
11
|
+
```
|
@@ -0,0 +1,247 @@
|
|
1
|
+
import os
|
2
|
+
from arango import ArangoClient
|
3
|
+
|
4
|
+
# Connect to ArangoDB
|
5
|
+
client = ArangoClient()
|
6
|
+
db = client.db('ctibutler_database', username='root', password='')
|
7
|
+
|
8
|
+
# Get the directory where the script is located
|
9
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
10
|
+
|
11
|
+
# Define queries and output files
|
12
|
+
queries = {
|
13
|
+
"mitre_cwe_id_v4_15.txt":
|
14
|
+
"""
|
15
|
+
FOR doc IN mitre_cwe_vertex_collection
|
16
|
+
FILTER doc._stix2arango_note == "version=4_15"
|
17
|
+
AND IS_ARRAY(doc.external_references)
|
18
|
+
AND doc.x_mitre_deprecated != true
|
19
|
+
AND doc.revoked != true
|
20
|
+
AND doc.type == "weakness"
|
21
|
+
AND doc.name != null
|
22
|
+
AND !CONTAINS(doc.name, "DEPRECATED:")
|
23
|
+
FOR reference IN doc.external_references
|
24
|
+
FILTER reference.source_name == "cwe"
|
25
|
+
SORT reference.external_id ASC
|
26
|
+
RETURN reference.external_id
|
27
|
+
""",
|
28
|
+
"mitre_cwe_name_v4_15.txt":
|
29
|
+
"""
|
30
|
+
FOR doc IN mitre_cwe_vertex_collection
|
31
|
+
FILTER doc._stix2arango_note == "version=4_15"
|
32
|
+
AND IS_ARRAY(doc.external_references)
|
33
|
+
AND doc.x_mitre_deprecated != true
|
34
|
+
AND doc.revoked != true
|
35
|
+
AND doc.type == "weakness"
|
36
|
+
AND doc.name != null
|
37
|
+
AND !CONTAINS(doc.name, "DEPRECATED:")
|
38
|
+
RETURN doc.name
|
39
|
+
""",
|
40
|
+
"mitre_capec_id_v3_9.txt":
|
41
|
+
"""
|
42
|
+
FOR doc IN mitre_capec_vertex_collection
|
43
|
+
FILTER doc._stix2arango_note == "version=3_9"
|
44
|
+
AND doc.x_mitre_deprecated != true
|
45
|
+
AND doc.revoked != true
|
46
|
+
AND doc.type != "course-of-action"
|
47
|
+
AND doc.name != null
|
48
|
+
AND !CONTAINS(doc.name, "DEPRECATED:")
|
49
|
+
AND IS_ARRAY(doc.external_references)
|
50
|
+
FOR reference IN doc.external_references
|
51
|
+
FILTER reference.source_name == "capec"
|
52
|
+
SORT reference.external_id ASC
|
53
|
+
RETURN reference.external_id
|
54
|
+
""",
|
55
|
+
"mitre_capec_name_v3_9.txt":
|
56
|
+
"""
|
57
|
+
FOR doc IN mitre_capec_vertex_collection
|
58
|
+
FILTER doc._stix2arango_note == "version=3_9"
|
59
|
+
AND doc.x_mitre_deprecated != true
|
60
|
+
AND doc.revoked != true
|
61
|
+
AND doc.type != "course-of-action"
|
62
|
+
AND doc.name != null
|
63
|
+
AND !CONTAINS(doc.name, "DEPRECATED:")
|
64
|
+
RETURN doc.name
|
65
|
+
""",
|
66
|
+
"mitre_attack_enterprise_id_v16_0.txt":
|
67
|
+
"""
|
68
|
+
FOR doc IN mitre_attack_enterprise_vertex_collection
|
69
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
70
|
+
AND doc.type != "x-mitre-matrix"
|
71
|
+
AND doc.x_mitre_deprecated != true
|
72
|
+
AND doc.revoked != true
|
73
|
+
AND IS_ARRAY(doc.external_references)
|
74
|
+
FOR reference IN doc.external_references
|
75
|
+
FILTER reference.source_name == "mitre-attack"
|
76
|
+
SORT reference.external_id ASC
|
77
|
+
RETURN reference.external_id
|
78
|
+
""",
|
79
|
+
"mitre_attack_enterprise_name_v16_0.txt":
|
80
|
+
"""
|
81
|
+
FOR doc IN mitre_attack_enterprise_vertex_collection
|
82
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
83
|
+
AND doc.type != "x-mitre-matrix"
|
84
|
+
AND doc.x_mitre_deprecated != true
|
85
|
+
AND doc.revoked != true
|
86
|
+
RETURN doc.name
|
87
|
+
""",
|
88
|
+
"mitre_attack_enterprise_aliases_v16_0.txt":
|
89
|
+
"""
|
90
|
+
FOR alias IN UNIQUE(
|
91
|
+
FLATTEN(
|
92
|
+
FOR doc IN mitre_attack_enterprise_vertex_collection
|
93
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
94
|
+
AND doc.type != "x-mitre-matrix"
|
95
|
+
AND doc.x_mitre_deprecated != true
|
96
|
+
AND doc.revoked != true
|
97
|
+
LET combined_aliases = APPEND(
|
98
|
+
doc.aliases ? doc.aliases : [],
|
99
|
+
doc.x_mitre_aliases ? doc.x_mitre_aliases : []
|
100
|
+
)
|
101
|
+
FILTER LENGTH(combined_aliases) > 0
|
102
|
+
RETURN combined_aliases
|
103
|
+
)
|
104
|
+
)
|
105
|
+
RETURN alias
|
106
|
+
""",
|
107
|
+
"mitre_attack_ics_id_v16_0.txt":
|
108
|
+
"""
|
109
|
+
FOR doc IN mitre_attack_ics_vertex_collection
|
110
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
111
|
+
AND doc.type != "x-mitre-matrix"
|
112
|
+
AND doc.x_mitre_deprecated != true
|
113
|
+
AND doc.revoked != true
|
114
|
+
AND IS_ARRAY(doc.external_references)
|
115
|
+
FOR reference IN doc.external_references
|
116
|
+
FILTER reference.source_name == "mitre-attack"
|
117
|
+
SORT reference.external_id ASC
|
118
|
+
RETURN reference.external_id
|
119
|
+
""",
|
120
|
+
"mitre_attack_ics_name_v16_0.txt":
|
121
|
+
"""
|
122
|
+
FOR doc IN mitre_attack_ics_vertex_collection
|
123
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
124
|
+
AND doc.type != "x-mitre-matrix"
|
125
|
+
AND doc.x_mitre_deprecated != true
|
126
|
+
AND doc.revoked != true
|
127
|
+
RETURN doc.name
|
128
|
+
""",
|
129
|
+
"mitre_attack_ics_aliases_v16_0.txt":
|
130
|
+
"""
|
131
|
+
FOR alias IN UNIQUE(
|
132
|
+
FLATTEN(
|
133
|
+
FOR doc IN mitre_attack_ics_vertex_collection
|
134
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
135
|
+
AND doc.type != "x-mitre-matrix"
|
136
|
+
AND doc.x_mitre_deprecated != true
|
137
|
+
AND doc.revoked != true
|
138
|
+
LET combined_aliases = APPEND(
|
139
|
+
doc.aliases ? doc.aliases : [],
|
140
|
+
doc.x_mitre_aliases ? doc.x_mitre_aliases : []
|
141
|
+
)
|
142
|
+
FILTER LENGTH(combined_aliases) > 0
|
143
|
+
RETURN combined_aliases
|
144
|
+
)
|
145
|
+
)
|
146
|
+
RETURN alias
|
147
|
+
""",
|
148
|
+
"mitre_attack_mobile_id_v16_0.txt":
|
149
|
+
"""
|
150
|
+
FOR doc IN mitre_attack_mobile_vertex_collection
|
151
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
152
|
+
AND doc.type != "x-mitre-matrix"
|
153
|
+
AND doc.x_mitre_deprecated != true
|
154
|
+
AND doc.revoked != true
|
155
|
+
AND IS_ARRAY(doc.external_references)
|
156
|
+
FOR reference IN doc.external_references
|
157
|
+
FILTER reference.source_name == "mitre-attack"
|
158
|
+
SORT reference.external_id ASC
|
159
|
+
RETURN reference.external_id
|
160
|
+
""",
|
161
|
+
"mitre_attack_mobile_name_v16_0.txt":
|
162
|
+
"""
|
163
|
+
FOR doc IN mitre_attack_mobile_vertex_collection
|
164
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
165
|
+
AND doc.type != "x-mitre-matrix"
|
166
|
+
AND doc.x_mitre_deprecated != true
|
167
|
+
AND doc.revoked != true
|
168
|
+
RETURN doc.name
|
169
|
+
""",
|
170
|
+
"mitre_attack_mobile_aliases_v16_0.txt":
|
171
|
+
"""
|
172
|
+
FOR alias IN UNIQUE(
|
173
|
+
FLATTEN(
|
174
|
+
FOR doc IN mitre_attack_mobile_vertex_collection
|
175
|
+
FILTER doc._stix2arango_note == "version=16_0"
|
176
|
+
AND doc.type != "x-mitre-matrix"
|
177
|
+
AND doc.x_mitre_deprecated != true
|
178
|
+
AND doc.revoked != true
|
179
|
+
LET combined_aliases = APPEND(
|
180
|
+
doc.aliases ? doc.aliases : [],
|
181
|
+
doc.x_mitre_aliases ? doc.x_mitre_aliases : []
|
182
|
+
)
|
183
|
+
FILTER LENGTH(combined_aliases) > 0
|
184
|
+
RETURN combined_aliases
|
185
|
+
)
|
186
|
+
)
|
187
|
+
RETURN alias
|
188
|
+
""",
|
189
|
+
"mitre_atlas_id_v4_5_2.txt":
|
190
|
+
"""
|
191
|
+
FOR doc IN mitre_atlas_vertex_collection
|
192
|
+
FILTER doc._stix2arango_note == "version=4_5_2"
|
193
|
+
AND doc.type != "x-mitre-matrix"
|
194
|
+
AND doc.x_mitre_deprecated != true
|
195
|
+
AND doc.revoked != true
|
196
|
+
AND IS_ARRAY(doc.external_references)
|
197
|
+
FOR reference IN doc.external_references
|
198
|
+
FILTER reference.source_name == "mitre-atlas"
|
199
|
+
SORT reference.external_id ASC
|
200
|
+
RETURN reference.external_id
|
201
|
+
""",
|
202
|
+
"mitre_atlas_name_v4_5_2.txt":
|
203
|
+
"""
|
204
|
+
FOR doc IN mitre_atlas_vertex_collection
|
205
|
+
FILTER doc._stix2arango_note == "version=4_5_2"
|
206
|
+
AND doc.type != "x-mitre-matrix"
|
207
|
+
AND doc.x_mitre_deprecated != true
|
208
|
+
AND doc.revoked != true
|
209
|
+
RETURN doc.name
|
210
|
+
""",
|
211
|
+
"disarm_id_v1_5.txt":
|
212
|
+
"""
|
213
|
+
FOR doc IN disarm_vertex_collection
|
214
|
+
FILTER doc._stix2arango_note == "version=1_5"
|
215
|
+
AND doc.type != "x-mitre-matrix"
|
216
|
+
AND doc.x_mitre_deprecated != true
|
217
|
+
AND doc.revoked != true
|
218
|
+
AND IS_ARRAY(doc.external_references)
|
219
|
+
FOR reference IN doc.external_references
|
220
|
+
FILTER reference.source_name == "DISARM"
|
221
|
+
SORT reference.external_id ASC
|
222
|
+
RETURN reference.external_id
|
223
|
+
""",
|
224
|
+
"disarm_name_v1_5.txt":
|
225
|
+
"""
|
226
|
+
FOR doc IN disarm_vertex_collection
|
227
|
+
FILTER doc._stix2arango_note == "version=1_5"
|
228
|
+
AND doc.type != "x-mitre-matrix"
|
229
|
+
AND doc.x_mitre_deprecated != true
|
230
|
+
AND doc.revoked != true
|
231
|
+
RETURN doc.name
|
232
|
+
"""
|
233
|
+
}
|
234
|
+
|
235
|
+
# Execute each query and save the results in the script's directory
|
236
|
+
for filename, query in queries.items():
|
237
|
+
cursor = db.aql.execute(query)
|
238
|
+
results = [str(doc) for doc in cursor]
|
239
|
+
|
240
|
+
# Full path for each output file
|
241
|
+
filepath = os.path.join(script_dir, filename)
|
242
|
+
|
243
|
+
# Write results to a text file with each result on a new line
|
244
|
+
with open(filepath, 'w') as f:
|
245
|
+
f.write("\n".join(results))
|
246
|
+
|
247
|
+
print(f"Results saved to {filepath}")
|
@@ -0,0 +1 @@
|
|
1
|
+
Content Spoofer
|
@@ -0,0 +1 @@
|
|
1
|
+
Inspector-1
|
@@ -0,0 +1,249 @@
|
|
1
|
+
AD
|
2
|
+
AE
|
3
|
+
AF
|
4
|
+
AG
|
5
|
+
AI
|
6
|
+
AL
|
7
|
+
AM
|
8
|
+
AO
|
9
|
+
AQ
|
10
|
+
AR
|
11
|
+
AS
|
12
|
+
AT
|
13
|
+
AU
|
14
|
+
AW
|
15
|
+
AX
|
16
|
+
AZ
|
17
|
+
BA
|
18
|
+
BB
|
19
|
+
BD
|
20
|
+
BE
|
21
|
+
BF
|
22
|
+
BG
|
23
|
+
BH
|
24
|
+
BI
|
25
|
+
BJ
|
26
|
+
BL
|
27
|
+
BM
|
28
|
+
BN
|
29
|
+
BO
|
30
|
+
BQ
|
31
|
+
BR
|
32
|
+
BS
|
33
|
+
BT
|
34
|
+
BV
|
35
|
+
BW
|
36
|
+
BY
|
37
|
+
BZ
|
38
|
+
CA
|
39
|
+
CC
|
40
|
+
CD
|
41
|
+
CF
|
42
|
+
CG
|
43
|
+
CH
|
44
|
+
CI
|
45
|
+
CK
|
46
|
+
CL
|
47
|
+
CM
|
48
|
+
CN
|
49
|
+
CO
|
50
|
+
CR
|
51
|
+
CU
|
52
|
+
CV
|
53
|
+
CW
|
54
|
+
CX
|
55
|
+
CY
|
56
|
+
CZ
|
57
|
+
DE
|
58
|
+
DJ
|
59
|
+
DK
|
60
|
+
DM
|
61
|
+
DO
|
62
|
+
DZ
|
63
|
+
EC
|
64
|
+
EE
|
65
|
+
EG
|
66
|
+
EH
|
67
|
+
ER
|
68
|
+
ES
|
69
|
+
ET
|
70
|
+
FI
|
71
|
+
FJ
|
72
|
+
FK
|
73
|
+
FM
|
74
|
+
FO
|
75
|
+
FR
|
76
|
+
GA
|
77
|
+
GB
|
78
|
+
GD
|
79
|
+
GE
|
80
|
+
GF
|
81
|
+
GG
|
82
|
+
GH
|
83
|
+
GI
|
84
|
+
GL
|
85
|
+
GM
|
86
|
+
GN
|
87
|
+
GP
|
88
|
+
GQ
|
89
|
+
GR
|
90
|
+
GS
|
91
|
+
GT
|
92
|
+
GU
|
93
|
+
GW
|
94
|
+
GY
|
95
|
+
HK
|
96
|
+
HM
|
97
|
+
HN
|
98
|
+
HR
|
99
|
+
HT
|
100
|
+
HU
|
101
|
+
ID
|
102
|
+
IE
|
103
|
+
IL
|
104
|
+
IM
|
105
|
+
IN
|
106
|
+
IO
|
107
|
+
IQ
|
108
|
+
IR
|
109
|
+
IS
|
110
|
+
IT
|
111
|
+
JE
|
112
|
+
JM
|
113
|
+
JO
|
114
|
+
JP
|
115
|
+
KE
|
116
|
+
KG
|
117
|
+
KH
|
118
|
+
KI
|
119
|
+
KM
|
120
|
+
KN
|
121
|
+
KP
|
122
|
+
KR
|
123
|
+
KW
|
124
|
+
KY
|
125
|
+
KZ
|
126
|
+
LA
|
127
|
+
LB
|
128
|
+
LC
|
129
|
+
LI
|
130
|
+
LK
|
131
|
+
LR
|
132
|
+
LS
|
133
|
+
LT
|
134
|
+
LU
|
135
|
+
LV
|
136
|
+
LY
|
137
|
+
MA
|
138
|
+
MC
|
139
|
+
MD
|
140
|
+
ME
|
141
|
+
MF
|
142
|
+
MG
|
143
|
+
MH
|
144
|
+
MK
|
145
|
+
ML
|
146
|
+
MM
|
147
|
+
MN
|
148
|
+
MO
|
149
|
+
MP
|
150
|
+
MQ
|
151
|
+
MR
|
152
|
+
MS
|
153
|
+
MT
|
154
|
+
MU
|
155
|
+
MV
|
156
|
+
MW
|
157
|
+
MX
|
158
|
+
MY
|
159
|
+
MZ
|
160
|
+
NA
|
161
|
+
NC
|
162
|
+
NE
|
163
|
+
NF
|
164
|
+
NG
|
165
|
+
NI
|
166
|
+
NL
|
167
|
+
NO
|
168
|
+
NP
|
169
|
+
NR
|
170
|
+
NU
|
171
|
+
NZ
|
172
|
+
OM
|
173
|
+
PA
|
174
|
+
PE
|
175
|
+
PF
|
176
|
+
PG
|
177
|
+
PH
|
178
|
+
PK
|
179
|
+
PL
|
180
|
+
PM
|
181
|
+
PN
|
182
|
+
PR
|
183
|
+
PS
|
184
|
+
PT
|
185
|
+
PW
|
186
|
+
PY
|
187
|
+
QA
|
188
|
+
RE
|
189
|
+
RO
|
190
|
+
RS
|
191
|
+
RU
|
192
|
+
RW
|
193
|
+
SA
|
194
|
+
SB
|
195
|
+
SC
|
196
|
+
SD
|
197
|
+
SE
|
198
|
+
SG
|
199
|
+
SH
|
200
|
+
SI
|
201
|
+
SJ
|
202
|
+
SK
|
203
|
+
SL
|
204
|
+
SM
|
205
|
+
SN
|
206
|
+
SO
|
207
|
+
SR
|
208
|
+
SS
|
209
|
+
ST
|
210
|
+
SV
|
211
|
+
SX
|
212
|
+
SY
|
213
|
+
SZ
|
214
|
+
TC
|
215
|
+
TD
|
216
|
+
TF
|
217
|
+
TG
|
218
|
+
TH
|
219
|
+
TJ
|
220
|
+
TK
|
221
|
+
TL
|
222
|
+
TM
|
223
|
+
TN
|
224
|
+
TO
|
225
|
+
TR
|
226
|
+
TT
|
227
|
+
TV
|
228
|
+
TW
|
229
|
+
TZ
|
230
|
+
UA
|
231
|
+
UG
|
232
|
+
UM
|
233
|
+
US
|
234
|
+
UY
|
235
|
+
UZ
|
236
|
+
VA
|
237
|
+
VC
|
238
|
+
VE
|
239
|
+
VG
|
240
|
+
VI
|
241
|
+
VN
|
242
|
+
VU
|
243
|
+
WF
|
244
|
+
WS
|
245
|
+
YE
|
246
|
+
YT
|
247
|
+
ZA
|
248
|
+
ZM
|
249
|
+
ZW
|
@@ -0,0 +1 @@
|
|
1
|
+
Patch server
|