langtable 0.0.64__tar.gz → 0.0.66__tar.gz
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.
- {langtable-0.0.64 → langtable-0.0.66}/ChangeLog +25 -0
- {langtable-0.0.64 → langtable-0.0.66}/MANIFEST.in +3 -0
- {langtable-0.0.64 → langtable-0.0.66}/Makefile +24 -14
- {langtable-0.0.64 → langtable-0.0.66}/PKG-INFO +36 -35
- {langtable-0.0.64 → langtable-0.0.66}/README +30 -22
- langtable-0.0.66/README.html +226 -0
- langtable-0.0.66/README.md +72 -0
- langtable-0.0.66/langtable/data/languages.xml.gz +0 -0
- langtable-0.0.66/langtable/data/territories.xml.gz +0 -0
- langtable-0.0.66/langtable/data/timezoneidparts.xml.gz +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/langtable.py +8 -2
- {langtable-0.0.64 → langtable-0.0.66}/langtable.egg-info/PKG-INFO +36 -35
- {langtable-0.0.64 → langtable-0.0.66}/langtable.egg-info/SOURCES.txt +2 -0
- {langtable-0.0.64 → langtable-0.0.66}/main.py +14 -9
- {langtable-0.0.64 → langtable-0.0.66}/setup.py +3 -2
- {langtable-0.0.64 → langtable-0.0.66}/test_cases.py +13 -12
- langtable-0.0.64/langtable/data/languages.xml.gz +0 -0
- langtable-0.0.64/langtable/data/territories.xml.gz +0 -0
- langtable-0.0.64/langtable/data/timezoneidparts.xml.gz +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/COPYING +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/__init__.py +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/data/keyboards.xml.gz +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/data/timezones.xml.gz +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/schemas/keyboards.rng +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/schemas/languages.rng +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/schemas/territories.rng +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/schemas/timezoneidparts.rng +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable/schemas/timezones.rng +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable.egg-info/dependency_links.txt +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable.egg-info/not-zip-safe +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/langtable.egg-info/top_level.txt +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/setup.cfg +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/tools/compare_with_glib_source.py +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/tools/list-missing-regions-and-languages.sh +0 -0
- {langtable-0.0.64 → langtable-0.0.66}/unicode-license.txt +0 -0
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
2024-05-07 Mike FABIAN <mfabian@redhat.com>
|
|
2
|
+
|
|
3
|
+
* Fix syntax error in a keyboard layout name for th
|
|
4
|
+
(Resolves: https://github.com/mike-fabian/langtable/issues/21xs)
|
|
5
|
+
* Add mdf
|
|
6
|
+
* Use “in(eng)” keyboard layout instead of “us” for BD to get AltGr enabled
|
|
7
|
+
* Get translation changes from CLDR
|
|
8
|
+
* Add option to include changed translations as well to the script getting translations from CLDR
|
|
9
|
+
* Add reference to the the PyPI package to the README.md.
|
|
10
|
+
And add a README.html and README generated from the README.md.
|
|
11
|
+
* Make test outputs somewhat more verbose, even when all tests pass
|
|
12
|
+
(Resolves: https://github.com/mike-fabian/langtable/pull/20).
|
|
13
|
+
Thanks to Sebastian <seb128@ubuntu.com> for the pull request.
|
|
14
|
+
* Fix Makefile twine-upload target for new authentification
|
|
15
|
+
|
|
16
|
+
2024-02-08 Mike FABIAN <mfabian@redhat.com>
|
|
17
|
+
|
|
18
|
+
* Add wuu, tok, glk, gbm, ssy
|
|
19
|
+
* Remove aa_ER.UTF-8@saaho
|
|
20
|
+
* Add kv_RU.UTF-8, chr_RU.UTF-8
|
|
21
|
+
* Add EU, EZ
|
|
22
|
+
* Improve README and Makefile (Resolves: https://github.com/mike-fabian/langtable/issues/19)
|
|
23
|
+
* Add more translations from CLDR
|
|
24
|
+
* Get translation changes from CLDR
|
|
25
|
+
|
|
1
26
|
2023-09-19 Mike FABIAN <mfabian@redhat.com>
|
|
2
27
|
|
|
3
28
|
* Add new public functions list_all_{languages,locales,keyboards,territories,timezones,scripts,input_methods,console_fonts}
|
|
@@ -5,22 +5,19 @@ PWD := $(shell pwd)
|
|
|
5
5
|
SRCDIR=$(PWD)
|
|
6
6
|
|
|
7
7
|
.PHONY: gzip
|
|
8
|
-
gzip:
|
|
9
|
-
gzip --keep --force --best langtable/data/*.xml
|
|
8
|
+
gzip: langtable/data/keyboards.xml.gz langtable/data/languages.xml.gz langtable/data/territories.xml.gz langtable/data/timezones.xml.gz langtable/data/timezoneidparts.xml.gz
|
|
10
9
|
|
|
11
10
|
.PHONY: test
|
|
12
11
|
test: gzip
|
|
13
|
-
|
|
14
|
-
(cd langtable; python3 langtable.py)
|
|
15
|
-
#python2 test_cases.py
|
|
12
|
+
python3 langtable/langtable.py
|
|
16
13
|
python3 test_cases.py
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
xmllint --noout --relaxng langtable/schemas/keyboards.rng langtable/data/keyboards.xml.gz
|
|
15
|
+
xmllint --noout --relaxng langtable/schemas/languages.rng langtable/data/languages.xml.gz
|
|
16
|
+
xmllint --noout --relaxng langtable/schemas/territories.rng langtable/data/territories.xml.gz
|
|
17
|
+
xmllint --noout --relaxng langtable/schemas/timezones.rng langtable/data/timezones.xml.gz
|
|
18
|
+
xmllint --noout --relaxng langtable/schemas/timezoneidparts.rng langtable/data/timezoneidparts.xml.gz
|
|
22
19
|
|
|
23
|
-
.
|
|
20
|
+
.PHONY: check
|
|
24
21
|
check: test
|
|
25
22
|
|
|
26
23
|
.PHONY: dist
|
|
@@ -33,6 +30,10 @@ install: dist
|
|
|
33
30
|
DISTUTILS_DEBUG=$(DEBUG) python3 ./setup.py install --prefix=$(DESTDIR)
|
|
34
31
|
# DISTUTILS_DEBUG=$(DEBUG) python3 ./setup.py install_data --install-dir=$(DATADIR)
|
|
35
32
|
|
|
33
|
+
.PHONY: twine-check
|
|
34
|
+
twine-check: dist
|
|
35
|
+
twine check dist/*
|
|
36
|
+
|
|
36
37
|
# check it here: https://test.pypi.org/manage/project/langtable/releases/
|
|
37
38
|
.PHONY: twine-upload-test
|
|
38
39
|
twine-upload-test: dist
|
|
@@ -41,15 +42,15 @@ twine-upload-test: dist
|
|
|
41
42
|
# check it here: https://pypi.org/manage/project/langtable/releases/
|
|
42
43
|
.PHONY: twine-upload
|
|
43
44
|
twine-upload: dist
|
|
44
|
-
python3 -m twine upload --verbose dist/*
|
|
45
|
+
python3 -m twine upload --verbose --repository pypi dist/*
|
|
45
46
|
|
|
46
47
|
.PHONY: pip-install-test
|
|
47
48
|
pip-install-test:
|
|
48
|
-
(cd /tmp; python3 -m pip install --user --ignore-installed --index-url https://test.pypi.org/simple/ --no-deps langtable)
|
|
49
|
+
(cd /tmp; python3 -m pip install --user --ignore-installed --no-cache-dir --index-url https://test.pypi.org/simple/ --no-deps langtable)
|
|
49
50
|
|
|
50
51
|
.PHONY: pip-install
|
|
51
52
|
pip-install:
|
|
52
|
-
(cd /tmp; python3 -m pip install --user --ignore-installed --no-deps langtable)
|
|
53
|
+
(cd /tmp; python3 -m pip install --user --ignore-installed --no-cache-dir --no-deps langtable)
|
|
53
54
|
|
|
54
55
|
.PHONY: clean
|
|
55
56
|
clean:
|
|
@@ -69,6 +70,9 @@ review: mockbuild
|
|
|
69
70
|
cp *.spec ./mockbuild-results/
|
|
70
71
|
(cd ./mockbuild-results/; fedora-review -n langtable -m $(MOCK_CONFIG) )
|
|
71
72
|
|
|
73
|
+
%.xml.gz: %.xml
|
|
74
|
+
gzip --keep --force --best $< $@
|
|
75
|
+
|
|
72
76
|
# .rnc files for editing with Emacs
|
|
73
77
|
# https://fedoraproject.org/wiki/How_to_use_Emacs_for_XML_editing
|
|
74
78
|
%.rnc: %.rng
|
|
@@ -76,3 +80,9 @@ review: mockbuild
|
|
|
76
80
|
|
|
77
81
|
rnc: schemas/keyboards.rnc schemas/languages.rnc schemas/territories.rnc schemas/timezones.rnc schemas/timezoneidparts.rnc
|
|
78
82
|
cp schemas/*.rnc data/
|
|
83
|
+
|
|
84
|
+
README: README.html
|
|
85
|
+
w3m -cols 78 -o display_borders=1 -o display_link_number=1 $< > $@
|
|
86
|
+
|
|
87
|
+
README.html: README.md
|
|
88
|
+
pandoc -f gfm -t html --standalone --self-contained --metadata pagetitle="langtable README" $< > $@
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: langtable
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.66
|
|
4
4
|
Summary: guess reasonable defaults for locale, keyboard, territory, ...
|
|
5
5
|
Home-page: https://github.com/mike-fabian/langtable
|
|
6
6
|
Author: Mike FABIAN
|
|
@@ -13,64 +13,57 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (G
|
|
|
13
13
|
Classifier: Operating System :: POSIX :: Linux
|
|
14
14
|
Classifier: Programming Language :: Python
|
|
15
15
|
Classifier: Topic :: System :: Installation/Setup
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
16
17
|
License-File: COPYING
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
langtable
|
|
20
|
-
======================================================================
|
|
19
|
+
# langtable
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
=======================
|
|
21
|
+
[](https://badge.fury.io/py/langtable)
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
territory, …, if part of that information is already known. For
|
|
27
|
-
example, guess the territory and the keyboard layout if the language
|
|
28
|
-
is known or guess the language and keyboard layout if the territory is
|
|
29
|
-
already known.
|
|
23
|
+
Guessing reasonable defaults for locale, keyboard layout, territory, and language.
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
## Purpose of this package
|
|
26
|
+
_langtable_ is used to guess reasonable defaults for locale, keyboard, territory, …, if part of that information is already known. For example, guess the territory and the keyboard layout if the language is known or guess the language and keyboard layout if the territory is already known.
|
|
27
|
+
|
|
28
|
+
## License
|
|
33
29
|
|
|
34
30
|
GPLv3+, see the included file “COPYING”.
|
|
35
31
|
|
|
36
|
-
Translations for languages and territory names are from CLDR which is
|
|
37
|
-
governed by the Unicode Terms of Use, see the included file
|
|
38
|
-
“unicode-license.txt”. The short name for this Unicode license is
|
|
39
|
-
“MIT”. See:
|
|
32
|
+
Translations for languages and territory names are from CLDR which is governed by the Unicode Terms of Use, see the included file “unicode-license.txt”. The short name for this Unicode license is “MIT”. See:
|
|
40
33
|
|
|
41
34
|
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
|
|
42
35
|
|
|
43
|
-
Installation
|
|
44
|
-
============
|
|
36
|
+
## Installation
|
|
45
37
|
|
|
46
38
|
To install langtable, run
|
|
47
39
|
|
|
40
|
+
```
|
|
48
41
|
make install DESTDIR=/usr
|
|
42
|
+
```
|
|
49
43
|
|
|
50
44
|
To create a distribution tarball run
|
|
51
|
-
|
|
45
|
+
```
|
|
52
46
|
make dist
|
|
53
|
-
|
|
47
|
+
```
|
|
54
48
|
To run the test cases in the source directory:
|
|
49
|
+
```
|
|
50
|
+
make check
|
|
51
|
+
```
|
|
55
52
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
To run the test cases using the installed files:
|
|
59
|
-
|
|
60
|
-
make install DESTDIR=/usr
|
|
61
|
-
make test DESTDIR=/usr
|
|
62
|
-
|
|
63
|
-
How to use it
|
|
64
|
-
=============
|
|
53
|
+
## How to use it
|
|
65
54
|
|
|
55
|
+
```
|
|
66
56
|
import langtable
|
|
57
|
+
```
|
|
67
58
|
|
|
68
59
|
Functions in the public API:
|
|
69
60
|
|
|
61
|
+
```
|
|
70
62
|
parse_locale()
|
|
71
63
|
list_locales()
|
|
72
64
|
list_keyboards()
|
|
73
65
|
list_common_languages()
|
|
66
|
+
list_common_locales()
|
|
74
67
|
list_common_keyboards()
|
|
75
68
|
list_consolefonts()
|
|
76
69
|
list_inputmethods()
|
|
@@ -82,8 +75,16 @@ Functions in the public API:
|
|
|
82
75
|
languageId()
|
|
83
76
|
territoryId()
|
|
84
77
|
supports_ascii()
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
(
|
|
78
|
+
list_all_languages()
|
|
79
|
+
list_all_locales()
|
|
80
|
+
list_all_keyboards()
|
|
81
|
+
list_all_territories()
|
|
82
|
+
list_all_timezones()
|
|
83
|
+
list_all_scripts()
|
|
84
|
+
list_all_input_methods()
|
|
85
|
+
list_all_console_fonts()
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Some examples to show the usage are found in the documentation of the public functions in `langtable.py`.
|
|
89
|
+
|
|
90
|
+
Some more examples are in the test cases in the file `test_cases.py`.
|
|
@@ -1,30 +1,29 @@
|
|
|
1
|
-
======================================================================
|
|
2
1
|
langtable
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
[1]PyPI version
|
|
4
|
+
|
|
5
|
+
Guessing reasonable defaults for locale, keyboard layout, territory, and
|
|
6
|
+
language.
|
|
4
7
|
|
|
5
8
|
Purpose of this package
|
|
6
|
-
=======================
|
|
7
9
|
|
|
8
10
|
langtable is used to guess reasonable defaults for locale, keyboard,
|
|
9
|
-
territory, …, if part of that information is already known. For
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
already known.
|
|
11
|
+
territory, …, if part of that information is already known. For example,
|
|
12
|
+
guess the territory and the keyboard layout if the language is known or guess
|
|
13
|
+
the language and keyboard layout if the territory is already known.
|
|
13
14
|
|
|
14
15
|
License
|
|
15
|
-
=======
|
|
16
16
|
|
|
17
17
|
GPLv3+, see the included file “COPYING”.
|
|
18
18
|
|
|
19
19
|
Translations for languages and territory names are from CLDR which is
|
|
20
20
|
governed by the Unicode Terms of Use, see the included file
|
|
21
|
-
“unicode-license.txt”. The short name for this Unicode license is
|
|
22
|
-
“MIT”. See:
|
|
21
|
+
“unicode-license.txt”. The short name for this Unicode license is “MIT”. See:
|
|
23
22
|
|
|
24
|
-
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#
|
|
23
|
+
[2]https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#
|
|
24
|
+
Modern_Style_without_sublicense_.28Unicode.29
|
|
25
25
|
|
|
26
26
|
Installation
|
|
27
|
-
============
|
|
28
27
|
|
|
29
28
|
To install langtable, run
|
|
30
29
|
|
|
@@ -36,15 +35,9 @@ To create a distribution tarball run
|
|
|
36
35
|
|
|
37
36
|
To run the test cases in the source directory:
|
|
38
37
|
|
|
39
|
-
make
|
|
40
|
-
|
|
41
|
-
To run the test cases using the installed files:
|
|
42
|
-
|
|
43
|
-
make install DESTDIR=/usr
|
|
44
|
-
make test DESTDIR=/usr
|
|
38
|
+
make check
|
|
45
39
|
|
|
46
40
|
How to use it
|
|
47
|
-
=============
|
|
48
41
|
|
|
49
42
|
import langtable
|
|
50
43
|
|
|
@@ -54,6 +47,7 @@ Functions in the public API:
|
|
|
54
47
|
list_locales()
|
|
55
48
|
list_keyboards()
|
|
56
49
|
list_common_languages()
|
|
50
|
+
list_common_locales()
|
|
57
51
|
list_common_keyboards()
|
|
58
52
|
list_consolefonts()
|
|
59
53
|
list_inputmethods()
|
|
@@ -65,8 +59,22 @@ Functions in the public API:
|
|
|
65
59
|
languageId()
|
|
66
60
|
territoryId()
|
|
67
61
|
supports_ascii()
|
|
62
|
+
list_all_languages()
|
|
63
|
+
list_all_locales()
|
|
64
|
+
list_all_keyboards()
|
|
65
|
+
list_all_territories()
|
|
66
|
+
list_all_timezones()
|
|
67
|
+
list_all_scripts()
|
|
68
|
+
list_all_input_methods()
|
|
69
|
+
list_all_console_fonts()
|
|
70
|
+
|
|
71
|
+
Some examples to show the usage are found in the documentation of the public
|
|
72
|
+
functions in langtable.py.
|
|
73
|
+
|
|
74
|
+
Some more examples are in the test cases in the file test_cases.py.
|
|
75
|
+
|
|
68
76
|
|
|
69
|
-
|
|
70
|
-
of the public functions in langtable.py.
|
|
77
|
+
References:
|
|
71
78
|
|
|
72
|
-
|
|
79
|
+
[1] https://badge.fury.io/py/langtable
|
|
80
|
+
[2] https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang xml:lang>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="generator" content="pandoc" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
7
|
+
<title>langtable README</title>
|
|
8
|
+
<style>
|
|
9
|
+
html {
|
|
10
|
+
color: #1a1a1a;
|
|
11
|
+
background-color: #fdfdfd;
|
|
12
|
+
}
|
|
13
|
+
body {
|
|
14
|
+
margin: 0 auto;
|
|
15
|
+
max-width: 36em;
|
|
16
|
+
padding-left: 50px;
|
|
17
|
+
padding-right: 50px;
|
|
18
|
+
padding-top: 50px;
|
|
19
|
+
padding-bottom: 50px;
|
|
20
|
+
hyphens: auto;
|
|
21
|
+
overflow-wrap: break-word;
|
|
22
|
+
text-rendering: optimizeLegibility;
|
|
23
|
+
font-kerning: normal;
|
|
24
|
+
}
|
|
25
|
+
@media (max-width: 600px) {
|
|
26
|
+
body {
|
|
27
|
+
font-size: 0.9em;
|
|
28
|
+
padding: 12px;
|
|
29
|
+
}
|
|
30
|
+
h1 {
|
|
31
|
+
font-size: 1.8em;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
@media print {
|
|
35
|
+
html {
|
|
36
|
+
background-color: white;
|
|
37
|
+
}
|
|
38
|
+
body {
|
|
39
|
+
background-color: transparent;
|
|
40
|
+
color: black;
|
|
41
|
+
font-size: 12pt;
|
|
42
|
+
}
|
|
43
|
+
p, h2, h3 {
|
|
44
|
+
orphans: 3;
|
|
45
|
+
widows: 3;
|
|
46
|
+
}
|
|
47
|
+
h2, h3, h4 {
|
|
48
|
+
page-break-after: avoid;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
p {
|
|
52
|
+
margin: 1em 0;
|
|
53
|
+
}
|
|
54
|
+
a {
|
|
55
|
+
color: #1a1a1a;
|
|
56
|
+
}
|
|
57
|
+
a:visited {
|
|
58
|
+
color: #1a1a1a;
|
|
59
|
+
}
|
|
60
|
+
img {
|
|
61
|
+
max-width: 100%;
|
|
62
|
+
}
|
|
63
|
+
h1, h2, h3, h4, h5, h6 {
|
|
64
|
+
margin-top: 1.4em;
|
|
65
|
+
}
|
|
66
|
+
h5, h6 {
|
|
67
|
+
font-size: 1em;
|
|
68
|
+
font-style: italic;
|
|
69
|
+
}
|
|
70
|
+
h6 {
|
|
71
|
+
font-weight: normal;
|
|
72
|
+
}
|
|
73
|
+
ol, ul {
|
|
74
|
+
padding-left: 1.7em;
|
|
75
|
+
margin-top: 1em;
|
|
76
|
+
}
|
|
77
|
+
li > ol, li > ul {
|
|
78
|
+
margin-top: 0;
|
|
79
|
+
}
|
|
80
|
+
blockquote {
|
|
81
|
+
margin: 1em 0 1em 1.7em;
|
|
82
|
+
padding-left: 1em;
|
|
83
|
+
border-left: 2px solid #e6e6e6;
|
|
84
|
+
color: #606060;
|
|
85
|
+
}
|
|
86
|
+
code {
|
|
87
|
+
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
|
88
|
+
font-size: 85%;
|
|
89
|
+
margin: 0;
|
|
90
|
+
hyphens: manual;
|
|
91
|
+
}
|
|
92
|
+
pre {
|
|
93
|
+
margin: 1em 0;
|
|
94
|
+
overflow: auto;
|
|
95
|
+
}
|
|
96
|
+
pre code {
|
|
97
|
+
padding: 0;
|
|
98
|
+
overflow: visible;
|
|
99
|
+
overflow-wrap: normal;
|
|
100
|
+
}
|
|
101
|
+
.sourceCode {
|
|
102
|
+
background-color: transparent;
|
|
103
|
+
overflow: visible;
|
|
104
|
+
}
|
|
105
|
+
hr {
|
|
106
|
+
background-color: #1a1a1a;
|
|
107
|
+
border: none;
|
|
108
|
+
height: 1px;
|
|
109
|
+
margin: 1em 0;
|
|
110
|
+
}
|
|
111
|
+
table {
|
|
112
|
+
margin: 1em 0;
|
|
113
|
+
border-collapse: collapse;
|
|
114
|
+
width: 100%;
|
|
115
|
+
overflow-x: auto;
|
|
116
|
+
display: block;
|
|
117
|
+
font-variant-numeric: lining-nums tabular-nums;
|
|
118
|
+
}
|
|
119
|
+
table caption {
|
|
120
|
+
margin-bottom: 0.75em;
|
|
121
|
+
}
|
|
122
|
+
tbody {
|
|
123
|
+
margin-top: 0.5em;
|
|
124
|
+
border-top: 1px solid #1a1a1a;
|
|
125
|
+
border-bottom: 1px solid #1a1a1a;
|
|
126
|
+
}
|
|
127
|
+
th {
|
|
128
|
+
border-top: 1px solid #1a1a1a;
|
|
129
|
+
padding: 0.25em 0.5em 0.25em 0.5em;
|
|
130
|
+
}
|
|
131
|
+
td {
|
|
132
|
+
padding: 0.125em 0.5em 0.25em 0.5em;
|
|
133
|
+
}
|
|
134
|
+
header {
|
|
135
|
+
margin-bottom: 4em;
|
|
136
|
+
text-align: center;
|
|
137
|
+
}
|
|
138
|
+
#TOC li {
|
|
139
|
+
list-style: none;
|
|
140
|
+
}
|
|
141
|
+
#TOC ul {
|
|
142
|
+
padding-left: 1.3em;
|
|
143
|
+
}
|
|
144
|
+
#TOC > ul {
|
|
145
|
+
padding-left: 0;
|
|
146
|
+
}
|
|
147
|
+
#TOC a:not(:hover) {
|
|
148
|
+
text-decoration: none;
|
|
149
|
+
}
|
|
150
|
+
code{white-space: pre-wrap;}
|
|
151
|
+
span.smallcaps{font-variant: small-caps;}
|
|
152
|
+
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
|
153
|
+
div.column{flex: auto; overflow-x: auto;}
|
|
154
|
+
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
155
|
+
|
|
156
|
+
ul.task-list[class]{list-style: none;}
|
|
157
|
+
ul.task-list li input[type="checkbox"] {
|
|
158
|
+
font-size: inherit;
|
|
159
|
+
width: 0.8em;
|
|
160
|
+
margin: 0 0.8em 0.2em -1.6em;
|
|
161
|
+
vertical-align: middle;
|
|
162
|
+
}
|
|
163
|
+
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
|
164
|
+
</style>
|
|
165
|
+
<!--[if lt IE 9]>
|
|
166
|
+
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
|
167
|
+
<![endif]-->
|
|
168
|
+
</head>
|
|
169
|
+
<body>
|
|
170
|
+
<h1 id="langtable">langtable</h1>
|
|
171
|
+
<p><a href="https://badge.fury.io/py/langtable"><img src="data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSIxMzIiCiAgaGVpZ2h0PSIyMCIKICB2aWV3Qm94PSIwIDAgMTMyIDIwIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgaWQ9ImEiCiAgICAgIHgxPSIwIgogICAgICB5MT0iMCIKICAgICAgeDI9IjAiCiAgICAgIHkyPSIxIj4KICAgICAgPHN0b3AKICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgc3RvcC1jb2xvcj0iI2JiYmJiYiIKICAgICAgICBzdG9wLW9wYWNpdHk9IjAuMSIvPgogICAgICA8c3RvcAogICAgICAgIG9mZnNldD0iMSIKICAgICAgICBzdG9wLWNvbG9yPSIjMDAwMDAwIgogICAgICAgIHN0b3Atb3BhY2l0eT0iMC4xIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8cGF0aAogICAgZmlsbD0iIzU1NTU1NSIKICAgIHN0cm9rZT0ibm9uZSIKICAgIGQ9Ik0gMyAwIEwgMTI5IDAgQyAxMzAuNjU2ODYgMCAxMzIgMS4zNDMxNDU3IDEzMiAzIEwgMTMyIDE3IEMgMTMyIDE4LjY1Njg1NSAxMzAuNjU2ODYgMjAgMTI5IDIwIEwgMyAyMCBDIDEuMzQzMTQ1NyAyMCAwIDE4LjY1Njg1NSAwIDE3IEwgMCAzIEMgLTAgMS4zNDMxNDU3IDEuMzQzMTQ1NyAwIDMgMCBaIi8+CiAgPHBhdGgKICAgIGZpbGw9IiM0NGNjMTEiCiAgICBzdHJva2U9Im5vbmUiCiAgICBkPSJNIDg5IDAgTCAxMjkgMCBDIDEzMC42NTY4NiAwIDEzMiAxLjM0MzE0NTcgMTMyIDMgTCAxMzIgMTcgQyAxMzIgMTguNjU2ODU1IDEzMC42NTY4NiAyMCAxMjkgMjAgTCA4OSAyMCBDIDg3LjM0MzE1IDIwIDg2IDE4LjY1Njg1NSA4NiAxNyBMIDg2IDMgQyA4NiAxLjM0MzE0NTcgODcuMzQzMTUgMCA4OSAwIFoiLz4KICA8cGF0aAogICAgZmlsbD0iIzQ0Y2MxMSIKICAgIHN0cm9rZT0ibm9uZSIKICAgIGQ9Ik0gODYgMCBMIDk5IDAgTCA5OSAyMCBMIDg2IDIwIFoiLz4KICA8cGF0aAogICAgZmlsbD0idXJsKCNhKSIKICAgIHN0cm9rZT0ibm9uZSIKICAgIGQ9Ik0gMyAwIEwgMTI5IDAgQyAxMzAuNjU2ODYgMCAxMzIgMS4zNDMxNDU3IDEzMiAzIEwgMTMyIDE3IEMgMTMyIDE4LjY1Njg1NSAxMzAuNjU2ODYgMjAgMTI5IDIwIEwgMyAyMCBDIDEuMzQzMTQ1NyAyMCAwIDE4LjY1Njg1NSAwIDE3IEwgMCAzIEMgLTAgMS4zNDMxNDU3IDEuMzQzMTQ1NyAwIDMgMCBaIi8+CiAgPGc+CiAgICA8ZwogICAgICBpZD0idEJhY2siPgogICAgICA8cGF0aAogICAgICAgIGZpbGw9IiMwMTAxMDEiCiAgICAgICAgZmlsbC1vcGFjaXR5PSIwLjMiCiAgICAgICAgc3Ryb2tlPSIjMDEwMTAxIgogICAgICAgIHN0cm9rZS1vcGFjaXR5PSIwLjA5ODAzOTIyIgogICAgICAgIHN0cm9rZS13aWR0aD0iMC4zIgogICAgICAgIGQ9Ik0gNy45OTI2NzYgMTQuMDk3NjU2IEwgNy45OTI2NzYgMTcuMjg4MDg2IEwgNi45OTkwMjM0IDE3LjI4ODA4NiBMIDYuOTk5MDIzNCA4Ljk4NDM3NSBMIDcuOTkyNjc2IDguOTg0Mzc1IEwgNy45OTI2NzYgOS44OTc0NjEgUSA4LjMwNDE5OSA5LjM2MDM1MiA4Ljc3OTU0MSA5LjA5OTg1MzUgUSA5LjI1NDg4MyA4LjgzOTM1NSA5LjkxNTUyNyA4LjgzOTM1NSBRIDExLjAxMTIzIDguODM5MzU1IDExLjY5NjA0NSA5LjcwOTQ3MyBRIDEyLjM4MDg1OCAxMC41Nzk1OSAxMi4zODA4NTggMTEuOTk3NTU5IFEgMTIuMzgwODU4IDEzLjQxNTUyNyAxMS42OTYwNDUgMTQuMjg1NjQ1IFEgMTEuMDExMjMgMTUuMTU1NzYyIDkuOTE1NTI3IDE1LjE1NTc2MiBRIDkuMjU0ODgzIDE1LjE1NTc2MiA4Ljc3OTU0MSAxNC44OTUyNjQgUSA4LjMwNDE5OSAxNC42MzQ3NjYgNy45OTI2NzYgMTQuMDk3NjU2IFogTSAxMS4zNTQ5Nzk1IDExLjk5NzU1OSBRIDExLjM1NDk3OTUgMTAuOTA3MjI3IDEwLjkwNjQ5NSAxMC4yODY4NjUgUSAxMC40NTgwMDggOS42NjY1MDQgOS42NzM4MjggOS42NjY1MDQgUSA4Ljg4OTY0OCA5LjY2NjUwNCA4LjQ0MTE2MiAxMC4yODY4NjUgUSA3Ljk5MjY3NiAxMC45MDcyMjcgNy45OTI2NzYgMTEuOTk3NTU5IFEgNy45OTI2NzYgMTMuMDg3ODkyIDguNDQxMTYyIDEzLjcwODI1MiBRIDguODg5NjQ4IDE0LjMyODYxMyA5LjY3MzgyOCAxNC4zMjg2MTMgUSAxMC40NTgwMDggMTQuMzI4NjEzIDEwLjkwNjQ5NSAxMy43MDgyNTIgUSAxMS4zNTQ5Nzk1IDEzLjA4Nzg5MiAxMS4zNTQ5Nzk1IDExLjk5NzU1OSBaIE0gMTYuNTIxOTczIDE1LjU1ODU5NCBRIDE2LjEwMzAyNyAxNi42MzI4MTMgMTUuNzA1NTY2IDE2Ljk2MDQ1IFEgMTUuMzA4MTA0NSAxNy4yODgwODYgMTQuNjQyMDkgMTcuMjg4MDg2IEwgMTMuODUyNTM5IDE3LjI4ODA4NiBMIDEzLjg1MjUzOSAxNi40NjA5MzggTCAxNC40MzI2MTcgMTYuNDYwOTM4IFEgMTQuODQwODIgMTYuNDYwOTM4IDE1LjA2NjQwNiAxNi4yNjc1NzggUSAxNS4yOTE5OTIgMTYuMDc0MjE5IDE1LjU2NTkxNyAxNS4zNTQ0OTIgTCAxNS43NDMxNjQgMTQuOTAzMzIgTCAxMy4zMTAwNTkgOC45ODQzNzUgTCAxNC4zNTc0MjIgOC45ODQzNzUgTCAxNi4yMzczMDUgMTMuNjg5NDUzIEwgMTguMTE3MTg4IDguOTg0Mzc1IEwgMTkuMTY0NTUgOC45ODQzNzUgTCAxNi41MjE5NzMgMTUuNTU4NTk0IFogTSAyMS40ODQ4NjMgMTQuMDk3NjU2IEwgMjEuNDg0ODYzIDE3LjI4ODA4NiBMIDIwLjQ5MTIxIDE3LjI4ODA4NiBMIDIwLjQ5MTIxIDguOTg0Mzc1IEwgMjEuNDg0ODYzIDguOTg0Mzc1IEwgMjEuNDg0ODYzIDkuODk3NDYxIFEgMjEuNzk2Mzg5IDkuMzYwMzUyIDIyLjI3MTcyOSA5LjA5OTg1MzUgUSAyMi43NDcwNyA4LjgzOTM1NSAyMy40MDc3MTcgOC44MzkzNTUgUSAyNC41MDM0MTggOC44MzkzNTUgMjUuMTg4MjMyIDkuNzA5NDczIFEgMjUuODczMDQ3IDEwLjU3OTU5IDI1Ljg3MzA0NyAxMS45OTc1NTkgUSAyNS44NzMwNDcgMTMuNDE1NTI3IDI1LjE4ODIzMiAxNC4yODU2NDUgUSAyNC41MDM0MTggMTUuMTU1NzYyIDIzLjQwNzcxNyAxNS4xNTU3NjIgUSAyMi43NDcwNyAxNS4xNTU3NjIgMjIuMjcxNzI5IDE0Ljg5NTI2NCBRIDIxLjc5NjM4OSAxNC42MzQ3NjYgMjEuNDg0ODYzIDE0LjA5NzY1NiBaIE0gMjQuODQ3MTY4IDExLjk5NzU1OSBRIDI0Ljg0NzE2OCAxMC45MDcyMjcgMjQuMzk4NjgyIDEwLjI4Njg2NSBRIDIzLjk1MDE5NSA5LjY2NjUwNCAyMy4xNjYwMTYgOS42NjY1MDQgUSAyMi4zODE4MzYgOS42NjY1MDQgMjEuOTMzMzUgMTAuMjg2ODY1IFEgMjEuNDg0ODYzIDEwLjkwNzIyNyAyMS40ODQ4NjMgMTEuOTk3NTU5IFEgMjEuNDg0ODYzIDEzLjA4Nzg5MiAyMS45MzMzNSAxMy43MDgyNTIgUSAyMi4zODE4MzYgMTQuMzI4NjEzIDIzLjE2NjAxNiAxNC4zMjg2MTMgUSAyMy45NTAxOTUgMTQuMzI4NjEzIDI0LjM5ODY4MiAxMy43MDgyNTIgUSAyNC44NDcxNjggMTMuMDg3ODkyIDI0Ljg0NzE2OCAxMS45OTc1NTkgWiBNIDI3LjUxMTIyOSA4Ljk4NDM3NSBMIDI4LjQ5OTUxMiA4Ljk4NDM3NSBMIDI4LjQ5OTUxMiAxNSBMIDI3LjUxMTIyOSAxNSBMIDI3LjUxMTIyOSA4Ljk4NDM3NSBaIE0gMjcuNTExMjI5IDYuNjQyNTc4IEwgMjguNDk5NTEyIDYuNjQyNTc4IEwgMjguNDk5NTEyIDcuODk0MDQzIEwgMjcuNTExMjI5IDcuODk0MDQzIEwgMjcuNTExMjI5IDYuNjQyNTc4IFogTSAzNS4wMjAwMiAxNC4wOTc2NTYgTCAzNS4wMjAwMiAxNy4yODgwODYgTCAzNC4wMjYzNjcgMTcuMjg4MDg2IEwgMzQuMDI2MzY3IDguOTg0Mzc1IEwgMzUuMDIwMDIgOC45ODQzNzUgTCAzNS4wMjAwMiA5Ljg5NzQ2MSBRIDM1LjMzMTU0MyA5LjM2MDM1MiAzNS44MDY4ODUgOS4wOTk4NTM1IFEgMzYuMjgyMjI3IDguODM5MzU1IDM2Ljk0Mjg3IDguODM5MzU1IFEgMzguMDM4NTc0IDguODM5MzU1IDM4LjcyMzM5IDkuNzA5NDczIFEgMzkuNDA4MjAzIDEwLjU3OTU5IDM5LjQwODIwMyAxMS45OTc1NTkgUSAzOS40MDgyMDMgMTMuNDE1NTI3IDM4LjcyMzM5IDE0LjI4NTY0NSBRIDM4LjAzODU3NCAxNS4xNTU3NjIgMzYuOTQyODcgMTUuMTU1NzYyIFEgMzYuMjgyMjI3IDE1LjE1NTc2MiAzNS44MDY4ODUgMTQuODk1MjY0IFEgMzUuMzMxNTQzIDE0LjYzNDc2NiAzNS4wMjAwMiAxNC4wOTc2NTYgWiBNIDM4LjM4MjMyNCAxMS45OTc1NTkgUSAzOC4zODIzMjQgMTAuOTA3MjI3IDM3LjkzMzgzOCAxMC4yODY4NjUgUSAzNy40ODUzNSA5LjY2NjUwNCAzNi43MDExNyA5LjY2NjUwNCBRIDM1LjkxNjk5MiA5LjY2NjUwNCAzNS40Njg1MDYgMTAuMjg2ODY1IFEgMzUuMDIwMDIgMTAuOTA3MjI3IDM1LjAyMDAyIDExLjk5NzU1OSBRIDM1LjAyMDAyIDEzLjA4Nzg5MiAzNS40Njg1MDYgMTMuNzA4MjUyIFEgMzUuOTE2OTkyIDE0LjMyODYxMyAzNi43MDExNyAxNC4zMjg2MTMgUSAzNy40ODUzNSAxNC4zMjg2MTMgMzcuOTMzODM4IDEzLjcwODI1MiBRIDM4LjM4MjMyNCAxMy4wODc4OTIgMzguMzgyMzI0IDExLjk5NzU1OSBaIE0gNDMuNzgwMjczIDExLjk3NjA3NCBRIDQyLjU4MjUyIDExLjk3NjA3NCA0Mi4xMjA2MDUgMTIuMjQ5OTk5IFEgNDEuNjU4NjkgMTIuNTIzOTI2IDQxLjY1ODY5IDEzLjE4NDU3MSBRIDQxLjY1ODY5IDEzLjcxMDkzNzUgNDIuMDA1MTI3IDE0LjAxOTc3NiBRIDQyLjM1MTU2MyAxNC4zMjg2MTMgNDIuOTQ3NzU0IDE0LjMyODYxMyBRIDQzLjc2OTUzNSAxNC4zMjg2MTMgNDQuMjY2MzU3IDEzLjc0NTg1IFEgNDQuNzYzMTg0IDEzLjE2MzA4NiA0NC43NjMxODQgMTIuMTk2Mjg5IEwgNDQuNzYzMTg0IDExLjk3NjA3NCBMIDQzLjc4MDI3MyAxMS45NzYwNzQgWiBNIDQ1Ljc1MTQ2NSAxMS41Njc4NzEgTCA0NS43NTE0NjUgMTUgTCA0NC43NjMxODQgMTUgTCA0NC43NjMxODQgMTQuMDg2OTE1IFEgNDQuNDI0ODA1IDE0LjYzNDc2NiA0My45MTk5MiAxNC44OTUyNjQgUSA0My40MTUwNCAxNS4xNTU3NjIgNDIuNjg0NTcgMTUuMTU1NzYyIFEgNDEuNzYwNzQyIDE1LjE1NTc2MiA0MS4yMTU1NzYgMTQuNjM3NDUxIFEgNDAuNjcwNDEgMTQuMTE5MTQyIDQwLjY3MDQxIDEzLjI0OTAyNCBRIDQwLjY3MDQxIDEyLjIzMzg4NyA0MS4zNDk4NTQgMTEuNzE4MjYyIFEgNDIuMDI5Mjk3IDExLjIwMjYzNyA0My4zNzc0NDUgMTEuMjAyNjM3IEwgNDQuNzYzMTg0IDExLjIwMjYzNyBMIDQ0Ljc2MzE4NCAxMS4xMDU5NTcgUSA0NC43NjMxODQgMTAuNDIzODI4IDQ0LjMxNDY5NyAxMC4wNTA1MzcgUSA0My44NjYyMSA5LjY3NzI0NiA0My4wNTUxNzYgOS42NzcyNDYgUSA0Mi41Mzk1NSA5LjY3NzI0NiA0Mi4wNTA3OCA5LjgwMDc4MSBRIDQxLjU2MjAxIDkuOTI0MzE2IDQxLjExMDg0IDEwLjE3MTM4NyBMIDQxLjExMDg0IDkuMjU4MzAxIFEgNDEuNjUzMzIgOS4wNDg4MjggNDIuMTYzNTc0IDguOTQ0MDkyIFEgNDIuNjczODMgOC44MzkzNTUgNDMuMTU3MjI3IDguODM5MzU1IFEgNDQuNDYyNDAyIDguODM5MzU1IDQ1LjEwNjkzNCA5LjUxNjExMyBRIDQ1Ljc1MTQ2NSAxMC4xOTI4NzEgNDUuNzUxNDY1IDExLjU2Nzg3MSBaIE0gNTIuMTE2MjA3IDkuMjE1MzMyIEwgNTIuMTE2MjA3IDEwLjEzOTE2IFEgNTEuNjk3MjY2IDkuOTA4MjAzIDUxLjI3NTYzIDkuNzkyNzI1IFEgNTAuODU0MDA0IDkuNjc3MjQ2IDUwLjQyNDMxNiA5LjY3NzI0NiBRIDQ5LjQ2Mjg5IDkuNjc3MjQ2IDQ4LjkzMTE1MiAxMC4yODY4NjUgUSA0OC4zOTk0MTggMTAuODk2NDgzIDQ4LjM5OTQxOCAxMS45OTc1NTkgUSA0OC4zOTk0MTggMTMuMDk4NjMzIDQ4LjkzMTE1MiAxMy43MDgyNTIgUSA0OS40NjI4OSAxNC4zMTc4NzEgNTAuNDI0MzE2IDE0LjMxNzg3MSBRIDUwLjg1NDAwNCAxNC4zMTc4NzEgNTEuMjc1NjMgMTQuMjAyMzkzIFEgNTEuNjk3MjY2IDE0LjA4NjkxNSA1Mi4xMTYyMDcgMTMuODU1OTU2IEwgNTIuMTE2MjA3IDE0Ljc2OTA0MyBRIDUxLjcwMjYzNyAxNC45NjI0MDIgNTEuMjU5NTIgMTUuMDU5MDgyIFEgNTAuODE2NDA2IDE1LjE1NTc2MiA1MC4zMTY4OSAxNS4xNTU3NjIgUSA0OC45NTgwMDggMTUuMTU1NzYyIDQ4LjE1NzcxNSAxNC4zMDE3NTggUSA0Ny4zNTc0MTggMTMuNDQ3NzU0IDQ3LjM1NzQxOCAxMS45OTc1NTkgUSA0Ny4zNTc0MTggMTAuNTI1ODc5IDQ4LjE2NTc3IDkuNjgyNjE3IFEgNDguOTc0MTIgOC44MzkzNTUgNTAuMzgxMzQ4IDguODM5MzU1IFEgNTAuODM3ODk0IDguODM5MzU1IDUxLjI3Mjk1IDguOTMzMzUgUSA1MS43MDgwMDggOS4wMjczNDQgNTIuMTE2MjA3IDkuMjE1MzMyIFogTSA1My43OTczNjcgNi42NDI1NzggTCA1NC43OTEwMTYgNi42NDI1NzggTCA1NC43OTEwMTYgMTEuNTc4NjE0IEwgNTcuNzM5NzQ2IDguOTg0Mzc1IEwgNTkuMDAxOTUzIDguOTg0Mzc1IEwgNTUuODExNTIzIDExLjc5ODgyNyBMIDU5LjEzNjIzIDE1IEwgNTcuODQ3MTY4IDE1IEwgNTQuNzkxMDE2IDEyLjA2MjAxMiBMIDU0Ljc5MTAxNiAxNSBMIDUzLjc5NzM2NyAxNSBMIDUzLjc5NzM2NyA2LjY0MjU3OCBaIE0gNjIuNzQ1NjA1IDExLjk3NjA3NCBRIDYxLjU0Nzg1IDExLjk3NjA3NCA2MS4wODU5MzggMTIuMjQ5OTk5IFEgNjAuNjI0MDI3IDEyLjUyMzkyNiA2MC42MjQwMjcgMTMuMTg0NTcxIFEgNjAuNjI0MDI3IDEzLjcxMDkzNzUgNjAuOTcwNDYgMTQuMDE5Nzc2IFEgNjEuMzE2ODk1IDE0LjMyODYxMyA2MS45MTMwOSAxNC4zMjg2MTMgUSA2Mi43MzQ4NjMgMTQuMzI4NjEzIDYzLjIzMTY5IDEzLjc0NTg1IFEgNjMuNzI4NTE2IDEzLjE2MzA4NiA2My43Mjg1MTYgMTIuMTk2Mjg5IEwgNjMuNzI4NTE2IDExLjk3NjA3NCBMIDYyLjc0NTYwNSAxMS45NzYwNzQgWiBNIDY0LjcxNjggMTEuNTY3ODcxIEwgNjQuNzE2OCAxNSBMIDYzLjcyODUxNiAxNSBMIDYzLjcyODUxNiAxNC4wODY5MTUgUSA2My4zOTAxMzcgMTQuNjM0NzY2IDYyLjg4NTI1NCAxNC44OTUyNjQgUSA2Mi4zODAzNyAxNS4xNTU3NjIgNjEuNjQ5OTA2IDE1LjE1NTc2MiBRIDYwLjcyNjA3NCAxNS4xNTU3NjIgNjAuMTgwOTEgMTQuNjM3NDUxIFEgNTkuNjM1NzQyIDE0LjExOTE0MiA1OS42MzU3NDIgMTMuMjQ5MDI0IFEgNTkuNjM1NzQyIDEyLjIzMzg4NyA2MC4zMTUxODYgMTEuNzE4MjYyIFEgNjAuOTk0NjI1IDExLjIwMjYzNyA2Mi4zNDI3NzMgMTEuMjAyNjM3IEwgNjMuNzI4NTE2IDExLjIwMjYzNyBMIDYzLjcyODUxNiAxMS4xMDU5NTcgUSA2My43Mjg1MTYgMTAuNDIzODI4IDYzLjI4MDAzIDEwLjA1MDUzNyBRIDYyLjgzMTU0MyA5LjY3NzI0NiA2Mi4wMjA1MDQgOS42NzcyNDYgUSA2MS41MDQ4OCA5LjY3NzI0NiA2MS4wMTYxMTcgOS44MDA3ODEgUSA2MC41MjczNDQgOS45MjQzMTYgNjAuMDc2MTcgMTAuMTcxMzg3IEwgNjAuMDc2MTcgOS4yNTgzMDEgUSA2MC42MTg2NTYgOS4wNDg4MjggNjEuMTI4OTEgOC45NDQwOTIgUSA2MS42MzkxNTYgOC44MzkzNTUgNjIuMTIyNTYgOC44MzkzNTUgUSA2My40Mjc3MzQgOC44MzkzNTUgNjQuMDcyMjY2IDkuNTE2MTEzIFEgNjQuNzE2OCAxMC4xOTI4NzEgNjQuNzE2OCAxMS41Njc4NzEgWiBNIDcwLjcxMDk0IDExLjkyMjM2MyBRIDcwLjcxMDk0IDEwLjg0ODE0NSA3MC4yNjc4MiAxMC4yNTczMjQgUSA2OS44MjQ3MSA5LjY2NjUwNCA2OS4wMjQ0MTQgOS42NjY1MDQgUSA2OC4yMjk0OSA5LjY2NjUwNCA2Ny43ODYzOCAxMC4yNTczMjQgUSA2Ny4zNDMyNiAxMC44NDgxNDUgNjcuMzQzMjYgMTEuOTIyMzYzIFEgNjcuMzQzMjYgMTIuOTkxMjEyIDY3Ljc4NjM4IDEzLjU4MjAzMSBRIDY4LjIyOTQ5IDE0LjE3Mjg1MiA2OS4wMjQ0MTQgMTQuMTcyODUyIFEgNjkuODI0NzEgMTQuMTcyODUyIDcwLjI2NzgyIDEzLjU4MjAzMSBRIDcwLjcxMDk0IDEyLjk5MTIxMiA3MC43MTA5NCAxMS45MjIzNjMgWiBNIDcxLjY5OTIyIDE0LjI1MzQxOCBRIDcxLjY5OTIyIDE1Ljc4OTU1MiA3MS4wMTcwOSAxNi41Mzg4MTggUSA3MC4zMzQ5NiAxNy4yODgwODYgNjguOTI3NzM0IDE3LjI4ODA4NiBRIDY4LjQwNjc0IDE3LjI4ODA4NiA2Ny45NDQ4MjQgMTcuMjEwMjA1IFEgNjcuNDgyOTEgMTcuMTMyMzI0IDY3LjA0Nzg1IDE2Ljk3MTE5MSBMIDY3LjA0Nzg1IDE2LjAwOTc2NiBRIDY3LjQ4MjkxIDE2LjI0NjA5NCA2Ny45MDcyMyAxNi4zNTg4ODcgUSA2OC4zMzE1NCAxNi40NzE2OCA2OC43NzE5NyAxNi40NzE2OCBRIDY5Ljc0NDE0IDE2LjQ3MTY4IDcwLjIyNzU0IDE1Ljk2NDExMSBRIDcwLjcxMDk0IDE1LjQ1NjU0MyA3MC43MTA5NCAxNC40MzA2NjQgTCA3MC43MTA5NCAxMy45NDE4OTUgUSA3MC40MDQ3ODUgMTQuNDczNjMzIDY5LjkyNjc2IDE0LjczNjgxNiBRIDY5LjQ0ODczIDE1IDY4Ljc4MjcxNSAxNSBRIDY3LjY3NjI3IDE1IDY2Ljk5OTUxIDE0LjE1NjczOCBRIDY2LjMyMjc1NCAxMy4zMTM0Nzc1IDY2LjMyMjc1NCAxMS45MjIzNjMgUSA2Ni4zMjI3NTQgMTAuNTI1ODc5IDY2Ljk5OTUxIDkuNjgyNjE3IFEgNjcuNjc2MjcgOC44MzkzNTUgNjguNzgyNzE1IDguODM5MzU1IFEgNjkuNDQ4NzMgOC44MzkzNTUgNjkuOTI2NzYgOS4xMDI1MzkgUSA3MC40MDQ3ODUgOS4zNjU3MjMgNzAuNzEwOTQgOS44OTc0NjEgTCA3MC43MTA5NCA4Ljk4NDM3NSBMIDcxLjY5OTIyIDguOTg0Mzc1IEwgNzEuNjk5MjIgMTQuMjUzNDE4IFogTSA3OC44ODAzNyAxMS43NDUxMTcgTCA3OC44ODAzNyAxMi4yMjg1MTYgTCA3NC4zMzY0MjYgMTIuMjI4NTE2IFEgNzQuNDAwODggMTMuMjQ5MDI0IDc0Ljk1MTQxNiAxMy43ODM0NDcgUSA3NS41MDE5NSAxNC4zMTc4NzEgNzYuNDg0ODYgMTQuMzE3ODcxIFEgNzcuMDU0MiAxNC4zMTc4NzEgNzcuNTg4NjIgMTQuMTc4MjIyIFEgNzguMTIzMDUgMTQuMDM4NTc0IDc4LjY0OTQxNCAxMy43NTkyNzYgTCA3OC42NDk0MTQgMTQuNjkzODQ3IFEgNzguMTE3Njc2IDE0LjkxOTQzMyA3Ny41NTkwOCAxNS4wMzc1OTggUSA3Ny4wMDA0OSAxNS4xNTU3NjIgNzYuNDI1NzggMTUuMTU1NzYyIFEgNzQuOTg2MzMgMTUuMTU1NzYyIDc0LjE0NTc1IDE0LjMxNzg3MSBRIDczLjMwNTE3NiAxMy40Nzk5OCA3My4zMDUxNzYgMTIuMDUxMjcgUSA3My4zMDUxNzYgMTAuNTc0MjE5IDc0LjEwMjc4IDkuNzA2Nzg3IFEgNzQuOTAwMzkgOC44MzkzNTUgNzYuMjUzOTEgOC44MzkzNTUgUSA3Ny40Njc3NyA4LjgzOTM1NSA3OC4xNzQwNyA5LjYyMDg1IFEgNzguODgwMzcgMTAuNDAyMzQ0IDc4Ljg4MDM3IDExLjc0NTExNyBaIE0gNzcuODkyMDkgMTEuNDU1MDc4IFEgNzcuODgxMzUgMTAuNjQ0MDQzIDc3LjQzODIzIDEwLjE2MDY0NSBRIDc2Ljk5NTEyIDkuNjc3MjQ2IDc2LjI2NDY1IDkuNjc3MjQ2IFEgNzUuNDM3NSA5LjY3NzI0NiA3NC45NDA2NzQgMTAuMTQ0NTMxIFEgNzQuNDQzODUgMTAuNjExODE2IDc0LjM2ODY1IDExLjQ2MDQ0OSBMIDc3Ljg5MjA5IDExLjQ1NTA3OCBaIi8+CiAgICA8L2c+CiAgICA8ZwogICAgICBpZD0idFRleHQiPgogICAgICA8cGF0aAogICAgICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgc3Ryb2tlPSIjZmZmZmZmIgogICAgICAgIHN0cm9rZS13aWR0aD0iMC4zIgogICAgICAgIGQ9Ik0gNy45OTI2NzYgMTMuMDk3NjU2IEwgNy45OTI2NzYgMTYuMjg4MDg2IEwgNi45OTkwMjM0IDE2LjI4ODA4NiBMIDYuOTk5MDIzNCA3Ljk4NDM3NSBMIDcuOTkyNjc2IDcuOTg0Mzc1IEwgNy45OTI2NzYgOC44OTc0NjEgUSA4LjMwNDE5OSA4LjM2MDM1MiA4Ljc3OTU0MSA4LjA5OTg1MzUgUSA5LjI1NDg4MyA3LjgzOTM1NTUgOS45MTU1MjcgNy44MzkzNTU1IFEgMTEuMDExMjMgNy44MzkzNTU1IDExLjY5NjA0NSA4LjcwOTQ3MyBRIDEyLjM4MDg1OCA5LjU3OTU5IDEyLjM4MDg1OCAxMC45OTc1NTkgUSAxMi4zODA4NTggMTIuNDE1NTI3IDExLjY5NjA0NSAxMy4yODU2NDUgUSAxMS4wMTEyMyAxNC4xNTU3NjIgOS45MTU1MjcgMTQuMTU1NzYyIFEgOS4yNTQ4ODMgMTQuMTU1NzYyIDguNzc5NTQxIDEzLjg5NTI2NCBRIDguMzA0MTk5IDEzLjYzNDc2NiA3Ljk5MjY3NiAxMy4wOTc2NTYgWiBNIDExLjM1NDk3OTUgMTAuOTk3NTU5IFEgMTEuMzU0OTc5NSA5LjkwNzIyNyAxMC45MDY0OTUgOS4yODY4NjUgUSAxMC40NTgwMDggOC42NjY1MDQgOS42NzM4MjggOC42NjY1MDQgUSA4Ljg4OTY0OCA4LjY2NjUwNCA4LjQ0MTE2MiA5LjI4Njg2NSBRIDcuOTkyNjc2IDkuOTA3MjI3IDcuOTkyNjc2IDEwLjk5NzU1OSBRIDcuOTkyNjc2IDEyLjA4Nzg5MiA4LjQ0MTE2MiAxMi43MDgyNTIgUSA4Ljg4OTY0OCAxMy4zMjg2MTMgOS42NzM4MjggMTMuMzI4NjEzIFEgMTAuNDU4MDA4IDEzLjMyODYxMyAxMC45MDY0OTUgMTIuNzA4MjUyIFEgMTEuMzU0OTc5NSAxMi4wODc4OTIgMTEuMzU0OTc5NSAxMC45OTc1NTkgWiBNIDE2LjUyMTk3MyAxNC41NTg1OTQgUSAxNi4xMDMwMjcgMTUuNjMyODEyNSAxNS43MDU1NjYgMTUuOTYwNDQ5IFEgMTUuMzA4MTA0NSAxNi4yODgwODYgMTQuNjQyMDkgMTYuMjg4MDg2IEwgMTMuODUyNTM5IDE2LjI4ODA4NiBMIDEzLjg1MjUzOSAxNS40NjA5MzcgTCAxNC40MzI2MTcgMTUuNDYwOTM3IFEgMTQuODQwODIgMTUuNDYwOTM3IDE1LjA2NjQwNiAxNS4yNjc1NzcgUSAxNS4yOTE5OTIgMTUuMDc0MjE4IDE1LjU2NTkxNyAxNC4zNTQ0OTIgTCAxNS43NDMxNjQgMTMuOTAzMzIgTCAxMy4zMTAwNTkgNy45ODQzNzUgTCAxNC4zNTc0MjIgNy45ODQzNzUgTCAxNi4yMzczMDUgMTIuNjg5NDUzIEwgMTguMTE3MTg4IDcuOTg0Mzc1IEwgMTkuMTY0NTUgNy45ODQzNzUgTCAxNi41MjE5NzMgMTQuNTU4NTk0IFogTSAyMS40ODQ4NjMgMTMuMDk3NjU2IEwgMjEuNDg0ODYzIDE2LjI4ODA4NiBMIDIwLjQ5MTIxIDE2LjI4ODA4NiBMIDIwLjQ5MTIxIDcuOTg0Mzc1IEwgMjEuNDg0ODYzIDcuOTg0Mzc1IEwgMjEuNDg0ODYzIDguODk3NDYxIFEgMjEuNzk2Mzg5IDguMzYwMzUyIDIyLjI3MTcyOSA4LjA5OTg1MzUgUSAyMi43NDcwNyA3LjgzOTM1NTUgMjMuNDA3NzE3IDcuODM5MzU1NSBRIDI0LjUwMzQxOCA3LjgzOTM1NTUgMjUuMTg4MjMyIDguNzA5NDczIFEgMjUuODczMDQ3IDkuNTc5NTkgMjUuODczMDQ3IDEwLjk5NzU1OSBRIDI1Ljg3MzA0NyAxMi40MTU1MjcgMjUuMTg4MjMyIDEzLjI4NTY0NSBRIDI0LjUwMzQxOCAxNC4xNTU3NjIgMjMuNDA3NzE3IDE0LjE1NTc2MiBRIDIyLjc0NzA3IDE0LjE1NTc2MiAyMi4yNzE3MjkgMTMuODk1MjY0IFEgMjEuNzk2Mzg5IDEzLjYzNDc2NiAyMS40ODQ4NjMgMTMuMDk3NjU2IFogTSAyNC44NDcxNjggMTAuOTk3NTU5IFEgMjQuODQ3MTY4IDkuOTA3MjI3IDI0LjM5ODY4MiA5LjI4Njg2NSBRIDIzLjk1MDE5NSA4LjY2NjUwNCAyMy4xNjYwMTYgOC42NjY1MDQgUSAyMi4zODE4MzYgOC42NjY1MDQgMjEuOTMzMzUgOS4yODY4NjUgUSAyMS40ODQ4NjMgOS45MDcyMjcgMjEuNDg0ODYzIDEwLjk5NzU1OSBRIDIxLjQ4NDg2MyAxMi4wODc4OTIgMjEuOTMzMzUgMTIuNzA4MjUyIFEgMjIuMzgxODM2IDEzLjMyODYxMyAyMy4xNjYwMTYgMTMuMzI4NjEzIFEgMjMuOTUwMTk1IDEzLjMyODYxMyAyNC4zOTg2ODIgMTIuNzA4MjUyIFEgMjQuODQ3MTY4IDEyLjA4Nzg5MiAyNC44NDcxNjggMTAuOTk3NTU5IFogTSAyNy41MTEyMjkgNy45ODQzNzUgTCAyOC40OTk1MTIgNy45ODQzNzUgTCAyOC40OTk1MTIgMTQgTCAyNy41MTEyMjkgMTQgTCAyNy41MTEyMjkgNy45ODQzNzUgWiBNIDI3LjUxMTIyOSA1LjY0MjU3OCBMIDI4LjQ5OTUxMiA1LjY0MjU3OCBMIDI4LjQ5OTUxMiA2Ljg5NDA0MyBMIDI3LjUxMTIyOSA2Ljg5NDA0MyBMIDI3LjUxMTIyOSA1LjY0MjU3OCBaIE0gMzUuMDIwMDIgMTMuMDk3NjU2IEwgMzUuMDIwMDIgMTYuMjg4MDg2IEwgMzQuMDI2MzY3IDE2LjI4ODA4NiBMIDM0LjAyNjM2NyA3Ljk4NDM3NSBMIDM1LjAyMDAyIDcuOTg0Mzc1IEwgMzUuMDIwMDIgOC44OTc0NjEgUSAzNS4zMzE1NDMgOC4zNjAzNTIgMzUuODA2ODg1IDguMDk5ODUzNSBRIDM2LjI4MjIyNyA3LjgzOTM1NTUgMzYuOTQyODcgNy44MzkzNTU1IFEgMzguMDM4NTc0IDcuODM5MzU1NSAzOC43MjMzOSA4LjcwOTQ3MyBRIDM5LjQwODIwMyA5LjU3OTU5IDM5LjQwODIwMyAxMC45OTc1NTkgUSAzOS40MDgyMDMgMTIuNDE1NTI3IDM4LjcyMzM5IDEzLjI4NTY0NSBRIDM4LjAzODU3NCAxNC4xNTU3NjIgMzYuOTQyODcgMTQuMTU1NzYyIFEgMzYuMjgyMjI3IDE0LjE1NTc2MiAzNS44MDY4ODUgMTMuODk1MjY0IFEgMzUuMzMxNTQzIDEzLjYzNDc2NiAzNS4wMjAwMiAxMy4wOTc2NTYgWiBNIDM4LjM4MjMyNCAxMC45OTc1NTkgUSAzOC4zODIzMjQgOS45MDcyMjcgMzcuOTMzODM4IDkuMjg2ODY1IFEgMzcuNDg1MzUgOC42NjY1MDQgMzYuNzAxMTcgOC42NjY1MDQgUSAzNS45MTY5OTIgOC42NjY1MDQgMzUuNDY4NTA2IDkuMjg2ODY1IFEgMzUuMDIwMDIgOS45MDcyMjcgMzUuMDIwMDIgMTAuOTk3NTU5IFEgMzUuMDIwMDIgMTIuMDg3ODkyIDM1LjQ2ODUwNiAxMi43MDgyNTIgUSAzNS45MTY5OTIgMTMuMzI4NjEzIDM2LjcwMTE3IDEzLjMyODYxMyBRIDM3LjQ4NTM1IDEzLjMyODYxMyAzNy45MzM4MzggMTIuNzA4MjUyIFEgMzguMzgyMzI0IDEyLjA4Nzg5MiAzOC4zODIzMjQgMTAuOTk3NTU5IFogTSA0My43ODAyNzMgMTAuOTc2MDc0IFEgNDIuNTgyNTIgMTAuOTc2MDc0IDQyLjEyMDYwNSAxMS4yNDk5OTkgUSA0MS42NTg2OSAxMS41MjM5MjYgNDEuNjU4NjkgMTIuMTg0NTcxIFEgNDEuNjU4NjkgMTIuNzEwOTM3NSA0Mi4wMDUxMjcgMTMuMDE5Nzc2IFEgNDIuMzUxNTYzIDEzLjMyODYxMyA0Mi45NDc3NTQgMTMuMzI4NjEzIFEgNDMuNzY5NTM1IDEzLjMyODYxMyA0NC4yNjYzNTcgMTIuNzQ1ODUgUSA0NC43NjMxODQgMTIuMTYzMDg2IDQ0Ljc2MzE4NCAxMS4xOTYyODkgTCA0NC43NjMxODQgMTAuOTc2MDc0IEwgNDMuNzgwMjczIDEwLjk3NjA3NCBaIE0gNDUuNzUxNDY1IDEwLjU2Nzg3MSBMIDQ1Ljc1MTQ2NSAxNCBMIDQ0Ljc2MzE4NCAxNCBMIDQ0Ljc2MzE4NCAxMy4wODY5MTUgUSA0NC40MjQ4MDUgMTMuNjM0NzY2IDQzLjkxOTkyIDEzLjg5NTI2NCBRIDQzLjQxNTA0IDE0LjE1NTc2MiA0Mi42ODQ1NyAxNC4xNTU3NjIgUSA0MS43NjA3NDIgMTQuMTU1NzYyIDQxLjIxNTU3NiAxMy42Mzc0NTEgUSA0MC42NzA0MSAxMy4xMTkxNDIgNDAuNjcwNDEgMTIuMjQ5MDI0IFEgNDAuNjcwNDEgMTEuMjMzODg3IDQxLjM0OTg1NCAxMC43MTgyNjIgUSA0Mi4wMjkyOTcgMTAuMjAyNjM3IDQzLjM3NzQ0NSAxMC4yMDI2MzcgTCA0NC43NjMxODQgMTAuMjAyNjM3IEwgNDQuNzYzMTg0IDEwLjEwNTk1NyBRIDQ0Ljc2MzE4NCA5LjQyMzgyOCA0NC4zMTQ2OTcgOS4wNTA1MzcgUSA0My44NjYyMSA4LjY3NzI0NiA0My4wNTUxNzYgOC42NzcyNDYgUSA0Mi41Mzk1NSA4LjY3NzI0NiA0Mi4wNTA3OCA4LjgwMDc4MSBRIDQxLjU2MjAxIDguOTI0MzE2IDQxLjExMDg0IDkuMTcxMzg3IEwgNDEuMTEwODQgOC4yNTgzMDEgUSA0MS42NTMzMiA4LjA0ODgyOCA0Mi4xNjM1NzQgNy45NDQwOTEzIFEgNDIuNjczODMgNy44MzkzNTU1IDQzLjE1NzIyNyA3LjgzOTM1NTUgUSA0NC40NjI0MDIgNy44MzkzNTU1IDQ1LjEwNjkzNCA4LjUxNjExMyBRIDQ1Ljc1MTQ2NSA5LjE5Mjg3MSA0NS43NTE0NjUgMTAuNTY3ODcxIFogTSA1Mi4xMTYyMDcgOC4yMTUzMzIgTCA1Mi4xMTYyMDcgOS4xMzkxNiBRIDUxLjY5NzI2NiA4LjkwODIwMyA1MS4yNzU2MyA4Ljc5MjcyNSBRIDUwLjg1NDAwNCA4LjY3NzI0NiA1MC40MjQzMTYgOC42NzcyNDYgUSA0OS40NjI4OSA4LjY3NzI0NiA0OC45MzExNTIgOS4yODY4NjUgUSA0OC4zOTk0MTggOS44OTY0ODQgNDguMzk5NDE4IDEwLjk5NzU1OSBRIDQ4LjM5OTQxOCAxMi4wOTg2MzMgNDguOTMxMTUyIDEyLjcwODI1MiBRIDQ5LjQ2Mjg5IDEzLjMxNzg3MSA1MC40MjQzMTYgMTMuMzE3ODcxIFEgNTAuODU0MDA0IDEzLjMxNzg3MSA1MS4yNzU2MyAxMy4yMDIzOTMgUSA1MS42OTcyNjYgMTMuMDg2OTE1IDUyLjExNjIwNyAxMi44NTU5NTYgTCA1Mi4xMTYyMDcgMTMuNzY5MDQzIFEgNTEuNzAyNjM3IDEzLjk2MjQwMiA1MS4yNTk1MiAxNC4wNTkwODIgUSA1MC44MTY0MDYgMTQuMTU1NzYyIDUwLjMxNjg5IDE0LjE1NTc2MiBRIDQ4Ljk1ODAwOCAxNC4xNTU3NjIgNDguMTU3NzE1IDEzLjMwMTc1OCBRIDQ3LjM1NzQxOCAxMi40NDc3NTQgNDcuMzU3NDE4IDEwLjk5NzU1OSBRIDQ3LjM1NzQxOCA5LjUyNTg3OSA0OC4xNjU3NyA4LjY4MjYxNyBRIDQ4Ljk3NDEyIDcuODM5MzU1NSA1MC4zODEzNDggNy44MzkzNTU1IFEgNTAuODM3ODk0IDcuODM5MzU1NSA1MS4yNzI5NSA3LjkzMzM0OTYgUSA1MS43MDgwMDggOC4wMjczNDQgNTIuMTE2MjA3IDguMjE1MzMyIFogTSA1My43OTczNjcgNS42NDI1NzggTCA1NC43OTEwMTYgNS42NDI1NzggTCA1NC43OTEwMTYgMTAuNTc4NjEzIEwgNTcuNzM5NzQ2IDcuOTg0Mzc1IEwgNTkuMDAxOTUzIDcuOTg0Mzc1IEwgNTUuODExNTIzIDEwLjc5ODgyNyBMIDU5LjEzNjIzIDE0IEwgNTcuODQ3MTY4IDE0IEwgNTQuNzkxMDE2IDExLjA2MjAxMiBMIDU0Ljc5MTAxNiAxNCBMIDUzLjc5NzM2NyAxNCBMIDUzLjc5NzM2NyA1LjY0MjU3OCBaIE0gNjIuNzQ1NjA1IDEwLjk3NjA3NCBRIDYxLjU0Nzg1IDEwLjk3NjA3NCA2MS4wODU5MzggMTEuMjQ5OTk5IFEgNjAuNjI0MDI3IDExLjUyMzkyNiA2MC42MjQwMjcgMTIuMTg0NTcxIFEgNjAuNjI0MDI3IDEyLjcxMDkzNzUgNjAuOTcwNDYgMTMuMDE5Nzc2IFEgNjEuMzE2ODk1IDEzLjMyODYxMyA2MS45MTMwOSAxMy4zMjg2MTMgUSA2Mi43MzQ4NjMgMTMuMzI4NjEzIDYzLjIzMTY5IDEyLjc0NTg1IFEgNjMuNzI4NTE2IDEyLjE2MzA4NiA2My43Mjg1MTYgMTEuMTk2Mjg5IEwgNjMuNzI4NTE2IDEwLjk3NjA3NCBMIDYyLjc0NTYwNSAxMC45NzYwNzQgWiBNIDY0LjcxNjggMTAuNTY3ODcxIEwgNjQuNzE2OCAxNCBMIDYzLjcyODUxNiAxNCBMIDYzLjcyODUxNiAxMy4wODY5MTUgUSA2My4zOTAxMzcgMTMuNjM0NzY2IDYyLjg4NTI1NCAxMy44OTUyNjQgUSA2Mi4zODAzNyAxNC4xNTU3NjIgNjEuNjQ5OTA2IDE0LjE1NTc2MiBRIDYwLjcyNjA3NCAxNC4xNTU3NjIgNjAuMTgwOTEgMTMuNjM3NDUxIFEgNTkuNjM1NzQyIDEzLjExOTE0MiA1OS42MzU3NDIgMTIuMjQ5MDI0IFEgNTkuNjM1NzQyIDExLjIzMzg4NyA2MC4zMTUxODYgMTAuNzE4MjYyIFEgNjAuOTk0NjI1IDEwLjIwMjYzNyA2Mi4zNDI3NzMgMTAuMjAyNjM3IEwgNjMuNzI4NTE2IDEwLjIwMjYzNyBMIDYzLjcyODUxNiAxMC4xMDU5NTcgUSA2My43Mjg1MTYgOS40MjM4MjggNjMuMjgwMDMgOS4wNTA1MzcgUSA2Mi44MzE1NDMgOC42NzcyNDYgNjIuMDIwNTA0IDguNjc3MjQ2IFEgNjEuNTA0ODggOC42NzcyNDYgNjEuMDE2MTE3IDguODAwNzgxIFEgNjAuNTI3MzQ0IDguOTI0MzE2IDYwLjA3NjE3IDkuMTcxMzg3IEwgNjAuMDc2MTcgOC4yNTgzMDEgUSA2MC42MTg2NTYgOC4wNDg4MjggNjEuMTI4OTEgNy45NDQwOTEzIFEgNjEuNjM5MTU2IDcuODM5MzU1NSA2Mi4xMjI1NiA3LjgzOTM1NTUgUSA2My40Mjc3MzQgNy44MzkzNTU1IDY0LjA3MjI2NiA4LjUxNjExMyBRIDY0LjcxNjggOS4xOTI4NzEgNjQuNzE2OCAxMC41Njc4NzEgWiBNIDcwLjcxMDk0IDEwLjkyMjM2MyBRIDcwLjcxMDk0IDkuODQ4MTQ1IDcwLjI2NzgyIDkuMjU3MzI0IFEgNjkuODI0NzEgOC42NjY1MDQgNjkuMDI0NDE0IDguNjY2NTA0IFEgNjguMjI5NDkgOC42NjY1MDQgNjcuNzg2MzggOS4yNTczMjQgUSA2Ny4zNDMyNiA5Ljg0ODE0NSA2Ny4zNDMyNiAxMC45MjIzNjMgUSA2Ny4zNDMyNiAxMS45OTEyMTIgNjcuNzg2MzggMTIuNTgyMDMxIFEgNjguMjI5NDkgMTMuMTcyODUyIDY5LjAyNDQxNCAxMy4xNzI4NTIgUSA2OS44MjQ3MSAxMy4xNzI4NTIgNzAuMjY3ODIgMTIuNTgyMDMxIFEgNzAuNzEwOTQgMTEuOTkxMjEyIDcwLjcxMDk0IDEwLjkyMjM2MyBaIE0gNzEuNjk5MjIgMTMuMjUzNDE4IFEgNzEuNjk5MjIgMTQuNzg5NTUyIDcxLjAxNzA5IDE1LjUzODgxOCBRIDcwLjMzNDk2IDE2LjI4ODA4NiA2OC45Mjc3MzQgMTYuMjg4MDg2IFEgNjguNDA2NzQgMTYuMjg4MDg2IDY3Ljk0NDgyNCAxNi4yMTAyMDUgUSA2Ny40ODI5MSAxNi4xMzIzMjQgNjcuMDQ3ODUgMTUuOTcxMTkxIEwgNjcuMDQ3ODUgMTUuMDA5NzY1IFEgNjcuNDgyOTEgMTUuMjQ2MDk0IDY3LjkwNzIzIDE1LjM1ODg4NyBRIDY4LjMzMTU0IDE1LjQ3MTY4IDY4Ljc3MTk3IDE1LjQ3MTY4IFEgNjkuNzQ0MTQgMTUuNDcxNjggNzAuMjI3NTQgMTQuOTY0MTExIFEgNzAuNzEwOTQgMTQuNDU2NTQzIDcwLjcxMDk0IDEzLjQzMDY2NCBMIDcwLjcxMDk0IDEyLjk0MTg5NSBRIDcwLjQwNDc4NSAxMy40NzM2MzMgNjkuOTI2NzYgMTMuNzM2ODE2IFEgNjkuNDQ4NzMgMTQgNjguNzgyNzE1IDE0IFEgNjcuNjc2MjcgMTQgNjYuOTk5NTEgMTMuMTU2NzM4IFEgNjYuMzIyNzU0IDEyLjMxMzQ3NzUgNjYuMzIyNzU0IDEwLjkyMjM2MyBRIDY2LjMyMjc1NCA5LjUyNTg3OSA2Ni45OTk1MSA4LjY4MjYxNyBRIDY3LjY3NjI3IDcuODM5MzU1NSA2OC43ODI3MTUgNy44MzkzNTU1IFEgNjkuNDQ4NzMgNy44MzkzNTU1IDY5LjkyNjc2IDguMTAyNTM5IFEgNzAuNDA0Nzg1IDguMzY1NzIzIDcwLjcxMDk0IDguODk3NDYxIEwgNzAuNzEwOTQgNy45ODQzNzUgTCA3MS42OTkyMiA3Ljk4NDM3NSBMIDcxLjY5OTIyIDEzLjI1MzQxOCBaIE0gNzguODgwMzcgMTAuNzQ1MTE3IEwgNzguODgwMzcgMTEuMjI4NTE2IEwgNzQuMzM2NDI2IDExLjIyODUxNiBRIDc0LjQwMDg4IDEyLjI0OTAyNCA3NC45NTE0MTYgMTIuNzgzNDQ3IFEgNzUuNTAxOTUgMTMuMzE3ODcxIDc2LjQ4NDg2IDEzLjMxNzg3MSBRIDc3LjA1NDIgMTMuMzE3ODcxIDc3LjU4ODYyIDEzLjE3ODIyMiBRIDc4LjEyMzA1IDEzLjAzODU3NCA3OC42NDk0MTQgMTIuNzU5Mjc2IEwgNzguNjQ5NDE0IDEzLjY5Mzg0NyBRIDc4LjExNzY3NiAxMy45MTk0MzMgNzcuNTU5MDggMTQuMDM3NTk4IFEgNzcuMDAwNDkgMTQuMTU1NzYyIDc2LjQyNTc4IDE0LjE1NTc2MiBRIDc0Ljk4NjMzIDE0LjE1NTc2MiA3NC4xNDU3NSAxMy4zMTc4NzEgUSA3My4zMDUxNzYgMTIuNDc5OTggNzMuMzA1MTc2IDExLjA1MTI3IFEgNzMuMzA1MTc2IDkuNTc0MjE5IDc0LjEwMjc4IDguNzA2Nzg3IFEgNzQuOTAwMzkgNy44MzkzNTU1IDc2LjI1MzkxIDcuODM5MzU1NSBRIDc3LjQ2Nzc3IDcuODM5MzU1NSA3OC4xNzQwNyA4LjYyMDg1IFEgNzguODgwMzcgOS40MDIzNDQgNzguODgwMzcgMTAuNzQ1MTE3IFogTSA3Ny44OTIwOSAxMC40NTUwNzggUSA3Ny44ODEzNSA5LjY0NDA0MyA3Ny40MzgyMyA5LjE2MDY0NSBRIDc2Ljk5NTEyIDguNjc3MjQ2IDc2LjI2NDY1IDguNjc3MjQ2IFEgNzUuNDM3NSA4LjY3NzI0NiA3NC45NDA2NzQgOS4xNDQ1MzEgUSA3NC40NDM4NSA5LjYxMTgxNiA3NC4zNjg2NSAxMC40NjA0NDkgTCA3Ny44OTIwOSAxMC40NTUwNzggWiIvPgogICAgPC9nPgogIDwvZz4KICA8Zz4KICAgIDxnCiAgICAgIGlkPSJ2QmFjayI+CiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iIzAxMDEwMSIKICAgICAgICBmaWxsLW9wYWNpdHk9IjAuMyIKICAgICAgICBzdHJva2U9IiMwMTAxMDEiCiAgICAgICAgc3Ryb2tlLW9wYWNpdHk9IjAuMDk4MDM5MjIiCiAgICAgICAgc3Ryb2tlLXdpZHRoPSIwLjMiCiAgICAgICAgZD0iTSA5NC40OTY1OCA3LjY5NTMxMjUgUSA5My42NTg3IDcuNjk1MzEyNSA5My4yMzcwNiA4LjUxOTc3NSBRIDkyLjgxNTQzIDkuMzQ0MjM4IDkyLjgxNTQzIDEwLjk5ODUzNiBRIDkyLjgxNTQzIDEyLjY0NzQ2MSA5My4yMzcwNiAxMy40NzE5MjMgUSA5My42NTg3IDE0LjI5NjM4NyA5NC40OTY1OCAxNC4yOTYzODcgUSA5NS4zMzk4NSAxNC4yOTYzODcgOTUuNzYxNDggMTMuNDcxOTIzIFEgOTYuMTgzMSAxMi42NDc0NjEgOTYuMTgzMSAxMC45OTg1MzYgUSA5Ni4xODMxIDkuMzQ0MjM4IDk1Ljc2MTQ4IDguNTE5Nzc1IFEgOTUuMzM5ODUgNy42OTUzMTI1IDk0LjQ5NjU4IDcuNjk1MzEyNSBaIE0gOTQuNDk2NTggNi44MzU5Mzc1IFEgOTUuODQ0NzM0IDYuODM1OTM3NSA5Ni41NTY0MDQgNy45MDIwOTk2IFEgOTcuMjY4MDc0IDguOTY4MjYyIDk3LjI2ODA3NCAxMC45OTg1MzYgUSA5Ny4yNjgwNzQgMTMuMDIzNDM4IDk2LjU1NjQwNCAxNC4wODk2IFEgOTUuODQ0NzM0IDE1LjE1NTc2MiA5NC40OTY1OCAxNS4xNTU3NjIgUSA5My4xNDg0NCAxNS4xNTU3NjIgOTIuNDM2NzcgMTQuMDg5NiBRIDkxLjcyNTEgMTMuMDIzNDM4IDkxLjcyNTEgMTAuOTk4NTM2IFEgOTEuNzI1MSA4Ljk2ODI2MiA5Mi40MzY3NyA3LjkwMjA5OTYgUSA5My4xNDg0NCA2LjgzNTkzNzUgOTQuNDk2NTggNi44MzU5Mzc1IFogTSA5OS4xNzQ4MSAxMy42MzU3NDMgTCAxMDAuMzA4MSAxMy42MzU3NDMgTCAxMDAuMzA4MSAxNSBMIDk5LjE3NDgxIDE1IEwgOTkuMTc0ODEgMTMuNjM1NzQzIFogTSAxMDQuOTkxNzEgNy42OTUzMTI1IFEgMTA0LjE1MzgxIDcuNjk1MzEyNSAxMDMuNzMyMTcgOC41MTk3NzUgUSAxMDMuMzEwNTU1IDkuMzQ0MjM4IDEwMy4zMTA1NTUgMTAuOTk4NTM2IFEgMTAzLjMxMDU1NSAxMi42NDc0NjEgMTAzLjczMjE3IDEzLjQ3MTkyMyBRIDEwNC4xNTM4MSAxNC4yOTYzODcgMTA0Ljk5MTcxIDE0LjI5NjM4NyBRIDEwNS44MzQ5NSAxNC4yOTYzODcgMTA2LjI1NjU5IDEzLjQ3MTkyMyBRIDEwNi42NzgyMiAxMi42NDc0NjEgMTA2LjY3ODIyIDEwLjk5ODUzNiBRIDEwNi42NzgyMiA5LjM0NDIzOCAxMDYuMjU2NTkgOC41MTk3NzUgUSAxMDUuODM0OTUgNy42OTUzMTI1IDEwNC45OTE3MSA3LjY5NTMxMjUgWiBNIDEwNC45OTE3MSA2LjgzNTkzNzUgUSAxMDYuMzM5ODQgNi44MzU5Mzc1IDEwNy4wNTE1MDYgNy45MDIwOTk2IFEgMTA3Ljc2MzE3NiA4Ljk2ODI2MiAxMDcuNzYzMTc2IDEwLjk5ODUzNiBRIDEwNy43NjMxNzYgMTMuMDIzNDM4IDEwNy4wNTE1MDYgMTQuMDg5NiBRIDEwNi4zMzk4NCAxNS4xNTU3NjIgMTA0Ljk5MTcxIDE1LjE1NTc2MiBRIDEwMy42NDM1NTUgMTUuMTU1NzYyIDEwMi45MzE4ODUgMTQuMDg5NiBRIDEwMi4yMjAyMTUgMTMuMDIzNDM4IDEwMi4yMjAyMTUgMTAuOTk4NTM2IFEgMTAyLjIyMDIxNSA4Ljk2ODI2MiAxMDIuOTMxODg1IDcuOTAyMDk5NiBRIDEwMy42NDM1NTUgNi44MzU5Mzc1IDEwNC45OTE3MSA2LjgzNTkzNzUgWiBNIDEwOS42Njk5MiAxMy42MzU3NDMgTCAxMTAuODAzMjIgMTMuNjM1NzQzIEwgMTEwLjgwMzIyIDE1IEwgMTA5LjY2OTkyIDE1IEwgMTA5LjY2OTkyIDEzLjYzNTc0MyBaIE0gMTE1LjYyMTA4NiAxMC41NTgxMDUgUSAxMTQuODkwNjMgMTAuNTU4MTA1IDExNC40NjM2MiAxMS4wNTc2MTYgUSAxMTQuMDM2NjIgMTEuNTU3MTI5IDExNC4wMzY2MiAxMi40MjcyNDYgUSAxMTQuMDM2NjIgMTMuMjkxOTkyIDExNC40NjM2MiAxMy43OTQxOSBRIDExNC44OTA2MyAxNC4yOTYzODcgMTE1LjYyMTA4NiAxNC4yOTYzODcgUSAxMTYuMzUxNTYgMTQuMjk2Mzg3IDExNi43Nzg1NjQgMTMuNzk0MTkgUSAxMTcuMjA1NTcgMTMuMjkxOTkyIDExNy4yMDU1NyAxMi40MjcyNDYgUSAxMTcuMjA1NTcgMTEuNTU3MTI5IDExNi43Nzg1NjQgMTEuMDU3NjE2IFEgMTE2LjM1MTU2IDEwLjU1ODEwNSAxMTUuNjIxMDg2IDEwLjU1ODEwNSBaIE0gMTE3Ljc3NDkgNy4xNTgyMDI2IEwgMTE3Ljc3NDkgOC4xNDY0ODQgUSAxMTcuMzY2NyA3Ljk1MzEyNSAxMTYuOTUwNDQgNy44NTEwNzM3IFEgMTE2LjUzNDE4IDcuNzQ5MDIzNCAxMTYuMTI1OTcgNy43NDkwMjM0IFEgMTE1LjA1MTc2IDcuNzQ5MDIzNCAxMTQuNDg1MTEgOC40NzQxMjEgUSAxMTMuOTE4NDYgOS4xOTkyMTkgMTEzLjgzNzkgMTAuNjY1NTI3IFEgMTE0LjE1NDc4NSAxMC4xOTgyNDIgMTE0LjYzMjgyIDkuOTQ4NDg2IFEgMTE1LjExMDg0IDkuNjk4NzMgMTE1LjY4NTU1IDkuNjk4NzMgUSAxMTYuODk0MDQgOS42OTg3MyAxMTcuNTk0OTcgMTAuNDMxODg1IFEgMTE4LjI5NTkgMTEuMTY1MDM5IDExOC4yOTU5IDEyLjQyNzI0NiBRIDExOC4yOTU5IDEzLjY2MjU5NyAxMTcuNTY1NDMgMTQuNDA5MTggUSAxMTYuODM0OTYgMTUuMTU1NzYyIDExNS42MjEwODYgMTUuMTU1NzYyIFEgMTE0LjIyOTk5IDE1LjE1NTc2MiAxMTMuNDk0MTQgMTQuMDg5NiBRIDExMi43NTgzIDEzLjAyMzQzOCAxMTIuNzU4MyAxMC45OTg1MzYgUSAxMTIuNzU4MyA5LjA5NzE2OCAxMTMuNjYwNjQ1IDcuOTY2NTUyNyBRIDExNC41NjI5OSA2LjgzNTkzNzUgMTE2LjA4MzAxIDYuODM1OTM3NSBRIDExNi40OTEyMSA2LjgzNTkzNzUgMTE2LjkwNzQ3IDYuOTE2NTA0IFEgMTE3LjMyMzc0IDYuOTk3MDcwMyAxMTcuNzc0OSA3LjE1ODIwMjYgWiBNIDEyMC4xNzU3OCA2Ljk4MDk1NyBMIDEyNC40MzUwNiA2Ljk4MDk1NyBMIDEyNC40MzUwNiA3Ljg5NDA0MyBMIDEyMS4xNjk0MjYgNy44OTQwNDMgTCAxMjEuMTY5NDI2IDkuODU5ODYzIFEgMTIxLjQwNTc1NCA5Ljc3OTI5NyAxMjEuNjQyMDkgOS43MzkwMTQgUSAxMjEuODc4NDIgOS42OTg3MyAxMjIuMTE0NzQ2IDkuNjk4NzMgUSAxMjMuNDU3NTEgOS42OTg3MyAxMjQuMjQxNjkgMTAuNDM0NTcgUSAxMjUuMDI1ODcgMTEuMTcwNDEgMTI1LjAyNTg3IDEyLjQyNzI0NiBRIDEyNS4wMjU4NyAxMy43MjE2OCAxMjQuMjIwMjE1IDE0LjQzODcyMiBRIDEyMy40MTQ1NSAxNS4xNTU3NjIgMTIxLjk0ODI0IDE1LjE1NTc2MiBRIDEyMS40NDMzNiAxNS4xNTU3NjIgMTIwLjkxOTY4IDE1LjA2OTgyNCBRIDEyMC4zOTU5OSAxNC45ODM4ODYgMTE5LjgzNzQgMTQuODEyMDEyIEwgMTE5LjgzNzQgMTMuNzIxNjggUSAxMjAuMzIwOCAxMy45ODQ4NjIgMTIwLjgzNjQyNiAxNC4xMTM3NjkgUSAxMjEuMzUyMDUgMTQuMjQyNjc1IDEyMS45MjY3NiAxNC4yNDI2NzUgUSAxMjIuODU1OTYgMTQuMjQyNjc1IDEyMy4zOTg0NCAxMy43NTM5MDYgUSAxMjMuOTQwOTIgMTMuMjY1MTM3IDEyMy45NDA5MiAxMi40MjcyNDYgUSAxMjMuOTQwOTIgMTEuNTg5MzU1IDEyMy4zOTg0NCAxMS4xMDA1ODYgUSAxMjIuODU1OTYgMTAuNjExODE2IDEyMS45MjY3NiAxMC42MTE4MTYgUSAxMjEuNDkxNyAxMC42MTE4MTYgMTIxLjA1OTMyNiAxMC43MDg0OTYgUSAxMjAuNjI2OTUgMTAuODA1MTc3IDEyMC4xNzU3OCAxMS4wMDkyNzcgTCAxMjAuMTc1NzggNi45ODA5NTcgWiIvPgogICAgPC9nPgogICAgPGcKICAgICAgaWQ9InZUZXh0Ij4KICAgICAgPHBhdGgKICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgIHN0cm9rZT0iI2ZmZmZmZiIKICAgICAgICBzdHJva2Utd2lkdGg9IjAuMyIKICAgICAgICBkPSJNIDk0LjQ5NjU4IDYuNjk1MzEyNSBRIDkzLjY1ODcgNi42OTUzMTI1IDkzLjIzNzA2IDcuNTE5Nzc1NCBRIDkyLjgxNTQzIDguMzQ0MjM4IDkyLjgxNTQzIDkuOTk4NTM1IFEgOTIuODE1NDMgMTEuNjQ3NDYxIDkzLjIzNzA2IDEyLjQ3MTkyMyBRIDkzLjY1ODcgMTMuMjk2Mzg3IDk0LjQ5NjU4IDEzLjI5NjM4NyBRIDk1LjMzOTg1IDEzLjI5NjM4NyA5NS43NjE0OCAxMi40NzE5MjMgUSA5Ni4xODMxIDExLjY0NzQ2MSA5Ni4xODMxIDkuOTk4NTM1IFEgOTYuMTgzMSA4LjM0NDIzOCA5NS43NjE0OCA3LjUxOTc3NTQgUSA5NS4zMzk4NSA2LjY5NTMxMjUgOTQuNDk2NTggNi42OTUzMTI1IFogTSA5NC40OTY1OCA1LjgzNTkzNzUgUSA5NS44NDQ3MzQgNS44MzU5Mzc1IDk2LjU1NjQwNCA2LjkwMjA5OTYgUSA5Ny4yNjgwNzQgNy45NjgyNjE3IDk3LjI2ODA3NCA5Ljk5ODUzNSBRIDk3LjI2ODA3NCAxMi4wMjM0MzggOTYuNTU2NDA0IDEzLjA4OTYgUSA5NS44NDQ3MzQgMTQuMTU1NzYyIDk0LjQ5NjU4IDE0LjE1NTc2MiBRIDkzLjE0ODQ0IDE0LjE1NTc2MiA5Mi40MzY3NyAxMy4wODk2IFEgOTEuNzI1MSAxMi4wMjM0MzggOTEuNzI1MSA5Ljk5ODUzNSBRIDkxLjcyNTEgNy45NjgyNjE3IDkyLjQzNjc3IDYuOTAyMDk5NiBRIDkzLjE0ODQ0IDUuODM1OTM3NSA5NC40OTY1OCA1LjgzNTkzNzUgWiBNIDk5LjE3NDgxIDEyLjYzNTc0MyBMIDEwMC4zMDgxIDEyLjYzNTc0MyBMIDEwMC4zMDgxIDE0IEwgOTkuMTc0ODEgMTQgTCA5OS4xNzQ4MSAxMi42MzU3NDMgWiBNIDEwNC45OTE3MSA2LjY5NTMxMjUgUSAxMDQuMTUzODEgNi42OTUzMTI1IDEwMy43MzIxNyA3LjUxOTc3NTQgUSAxMDMuMzEwNTU1IDguMzQ0MjM4IDEwMy4zMTA1NTUgOS45OTg1MzUgUSAxMDMuMzEwNTU1IDExLjY0NzQ2MSAxMDMuNzMyMTcgMTIuNDcxOTIzIFEgMTA0LjE1MzgxIDEzLjI5NjM4NyAxMDQuOTkxNzEgMTMuMjk2Mzg3IFEgMTA1LjgzNDk1IDEzLjI5NjM4NyAxMDYuMjU2NTkgMTIuNDcxOTIzIFEgMTA2LjY3ODIyIDExLjY0NzQ2MSAxMDYuNjc4MjIgOS45OTg1MzUgUSAxMDYuNjc4MjIgOC4zNDQyMzggMTA2LjI1NjU5IDcuNTE5Nzc1NCBRIDEwNS44MzQ5NSA2LjY5NTMxMjUgMTA0Ljk5MTcxIDYuNjk1MzEyNSBaIE0gMTA0Ljk5MTcxIDUuODM1OTM3NSBRIDEwNi4zMzk4NCA1LjgzNTkzNzUgMTA3LjA1MTUwNiA2LjkwMjA5OTYgUSAxMDcuNzYzMTc2IDcuOTY4MjYxNyAxMDcuNzYzMTc2IDkuOTk4NTM1IFEgMTA3Ljc2MzE3NiAxMi4wMjM0MzggMTA3LjA1MTUwNiAxMy4wODk2IFEgMTA2LjMzOTg0IDE0LjE1NTc2MiAxMDQuOTkxNzEgMTQuMTU1NzYyIFEgMTAzLjY0MzU1NSAxNC4xNTU3NjIgMTAyLjkzMTg4NSAxMy4wODk2IFEgMTAyLjIyMDIxNSAxMi4wMjM0MzggMTAyLjIyMDIxNSA5Ljk5ODUzNSBRIDEwMi4yMjAyMTUgNy45NjgyNjE3IDEwMi45MzE4ODUgNi45MDIwOTk2IFEgMTAzLjY0MzU1NSA1LjgzNTkzNzUgMTA0Ljk5MTcxIDUuODM1OTM3NSBaIE0gMTA5LjY2OTkyIDEyLjYzNTc0MyBMIDExMC44MDMyMiAxMi42MzU3NDMgTCAxMTAuODAzMjIgMTQgTCAxMDkuNjY5OTIgMTQgTCAxMDkuNjY5OTIgMTIuNjM1NzQzIFogTSAxMTUuNjIxMDg2IDkuNTU4MTA1IFEgMTE0Ljg5MDYzIDkuNTU4MTA1IDExNC40NjM2MiAxMC4wNTc2MTcgUSAxMTQuMDM2NjIgMTAuNTU3MTI5IDExNC4wMzY2MiAxMS40MjcyNDYgUSAxMTQuMDM2NjIgMTIuMjkxOTkyIDExNC40NjM2MiAxMi43OTQxOSBRIDExNC44OTA2MyAxMy4yOTYzODcgMTE1LjYyMTA4NiAxMy4yOTYzODcgUSAxMTYuMzUxNTYgMTMuMjk2Mzg3IDExNi43Nzg1NjQgMTIuNzk0MTkgUSAxMTcuMjA1NTcgMTIuMjkxOTkyIDExNy4yMDU1NyAxMS40MjcyNDYgUSAxMTcuMjA1NTcgMTAuNTU3MTI5IDExNi43Nzg1NjQgMTAuMDU3NjE3IFEgMTE2LjM1MTU2IDkuNTU4MTA1IDExNS42MjEwODYgOS41NTgxMDUgWiBNIDExNy43NzQ5IDYuMTU4MjAyNiBMIDExNy43NzQ5IDcuMTQ2NDg0NCBRIDExNy4zNjY3IDYuOTUzMTI1IDExNi45NTA0NCA2Ljg1MTA3MzcgUSAxMTYuNTM0MTggNi43NDkwMjM0IDExNi4xMjU5NyA2Ljc0OTAyMzQgUSAxMTUuMDUxNzYgNi43NDkwMjM0IDExNC40ODUxMSA3LjQ3NDEyMSBRIDExMy45MTg0NiA4LjE5OTIxOSAxMTMuODM3OSA5LjY2NTUyNyBRIDExNC4xNTQ3ODUgOS4xOTgyNDIgMTE0LjYzMjgyIDguOTQ4NDg2IFEgMTE1LjExMDg0IDguNjk4NzMgMTE1LjY4NTU1IDguNjk4NzMgUSAxMTYuODk0MDQgOC42OTg3MyAxMTcuNTk0OTcgOS40MzE4ODUgUSAxMTguMjk1OSAxMC4xNjUwMzkgMTE4LjI5NTkgMTEuNDI3MjQ2IFEgMTE4LjI5NTkgMTIuNjYyNTk3IDExNy41NjU0MyAxMy40MDkxOCBRIDExNi44MzQ5NiAxNC4xNTU3NjIgMTE1LjYyMTA4NiAxNC4xNTU3NjIgUSAxMTQuMjI5OTkgMTQuMTU1NzYyIDExMy40OTQxNCAxMy4wODk2IFEgMTEyLjc1ODMgMTIuMDIzNDM4IDExMi43NTgzIDkuOTk4NTM1IFEgMTEyLjc1ODMgOC4wOTcxNjggMTEzLjY2MDY0NSA2Ljk2NjU1MjcgUSAxMTQuNTYyOTkgNS44MzU5Mzc1IDExNi4wODMwMSA1LjgzNTkzNzUgUSAxMTYuNDkxMjEgNS44MzU5Mzc1IDExNi45MDc0NyA1LjkxNjUwNCBRIDExNy4zMjM3NCA1Ljk5NzA3MDMgMTE3Ljc3NDkgNi4xNTgyMDI2IFogTSAxMjAuMTc1NzggNS45ODA5NTcgTCAxMjQuNDM1MDYgNS45ODA5NTcgTCAxMjQuNDM1MDYgNi44OTQwNDMgTCAxMjEuMTY5NDI2IDYuODk0MDQzIEwgMTIxLjE2OTQyNiA4Ljg1OTg2MyBRIDEyMS40MDU3NTQgOC43NzkyOTcgMTIxLjY0MjA5IDguNzM5MDE0IFEgMTIxLjg3ODQyIDguNjk4NzMgMTIyLjExNDc0NiA4LjY5ODczIFEgMTIzLjQ1NzUxIDguNjk4NzMgMTI0LjI0MTY5IDkuNDM0NTcgUSAxMjUuMDI1ODcgMTAuMTcwNDEgMTI1LjAyNTg3IDExLjQyNzI0NiBRIDEyNS4wMjU4NyAxMi43MjE2OCAxMjQuMjIwMjE1IDEzLjQzODcyMiBRIDEyMy40MTQ1NSAxNC4xNTU3NjIgMTIxLjk0ODI0IDE0LjE1NTc2MiBRIDEyMS40NDMzNiAxNC4xNTU3NjIgMTIwLjkxOTY4IDE0LjA2OTgyNCBRIDEyMC4zOTU5OSAxMy45ODM4ODYgMTE5LjgzNzQgMTMuODEyMDEyIEwgMTE5LjgzNzQgMTIuNzIxNjggUSAxMjAuMzIwOCAxMi45ODQ4NjIgMTIwLjgzNjQyNiAxMy4xMTM3NjkgUSAxMjEuMzUyMDUgMTMuMjQyNjc1IDEyMS45MjY3NiAxMy4yNDI2NzUgUSAxMjIuODU1OTYgMTMuMjQyNjc1IDEyMy4zOTg0NCAxMi43NTM5MDYgUSAxMjMuOTQwOTIgMTIuMjY1MTM3IDEyMy45NDA5MiAxMS40MjcyNDYgUSAxMjMuOTQwOTIgMTAuNTg5MzU1IDEyMy4zOTg0NCAxMC4xMDA1ODYgUSAxMjIuODU1OTYgOS42MTE4MTYgMTIxLjkyNjc2IDkuNjExODE2IFEgMTIxLjQ5MTcgOS42MTE4MTYgMTIxLjA1OTMyNiA5LjcwODQ5NiBRIDEyMC42MjY5NSA5LjgwNTE3NiAxMjAuMTc1NzggMTAuMDA5Mjc3IEwgMTIwLjE3NTc4IDUuOTgwOTU3IFoiLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=" alt="PyPI version" /></a></p>
|
|
172
|
+
<p>Guessing reasonable defaults for locale, keyboard layout, territory,
|
|
173
|
+
and language.</p>
|
|
174
|
+
<h2 id="purpose-of-this-package">Purpose of this package</h2>
|
|
175
|
+
<p><em>langtable</em> is used to guess reasonable defaults for locale,
|
|
176
|
+
keyboard, territory, …, if part of that information is already known.
|
|
177
|
+
For example, guess the territory and the keyboard layout if the language
|
|
178
|
+
is known or guess the language and keyboard layout if the territory is
|
|
179
|
+
already known.</p>
|
|
180
|
+
<h2 id="license">License</h2>
|
|
181
|
+
<p>GPLv3+, see the included file “COPYING”.</p>
|
|
182
|
+
<p>Translations for languages and territory names are from CLDR which is
|
|
183
|
+
governed by the Unicode Terms of Use, see the included file
|
|
184
|
+
“unicode-license.txt”. The short name for this Unicode license is “MIT”.
|
|
185
|
+
See:</p>
|
|
186
|
+
<p><a href="https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29">https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29</a></p>
|
|
187
|
+
<h2 id="installation">Installation</h2>
|
|
188
|
+
<p>To install langtable, run</p>
|
|
189
|
+
<pre><code> make install DESTDIR=/usr</code></pre>
|
|
190
|
+
<p>To create a distribution tarball run</p>
|
|
191
|
+
<pre><code> make dist</code></pre>
|
|
192
|
+
<p>To run the test cases in the source directory:</p>
|
|
193
|
+
<pre><code> make check</code></pre>
|
|
194
|
+
<h2 id="how-to-use-it">How to use it</h2>
|
|
195
|
+
<pre><code>import langtable</code></pre>
|
|
196
|
+
<p>Functions in the public API:</p>
|
|
197
|
+
<pre><code> parse_locale()
|
|
198
|
+
list_locales()
|
|
199
|
+
list_keyboards()
|
|
200
|
+
list_common_languages()
|
|
201
|
+
list_common_locales()
|
|
202
|
+
list_common_keyboards()
|
|
203
|
+
list_consolefonts()
|
|
204
|
+
list_inputmethods()
|
|
205
|
+
list_timezones()
|
|
206
|
+
list_scripts()
|
|
207
|
+
language_name()
|
|
208
|
+
territory_name()
|
|
209
|
+
timezone_name()
|
|
210
|
+
languageId()
|
|
211
|
+
territoryId()
|
|
212
|
+
supports_ascii()
|
|
213
|
+
list_all_languages()
|
|
214
|
+
list_all_locales()
|
|
215
|
+
list_all_keyboards()
|
|
216
|
+
list_all_territories()
|
|
217
|
+
list_all_timezones()
|
|
218
|
+
list_all_scripts()
|
|
219
|
+
list_all_input_methods()
|
|
220
|
+
list_all_console_fonts()</code></pre>
|
|
221
|
+
<p>Some examples to show the usage are found in the documentation of the
|
|
222
|
+
public functions in <code>langtable.py</code>.</p>
|
|
223
|
+
<p>Some more examples are in the test cases in the file
|
|
224
|
+
<code>test_cases.py</code>.</p>
|
|
225
|
+
</body>
|
|
226
|
+
</html>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# langtable
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/py/langtable)
|
|
4
|
+
|
|
5
|
+
Guessing reasonable defaults for locale, keyboard layout, territory, and language.
|
|
6
|
+
|
|
7
|
+
## Purpose of this package
|
|
8
|
+
_langtable_ is used to guess reasonable defaults for locale, keyboard, territory, …, if part of that information is already known. For example, guess the territory and the keyboard layout if the language is known or guess the language and keyboard layout if the territory is already known.
|
|
9
|
+
|
|
10
|
+
## License
|
|
11
|
+
|
|
12
|
+
GPLv3+, see the included file “COPYING”.
|
|
13
|
+
|
|
14
|
+
Translations for languages and territory names are from CLDR which is governed by the Unicode Terms of Use, see the included file “unicode-license.txt”. The short name for this Unicode license is “MIT”. See:
|
|
15
|
+
|
|
16
|
+
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
To install langtable, run
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
make install DESTDIR=/usr
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
To create a distribution tarball run
|
|
27
|
+
```
|
|
28
|
+
make dist
|
|
29
|
+
```
|
|
30
|
+
To run the test cases in the source directory:
|
|
31
|
+
```
|
|
32
|
+
make check
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## How to use it
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
import langtable
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Functions in the public API:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
parse_locale()
|
|
45
|
+
list_locales()
|
|
46
|
+
list_keyboards()
|
|
47
|
+
list_common_languages()
|
|
48
|
+
list_common_locales()
|
|
49
|
+
list_common_keyboards()
|
|
50
|
+
list_consolefonts()
|
|
51
|
+
list_inputmethods()
|
|
52
|
+
list_timezones()
|
|
53
|
+
list_scripts()
|
|
54
|
+
language_name()
|
|
55
|
+
territory_name()
|
|
56
|
+
timezone_name()
|
|
57
|
+
languageId()
|
|
58
|
+
territoryId()
|
|
59
|
+
supports_ascii()
|
|
60
|
+
list_all_languages()
|
|
61
|
+
list_all_locales()
|
|
62
|
+
list_all_keyboards()
|
|
63
|
+
list_all_territories()
|
|
64
|
+
list_all_timezones()
|
|
65
|
+
list_all_scripts()
|
|
66
|
+
list_all_input_methods()
|
|
67
|
+
list_all_console_fonts()
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Some examples to show the usage are found in the documentation of the public functions in `langtable.py`.
|
|
71
|
+
|
|
72
|
+
Some more examples are in the test cases in the file `test_cases.py`.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -2565,7 +2565,7 @@ def list_all_territories() -> List[str]:
|
|
|
2565
2565
|
'''
|
|
2566
2566
|
List all territory ids langtable knows something about
|
|
2567
2567
|
'''
|
|
2568
|
-
return
|
|
2568
|
+
return sorted(_territories_db.keys())
|
|
2569
2569
|
|
|
2570
2570
|
def list_all_timezones() -> List[str]:
|
|
2571
2571
|
'''
|
|
@@ -2719,5 +2719,11 @@ __module_init = __ModuleInitializer()
|
|
|
2719
2719
|
|
|
2720
2720
|
if __name__ == "__main__":
|
|
2721
2721
|
import doctest
|
|
2722
|
+
import sys
|
|
2722
2723
|
_init()
|
|
2723
|
-
doctest.testmod()
|
|
2724
|
+
(FAILED, ATTEMPTED) = doctest.testmod()
|
|
2725
|
+
print(f'{ATTEMPTED} tests run. {ATTEMPTED - FAILED} passed and {FAILED} failed.')
|
|
2726
|
+
if FAILED:
|
|
2727
|
+
sys.exit(FAILED)
|
|
2728
|
+
print(f'All tests passed.')
|
|
2729
|
+
sys.exit(0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: langtable
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.66
|
|
4
4
|
Summary: guess reasonable defaults for locale, keyboard, territory, ...
|
|
5
5
|
Home-page: https://github.com/mike-fabian/langtable
|
|
6
6
|
Author: Mike FABIAN
|
|
@@ -13,64 +13,57 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (G
|
|
|
13
13
|
Classifier: Operating System :: POSIX :: Linux
|
|
14
14
|
Classifier: Programming Language :: Python
|
|
15
15
|
Classifier: Topic :: System :: Installation/Setup
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
16
17
|
License-File: COPYING
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
langtable
|
|
20
|
-
======================================================================
|
|
19
|
+
# langtable
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
=======================
|
|
21
|
+
[](https://badge.fury.io/py/langtable)
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
territory, …, if part of that information is already known. For
|
|
27
|
-
example, guess the territory and the keyboard layout if the language
|
|
28
|
-
is known or guess the language and keyboard layout if the territory is
|
|
29
|
-
already known.
|
|
23
|
+
Guessing reasonable defaults for locale, keyboard layout, territory, and language.
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
## Purpose of this package
|
|
26
|
+
_langtable_ is used to guess reasonable defaults for locale, keyboard, territory, …, if part of that information is already known. For example, guess the territory and the keyboard layout if the language is known or guess the language and keyboard layout if the territory is already known.
|
|
27
|
+
|
|
28
|
+
## License
|
|
33
29
|
|
|
34
30
|
GPLv3+, see the included file “COPYING”.
|
|
35
31
|
|
|
36
|
-
Translations for languages and territory names are from CLDR which is
|
|
37
|
-
governed by the Unicode Terms of Use, see the included file
|
|
38
|
-
“unicode-license.txt”. The short name for this Unicode license is
|
|
39
|
-
“MIT”. See:
|
|
32
|
+
Translations for languages and territory names are from CLDR which is governed by the Unicode Terms of Use, see the included file “unicode-license.txt”. The short name for this Unicode license is “MIT”. See:
|
|
40
33
|
|
|
41
34
|
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
|
|
42
35
|
|
|
43
|
-
Installation
|
|
44
|
-
============
|
|
36
|
+
## Installation
|
|
45
37
|
|
|
46
38
|
To install langtable, run
|
|
47
39
|
|
|
40
|
+
```
|
|
48
41
|
make install DESTDIR=/usr
|
|
42
|
+
```
|
|
49
43
|
|
|
50
44
|
To create a distribution tarball run
|
|
51
|
-
|
|
45
|
+
```
|
|
52
46
|
make dist
|
|
53
|
-
|
|
47
|
+
```
|
|
54
48
|
To run the test cases in the source directory:
|
|
49
|
+
```
|
|
50
|
+
make check
|
|
51
|
+
```
|
|
55
52
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
To run the test cases using the installed files:
|
|
59
|
-
|
|
60
|
-
make install DESTDIR=/usr
|
|
61
|
-
make test DESTDIR=/usr
|
|
62
|
-
|
|
63
|
-
How to use it
|
|
64
|
-
=============
|
|
53
|
+
## How to use it
|
|
65
54
|
|
|
55
|
+
```
|
|
66
56
|
import langtable
|
|
57
|
+
```
|
|
67
58
|
|
|
68
59
|
Functions in the public API:
|
|
69
60
|
|
|
61
|
+
```
|
|
70
62
|
parse_locale()
|
|
71
63
|
list_locales()
|
|
72
64
|
list_keyboards()
|
|
73
65
|
list_common_languages()
|
|
66
|
+
list_common_locales()
|
|
74
67
|
list_common_keyboards()
|
|
75
68
|
list_consolefonts()
|
|
76
69
|
list_inputmethods()
|
|
@@ -82,8 +75,16 @@ Functions in the public API:
|
|
|
82
75
|
languageId()
|
|
83
76
|
territoryId()
|
|
84
77
|
supports_ascii()
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
(
|
|
78
|
+
list_all_languages()
|
|
79
|
+
list_all_locales()
|
|
80
|
+
list_all_keyboards()
|
|
81
|
+
list_all_territories()
|
|
82
|
+
list_all_timezones()
|
|
83
|
+
list_all_scripts()
|
|
84
|
+
list_all_input_methods()
|
|
85
|
+
list_all_console_fonts()
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Some examples to show the usage are found in the documentation of the public functions in `langtable.py`.
|
|
89
|
+
|
|
90
|
+
Some more examples are in the test cases in the file `test_cases.py`.
|
|
@@ -61,6 +61,10 @@ def parse_args():
|
|
|
61
61
|
type=str,
|
|
62
62
|
default='./langtable.log',
|
|
63
63
|
help='log file, default is %(default)s')
|
|
64
|
+
parser.add_argument('-c', '--include_changes',
|
|
65
|
+
action='store_true',
|
|
66
|
+
default=False,
|
|
67
|
+
help='Also write changed translations, not only new translations, default is %(default)s.')
|
|
64
68
|
parser.add_argument('-d', '--debug',
|
|
65
69
|
action='store_true',
|
|
66
70
|
help='print debugging output')
|
|
@@ -133,7 +137,7 @@ def read_translations_from_cldr_file(file = None):
|
|
|
133
137
|
translations_timezone_cities[timezone_city_aliases[alias]] = translations_timezone_cities[alias]
|
|
134
138
|
return
|
|
135
139
|
|
|
136
|
-
def get_translations_from_cldr(main_cldr_dir = None):
|
|
140
|
+
def get_translations_from_cldr(main_cldr_dir = None, include_changes=False):
|
|
137
141
|
for target_language in sorted(langtable._languages_db):
|
|
138
142
|
cldr_file = main_cldr_dir+'/'+target_language+'.xml'
|
|
139
143
|
if not os.path.exists(cldr_file):
|
|
@@ -165,8 +169,8 @@ def get_translations_from_cldr(main_cldr_dir = None):
|
|
|
165
169
|
'language_to_translate': language_to_translate,
|
|
166
170
|
'target_language': target_language,
|
|
167
171
|
'tr': translations_languages[language_to_translate]})
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
if include_changes:
|
|
173
|
+
langtable._languages_db[language_to_translate].names[target_language] = translations_languages[language_to_translate]
|
|
170
174
|
else:
|
|
171
175
|
if opts['debug']:
|
|
172
176
|
print("Not in langtable: %(language_to_translate)s" %{
|
|
@@ -194,8 +198,8 @@ def get_translations_from_cldr(main_cldr_dir = None):
|
|
|
194
198
|
print("+ %(territory_to_translate)s → %(target_language)s = %(tr)s" %{'territory_to_translate': territory_to_translate,
|
|
195
199
|
'target_language': target_language,
|
|
196
200
|
'tr': translations_territories[territory_to_translate]})
|
|
197
|
-
|
|
198
|
-
|
|
201
|
+
if include_changes:
|
|
202
|
+
langtable._territories_db[territory_to_translate].names[target_language] = translations_territories[territory_to_translate]
|
|
199
203
|
else:
|
|
200
204
|
if opts['debug']:
|
|
201
205
|
print("Not in langtable: %(territory_to_translate)s" %{
|
|
@@ -228,8 +232,8 @@ def get_translations_from_cldr(main_cldr_dir = None):
|
|
|
228
232
|
'timezone_city_to_translate': timezone_city_to_translate,
|
|
229
233
|
'target_language': target_language,
|
|
230
234
|
'tr': translations_timezone_cities[timezone_city_to_translate]})
|
|
231
|
-
|
|
232
|
-
|
|
235
|
+
if include_changes:
|
|
236
|
+
langtable._timezoneIdParts_db[timezone_city_to_translate].names[target_language] = translations_timezone_cities[timezone_city_to_translate]
|
|
233
237
|
return
|
|
234
238
|
|
|
235
239
|
def _test_timezone_names():
|
|
@@ -251,7 +255,9 @@ def main():
|
|
|
251
255
|
langtable._init(debug = True,
|
|
252
256
|
logfilename = args.logfilename)
|
|
253
257
|
|
|
254
|
-
get_translations_from_cldr(
|
|
258
|
+
get_translations_from_cldr(
|
|
259
|
+
main_cldr_dir='/local/mfabian/src/cldr/common/main',
|
|
260
|
+
include_changes=args.include_changes)
|
|
255
261
|
|
|
256
262
|
#_test_timezone_names()
|
|
257
263
|
|
|
@@ -261,6 +267,5 @@ def main():
|
|
|
261
267
|
timezonesfilename = args.timezonesoutputfile,
|
|
262
268
|
timezoneidpartsfilename = args.timezoneidpartsoutputfile)
|
|
263
269
|
|
|
264
|
-
|
|
265
270
|
if __name__ == '__main__':
|
|
266
271
|
main()
|
|
@@ -8,10 +8,11 @@ setuptools.setup(
|
|
|
8
8
|
# within the egg directory easily:
|
|
9
9
|
zip_safe=False,
|
|
10
10
|
name='langtable',
|
|
11
|
-
version='0.0.
|
|
11
|
+
version='0.0.66',
|
|
12
12
|
packages=setuptools.find_packages(),
|
|
13
13
|
description='guess reasonable defaults for locale, keyboard, territory, ...',
|
|
14
|
-
long_description=codecs.open('README', encoding='UTF-8').read(),
|
|
14
|
+
long_description=codecs.open('README.md', encoding='UTF-8').read(),
|
|
15
|
+
long_description_content_type='text/markdown',
|
|
15
16
|
license="GPL-3.0-or-later",
|
|
16
17
|
author='Mike FABIAN',
|
|
17
18
|
author_email='mfabian@redhat.com',
|
|
@@ -734,7 +734,7 @@ def dummy():
|
|
|
734
734
|
|
|
735
735
|
>>> _test_language_territory(show_weights=False, languageId="ar", territoryId="IN") # doctest: +NORMALIZE_WHITESPACE
|
|
736
736
|
ar: ['ar_EG.UTF-8', 'ar_SD.UTF-8', 'ar_DZ.UTF-8', 'ar_MA.UTF-8', 'ar_IQ.UTF-8', 'ar_SA.UTF-8', 'ar_YE.UTF-8', 'ar_SY.UTF-8', 'ar_TN.UTF-8', 'ar_LY.UTF-8', 'ar_JO.UTF-8', 'ar_AE.UTF-8', 'ar_LB.UTF-8', 'ar_KW.UTF-8', 'ar_OM.UTF-8', 'ar_QA.UTF-8', 'ar_BH.UTF-8', 'ar_IN.UTF-8', 'ar_SS.UTF-8']
|
|
737
|
-
IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8']
|
|
737
|
+
IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8', 'gbm_IN.UTF-8']
|
|
738
738
|
+: ['ar_IN.UTF-8']
|
|
739
739
|
ar: ['ara', 'ara(azerty)', 'iq', 'ma', 'sy']
|
|
740
740
|
IN: ['in(eng)', 'ara']
|
|
@@ -750,7 +750,7 @@ def dummy():
|
|
|
750
750
|
|
|
751
751
|
>>> _test_language_territory(show_weights=False, languageId="as", territoryId="IN") # doctest: +NORMALIZE_WHITESPACE
|
|
752
752
|
as: ['as_IN.UTF-8']
|
|
753
|
-
IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8']
|
|
753
|
+
IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8', 'gbm_IN.UTF-8']
|
|
754
754
|
+: ['as_IN.UTF-8']
|
|
755
755
|
as: ['in(eng)']
|
|
756
756
|
IN: ['in(eng)', 'ara']
|
|
@@ -761,12 +761,12 @@ def dummy():
|
|
|
761
761
|
BD: ['bn_BD.UTF-8']
|
|
762
762
|
+: ['bn_BD.UTF-8']
|
|
763
763
|
bn: ['in(eng)']
|
|
764
|
-
BD: ['
|
|
765
|
-
+: ['
|
|
764
|
+
BD: ['in(eng)']
|
|
765
|
+
+: ['in(eng)']
|
|
766
766
|
|
|
767
767
|
>>> _test_language_territory(show_weights=False, languageId="bn", territoryId="IN") # doctest: +NORMALIZE_WHITESPACE
|
|
768
768
|
bn: ['bn_BD.UTF-8', 'bn_IN.UTF-8']
|
|
769
|
-
IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8']
|
|
769
|
+
IN: ['hi_IN.UTF-8', 'en_IN.UTF-8', 'bn_IN.UTF-8', 'te_IN.UTF-8', 'mr_IN.UTF-8', 'ta_IN.UTF-8', 'ur_IN.UTF-8', 'gu_IN.UTF-8', 'kn_IN.UTF-8', 'ml_IN.UTF-8', 'or_IN.UTF-8', 'pa_IN.UTF-8', 'as_IN.UTF-8', 'mai_IN.UTF-8', 'sat_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'kok_IN.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'doi_IN.UTF-8', 'mni_IN.UTF-8', 'brx_IN.UTF-8', 'raj_IN.UTF-8', 'mjw_IN.UTF-8', 'anp_IN.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bo_IN.UTF-8', 'hne_IN.UTF-8', 'mag_IN.UTF-8', 'tcy_IN.UTF-8', 'ar_IN.UTF-8', 'gbm_IN.UTF-8']
|
|
770
770
|
+: ['bn_IN.UTF-8']
|
|
771
771
|
bn: ['in(eng)']
|
|
772
772
|
IN: ['in(eng)', 'ara']
|
|
@@ -910,7 +910,7 @@ def dummy():
|
|
|
910
910
|
|
|
911
911
|
>>> _test_language_territory(show_weights=False, languageId="tt", territoryId="RU") # doctest: +NORMALIZE_WHITESPACE
|
|
912
912
|
tt: ['tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif']
|
|
913
|
-
RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8']
|
|
913
|
+
RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8', 'kv_RU.UTF-8', 'crh_RU.UTF-8']
|
|
914
914
|
+: ['tt_RU.UTF-8']
|
|
915
915
|
tt: ['ru(tt)', 'us(altgr-intl)']
|
|
916
916
|
RU: ['ru', 'ru(tt)', 'us(altgr-intl)']
|
|
@@ -918,7 +918,7 @@ def dummy():
|
|
|
918
918
|
|
|
919
919
|
>>> _test_language_territory(show_weights=False, languageId="tt", scriptId="Latn", territoryId="RU") # doctest: +NORMALIZE_WHITESPACE
|
|
920
920
|
tt: ['tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif']
|
|
921
|
-
RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8']
|
|
921
|
+
RU: ['ru_RU.UTF-8', 'ce_RU.UTF-8', 'cv_RU.UTF-8', 'mhr_RU.UTF-8', 'os_RU.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'sah_RU.UTF-8', 'kv_RU.UTF-8', 'crh_RU.UTF-8']
|
|
922
922
|
+: ['tt_RU.UTF-8@iqtelif']
|
|
923
923
|
tt: ['ru(tt)', 'us(altgr-intl)']
|
|
924
924
|
RU: ['ru', 'ru(tt)', 'us(altgr-intl)']
|
|
@@ -2155,15 +2155,15 @@ def dummy():
|
|
|
2155
2155
|
['ar', 'en', 'fr', 'de', 'ja', 'zh', 'ru', 'es']
|
|
2156
2156
|
|
|
2157
2157
|
>>> print(list_all_languages()) # doctest: +NORMALIZE_WHITESPACE
|
|
2158
|
-
['aa', 'ab', 'af', 'agq', 'agr', 'ak', 'am', 'an', 'anp', 'ar', 'as', 'asa', 'ast', 'av', 'ay', 'ayc', 'ayr', 'az', 'ba', 'bas', 'be', 'bem', 'ber', 'bez', 'bg', 'bhb', 'bho', 'bi', 'bih', 'bin', 'bm', 'bn', 'bo', 'br', 'brx', 'bs', 'bua', 'byn', 'ca', 'ca_ES_VALENCIA', 'ccp', 'ce', 'cgg', 'ch', 'chm', 'chr', 'ckb', 'cmn', 'co', 'cop', 'crh', 'cs', 'csb', 'cu', 'cv', 'cy', 'da', 'dav', 'de', 'dje', 'doi', 'dsb', 'dua', 'dv', 'dyo', 'dz', 'ebu', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'ewo', 'fa', 'fat', 'ff', 'fi', 'fil', 'fj', 'fo', 'fr', 'fur', 'fy', 'ga', 'gd', 'gez', 'gl', 'gn', 'grc', 'gsw', 'gu', 'guz', 'gv', 'ha', 'hak', 'haw', 'he', 'hi', 'hif', 'hil', 'hne', 'ho', 'hr', 'hsb', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'ilo', 'io', 'is', 'it', 'iu', 'iw', 'ja', 'jgo', 'jmc', 'jv', 'ka', 'kaa', 'kab', 'kam', 'kde', 'kea', 'kg', 'khb', 'khq', 'ki', 'kj', 'kk', 'kkj', 'kl', 'kln', 'km', 'kn', 'ko', 'kok', 'kr', 'ks', 'ks_Arab', 'ks_Deva', 'ksb', 'ksf', 'ksh', 'ku', 'kum', 'kv', 'kw', 'kwm', 'ky', 'la', 'lag', 'lah', 'lb', 'lez', 'lg', 'li', 'lij', 'lkt', 'ln', 'lo', 'lrc', 'lt', 'lu', 'luo', 'luy', 'lv', 'lzh', 'mag', 'mai', 'mas', 'mer', 'mfe', 'mg', 'mgh', 'mgo', 'mh', 'mhr', 'mi', 'miq', 'mjw', 'mk', 'ml', 'mn', 'mni', 'mnw', 'mo', 'mos', 'mr', 'ms', 'mt', 'mua', 'my', 'mzn', 'na', 'nan', 'naq', 'nb', 'nd', 'nds', 'ne', 'new', 'ng', 'nhn', 'niu', 'nl', 'nmg', 'nn', 'nnh', 'no', 'nqo', 'nr', 'nso', 'nus', 'nv', 'ny', 'nyn', 'oc', 'om', 'or', 'os', 'osa', 'ota', 'pa', 'pap', 'pl', 'prg', 'ps', 'pt', 'qu', 'quh', 'quz', 'raj', 'rif', 'rm', 'rn', 'ro', 'rof', 'ru', 'rw', 'rwk', 'sa', 'sah', 'saq', 'sat', 'sbp', 'sc', 'sco', 'sd', 'sd_Arab', 'sd_Deva', 'se', 'seh', 'sel', 'ses', 'sg', 'sgs', 'sh', 'shi', 'shn', 'shs', 'si', 'sid', 'sk', 'sl', 'sm', 'sma', 'smj', 'smn', 'sms', 'sn', 'so', 'sq', 'sr', 'sr_Cyrl', 'sr_Latn', 'ss', 'st', 'su', 'sv', 'sw', 'syc', 'syr', 'szl', 'ta', 'tcy', 'te', 'teo', 'tet', 'tg', 'th', 'the', 'ti', 'tig', 'tk', 'tl', 'tn', 'to', 'tpi', 'tr', 'ts', 'tt', 'tt_Cyrl', 'tt_Latn', 'tw', 'twq', 'txg', 'ty', 'tyv', 'tzm', 'udm', 'ug', 'uk', 'unm', 'ur', 'uz', 'vai', 've', 'vi', 'vo', 'vot', 'vun', 'wa', 'wae', 'wal', 'wen', 'wo', 'xal', 'xh', 'xog', 'xzh', 'yap', 'yav', 'yi', 'yo', 'yue', 'yuw', 'za', 'zgh', 'zh', 'zh_Hans', 'zh_Hans_CN', 'zh_Hans_SG', 'zh_Hant', 'zh_Hant_HK', 'zh_Hant_MO', 'zh_Hant_TW', 'zu']
|
|
2158
|
+
['aa', 'ab', 'af', 'agq', 'agr', 'ak', 'am', 'an', 'anp', 'ar', 'as', 'asa', 'ast', 'av', 'ay', 'ayc', 'ayr', 'az', 'ba', 'bas', 'be', 'bem', 'ber', 'bez', 'bg', 'bhb', 'bho', 'bi', 'bih', 'bin', 'bm', 'bn', 'bo', 'br', 'brx', 'bs', 'bua', 'byn', 'ca', 'ca_ES_VALENCIA', 'ccp', 'ce', 'cgg', 'ch', 'chm', 'chr', 'ckb', 'cmn', 'co', 'cop', 'crh', 'cs', 'csb', 'cu', 'cv', 'cy', 'da', 'dav', 'de', 'dje', 'doi', 'dsb', 'dua', 'dv', 'dyo', 'dz', 'ebu', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'ewo', 'fa', 'fat', 'ff', 'fi', 'fil', 'fj', 'fo', 'fr', 'fur', 'fy', 'ga', 'gbm', 'gd', 'gez', 'gl', 'glk', 'gn', 'grc', 'gsw', 'gu', 'guz', 'gv', 'ha', 'hak', 'haw', 'he', 'hi', 'hif', 'hil', 'hne', 'ho', 'hr', 'hsb', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'ilo', 'io', 'is', 'it', 'iu', 'iw', 'ja', 'jgo', 'jmc', 'jv', 'ka', 'kaa', 'kab', 'kam', 'kde', 'kea', 'kg', 'khb', 'khq', 'ki', 'kj', 'kk', 'kkj', 'kl', 'kln', 'km', 'kn', 'ko', 'kok', 'kr', 'ks', 'ks_Arab', 'ks_Deva', 'ksb', 'ksf', 'ksh', 'ku', 'kum', 'kv', 'kw', 'kwm', 'ky', 'la', 'lag', 'lah', 'lb', 'lez', 'lg', 'li', 'lij', 'lkt', 'ln', 'lo', 'lrc', 'lt', 'lu', 'luo', 'luy', 'lv', 'lzh', 'mag', 'mai', 'mas', 'mdf', 'mer', 'mfe', 'mg', 'mgh', 'mgo', 'mh', 'mhr', 'mi', 'miq', 'mjw', 'mk', 'ml', 'mn', 'mni', 'mnw', 'mo', 'mos', 'mr', 'ms', 'mt', 'mua', 'my', 'mzn', 'na', 'nan', 'naq', 'nb', 'nd', 'nds', 'ne', 'new', 'ng', 'nhn', 'niu', 'nl', 'nmg', 'nn', 'nnh', 'no', 'nqo', 'nr', 'nso', 'nus', 'nv', 'ny', 'nyn', 'oc', 'om', 'or', 'os', 'osa', 'ota', 'pa', 'pap', 'pl', 'prg', 'ps', 'pt', 'qu', 'quh', 'quz', 'raj', 'rif', 'rm', 'rn', 'ro', 'rof', 'ru', 'rw', 'rwk', 'sa', 'sah', 'saq', 'sat', 'sbp', 'sc', 'sco', 'sd', 'sd_Arab', 'sd_Deva', 'se', 'seh', 'sel', 'ses', 'sg', 'sgs', 'sh', 'shi', 'shn', 'shs', 'si', 'sid', 'sk', 'sl', 'sm', 'sma', 'smj', 'smn', 'sms', 'sn', 'so', 'sq', 'sr', 'sr_Cyrl', 'sr_Latn', 'ss', 'ssy', 'st', 'su', 'sv', 'sw', 'syc', 'syr', 'szl', 'ta', 'tcy', 'te', 'teo', 'tet', 'tg', 'th', 'the', 'ti', 'tig', 'tk', 'tl', 'tn', 'to', 'tok', 'tpi', 'tr', 'ts', 'tt', 'tt_Cyrl', 'tt_Latn', 'tw', 'twq', 'txg', 'ty', 'tyv', 'tzm', 'udm', 'ug', 'uk', 'unm', 'ur', 'uz', 'vai', 've', 'vi', 'vo', 'vot', 'vun', 'wa', 'wae', 'wal', 'wen', 'wo', 'wuu', 'xal', 'xh', 'xog', 'xzh', 'yap', 'yav', 'yi', 'yo', 'yue', 'yuw', 'za', 'zgh', 'zh', 'zh_Hans', 'zh_Hans_CN', 'zh_Hans_SG', 'zh_Hant', 'zh_Hant_HK', 'zh_Hant_MO', 'zh_Hant_TW', 'zu']
|
|
2159
2159
|
>>> print(list_all_locales()) # doctest: +NORMALIZE_WHITESPACE
|
|
2160
|
-
['aa_DJ.UTF-8', 'aa_ER.UTF-8', '
|
|
2160
|
+
['aa_DJ.UTF-8', 'aa_ER.UTF-8', 'aa_ET.UTF-8', 'ab_GE.UTF-8', 'af_ZA.UTF-8', 'agr_PE.UTF-8', 'ak_GH.UTF-8', 'am_ET.UTF-8', 'an_ES.UTF-8', 'anp_IN.UTF-8', 'ar_AE.UTF-8', 'ar_BH.UTF-8', 'ar_DZ.UTF-8', 'ar_EG.UTF-8', 'ar_IN.UTF-8', 'ar_IQ.UTF-8', 'ar_JO.UTF-8', 'ar_KW.UTF-8', 'ar_LB.UTF-8', 'ar_LY.UTF-8', 'ar_MA.UTF-8', 'ar_OM.UTF-8', 'ar_QA.UTF-8', 'ar_SA.UTF-8', 'ar_SD.UTF-8', 'ar_SS.UTF-8', 'ar_SY.UTF-8', 'ar_TN.UTF-8', 'ar_YE.UTF-8', 'as_IN.UTF-8', 'ast_ES.UTF-8', 'ayc_PE.UTF-8', 'az_AZ.UTF-8', 'az_IR.UTF-8', 'be_BY.UTF-8', 'be_BY.UTF-8@latin', 'bem_ZM.UTF-8', 'ber_DZ.UTF-8', 'ber_MA.UTF-8', 'bg_BG.UTF-8', 'bhb_IN.UTF-8', 'bho_IN.UTF-8', 'bho_NP.UTF-8', 'bi_VU.UTF-8', 'bn_BD.UTF-8', 'bn_IN.UTF-8', 'bo_CN.UTF-8', 'bo_IN.UTF-8', 'br_FR.UTF-8', 'brx_IN.UTF-8', 'bs_BA.UTF-8', 'byn_ER.UTF-8', 'ca_AD.UTF-8', 'ca_ES.UTF-8', 'ca_ES.UTF-8@valencia', 'ca_FR.UTF-8', 'ca_IT.UTF-8', 'ce_RU.UTF-8', 'chr_US.UTF-8', 'ckb_IQ.UTF-8', 'cmn_TW.UTF-8', 'crh_RU.UTF-8', 'crh_UA.UTF-8', 'cs_CZ.UTF-8', 'csb_PL.UTF-8', 'cv_RU.UTF-8', 'cy_GB.UTF-8', 'da_DK.UTF-8', 'de_AT.UTF-8', 'de_BE.UTF-8', 'de_CH.UTF-8', 'de_DE.UTF-8', 'de_IT.UTF-8', 'de_LI.UTF-8', 'de_LU.UTF-8', 'doi_IN.UTF-8', 'dsb_DE.UTF-8', 'dv_MV.UTF-8', 'dz_BT.UTF-8', 'el_CY.UTF-8', 'el_GR.UTF-8', 'en_AG.UTF-8', 'en_AU.UTF-8', 'en_BW.UTF-8', 'en_CA.UTF-8', 'en_DK.UTF-8', 'en_GB.UTF-8', 'en_HK.UTF-8', 'en_IE.UTF-8', 'en_IL.UTF-8', 'en_IN.UTF-8', 'en_NG.UTF-8', 'en_NZ.UTF-8', 'en_PH.UTF-8', 'en_SC.UTF-8', 'en_SG.UTF-8', 'en_US.UTF-8', 'en_ZA.UTF-8', 'en_ZM.UTF-8', 'en_ZW.UTF-8', 'eo.UTF-8', 'es_AR.UTF-8', 'es_BO.UTF-8', 'es_CL.UTF-8', 'es_CO.UTF-8', 'es_CR.UTF-8', 'es_CU.UTF-8', 'es_DO.UTF-8', 'es_EC.UTF-8', 'es_ES.UTF-8', 'es_GT.UTF-8', 'es_HN.UTF-8', 'es_MX.UTF-8', 'es_NI.UTF-8', 'es_PA.UTF-8', 'es_PE.UTF-8', 'es_PR.UTF-8', 'es_PY.UTF-8', 'es_SV.UTF-8', 'es_US.UTF-8', 'es_UY.UTF-8', 'es_VE.UTF-8', 'et_EE.UTF-8', 'eu_ES.UTF-8', 'fa_IR.UTF-8', 'ff_SN.UTF-8', 'fi_FI.UTF-8', 'fil_PH.UTF-8', 'fo_FO.UTF-8', 'fr_BE.UTF-8', 'fr_CA.UTF-8', 'fr_CH.UTF-8', 'fr_FR.UTF-8', 'fr_HT.UTF-8', 'fr_LU.UTF-8', 'fur_IT.UTF-8', 'fy_DE.UTF-8', 'fy_NL.UTF-8', 'ga_IE.UTF-8', 'gbm_IN.UTF-8', 'gd_GB.UTF-8', 'gez_ER.UTF-8', 'gez_ER.UTF-8@abegede', 'gez_ET.UTF-8', 'gez_ET.UTF-8@abegede', 'gl_ES.UTF-8', 'glk_IR.UTF-8', 'gu_IN.UTF-8', 'gv_GB.UTF-8', 'ha_NG.UTF-8', 'hak_TW.UTF-8', 'he_IL.UTF-8', 'hi_IN.UTF-8', 'hif_FJ.UTF-8', 'hne_IN.UTF-8', 'hr_HR.UTF-8', 'hsb_DE.UTF-8', 'ht_HT.UTF-8', 'hu_HU.UTF-8', 'hy_AM.UTF-8', 'ia_FR.UTF-8', 'id_ID.UTF-8', 'ig_NG.UTF-8', 'ik_CA.UTF-8', 'ilo_PH.UTF-8', 'is_IS.UTF-8', 'it_CH.UTF-8', 'it_IT.UTF-8', 'iu_CA.UTF-8', 'iw_IL.UTF-8', 'ja_JP.UTF-8', 'ka_GE.UTF-8', 'kab_DZ.UTF-8', 'kk_KZ.UTF-8', 'kl_GL.UTF-8', 'km_KH.UTF-8', 'kn_IN.UTF-8', 'ko_KR.UTF-8', 'kok_IN.UTF-8', 'ks_IN.UTF-8', 'ks_IN.UTF-8@devanagari', 'ku_TR.UTF-8', 'kv_RU.UTF-8', 'kw_GB.UTF-8', 'ky_KG.UTF-8', 'lb_LU.UTF-8', 'lg_UG.UTF-8', 'li_BE.UTF-8', 'li_NL.UTF-8', 'lij_IT.UTF-8', 'ln_CD.UTF-8', 'lo_LA.UTF-8', 'lt_LT.UTF-8', 'lv_LV.UTF-8', 'lzh_TW.UTF-8', 'mag_IN.UTF-8', 'mai_IN.UTF-8', 'mai_NP.UTF-8', 'mdf_RU.UTF-8', 'mfe_MU.UTF-8', 'mg_MG.UTF-8', 'mhr_RU.UTF-8', 'mi_NZ.UTF-8', 'miq_NI.UTF-8', 'mjw_IN.UTF-8', 'mk_MK.UTF-8', 'ml_IN.UTF-8', 'mn_MN.UTF-8', 'mni_IN.UTF-8', 'mnw_MM.UTF-8', 'mr_IN.UTF-8', 'ms_MY.UTF-8', 'mt_MT.UTF-8', 'my_MM.UTF-8', 'nan_TW.UTF-8', 'nan_TW.UTF-8@latin', 'nb_NO.UTF-8', 'nds_DE.UTF-8', 'nds_NL.UTF-8', 'ne_NP.UTF-8', 'nhn_MX.UTF-8', 'niu_NU.UTF-8', 'niu_NZ.UTF-8', 'nl_AW.UTF-8', 'nl_BE.UTF-8', 'nl_NL.UTF-8', 'nn_NO.UTF-8', 'no_NO.UTF-8', 'nr_ZA.UTF-8', 'nso_ZA.UTF-8', 'oc_FR.UTF-8', 'om_ET.UTF-8', 'om_KE.UTF-8', 'or_IN.UTF-8', 'os_RU.UTF-8', 'pa_IN.UTF-8', 'pa_PK.UTF-8', 'pap_AN.UTF-8', 'pap_AW.UTF-8', 'pap_CW.UTF-8', 'pl_PL.UTF-8', 'ps_AF.UTF-8', 'pt_BR.UTF-8', 'pt_PT.UTF-8', 'quz_PE.UTF-8', 'raj_IN.UTF-8', 'rif_MA.UTF-8', 'ro_RO.UTF-8', 'ru_RU.UTF-8', 'ru_UA.UTF-8', 'rw_RW.UTF-8', 'sa_IN.UTF-8', 'sah_RU.UTF-8', 'sat_IN.UTF-8', 'sc_IT.UTF-8', 'sd_IN.UTF-8', 'sd_IN.UTF-8@devanagari', 'se_NO.UTF-8', 'sgs_LT.UTF-8', 'shn_MM.UTF-8', 'shs_CA.UTF-8', 'si_LK.UTF-8', 'sid_ET.UTF-8', 'sk_SK.UTF-8', 'sl_SI.UTF-8', 'sm_WS.UTF-8', 'so_DJ.UTF-8', 'so_ET.UTF-8', 'so_KE.UTF-8', 'so_SO.UTF-8', 'sq_AL.UTF-8', 'sq_MK.UTF-8', 'sr_ME.UTF-8', 'sr_ME.UTF-8@latin', 'sr_RS.UTF-8', 'sr_RS.UTF-8@latin', 'ss_ZA.UTF-8', 'ssy_ER.UTF-8', 'st_ZA.UTF-8', 'sv_FI.UTF-8', 'sv_SE.UTF-8', 'sw_KE.UTF-8', 'sw_TZ.UTF-8', 'syr.UTF-8', 'szl_PL.UTF-8', 'ta_IN.UTF-8', 'ta_LK.UTF-8', 'ta_SG.UTF-8', 'tcy_IN.UTF-8', 'te_IN.UTF-8', 'tg_TJ.UTF-8', 'th_TH.UTF-8', 'the_NP.UTF-8', 'ti_ER.UTF-8', 'ti_ET.UTF-8', 'tig_ER.UTF-8', 'tk_TM.UTF-8', 'tl_PH.UTF-8', 'tn_BW.UTF-8', 'tn_ZA.UTF-8', 'to_TO.UTF-8', 'tok.UTF-8', 'tpi_PG.UTF-8', 'tr_CY.UTF-8', 'tr_TR.UTF-8', 'ts_ZA.UTF-8', 'tt_RU.UTF-8', 'tt_RU.UTF-8@iqtelif', 'ug_CN.UTF-8', 'uk_UA.UTF-8', 'unm_US.UTF-8', 'ur_IN.UTF-8', 'ur_PK.UTF-8', 'uz_UZ.UTF-8', 'uz_UZ.UTF-8@cyrillic', 've_ZA.UTF-8', 'vi_VN.UTF-8', 'wa_BE.UTF-8', 'wae_CH.UTF-8', 'wal_ET.UTF-8', 'wo_SN.UTF-8', 'xh_ZA.UTF-8', 'yi_US.UTF-8', 'yo_NG.UTF-8', 'yue_HK.UTF-8', 'yuw_PG.UTF-8', 'zh_CN.UTF-8', 'zh_HK.UTF-8', 'zh_MO.UTF-8', 'zh_SG.UTF-8', 'zh_TW.UTF-8', 'zu_ZA.UTF-8']
|
|
2161
2161
|
>>> print(list_all_keyboards()) # doctest: +NORMALIZE_WHITESPACE
|
|
2162
2162
|
['ad', 'af', 'af(fa-olpc)', 'af(ps)', 'af(ps-olpc)', 'af(uz)', 'af(uz-olpc)', 'al', 'am', 'am(eastern)', 'am(eastern-alt)', 'am(phonetic)', 'am(phonetic-alt)', 'am(western)', 'ara', 'ara(azerty)', 'ara(azerty_digits)', 'ara(buckwalter)', 'ara(digits)', 'ara(qwerty)', 'ara(qwerty_digits)', 'at(nodeadkeys)', 'az', 'az(cyrillic)', 'ba', 'bd', 'bd(probhat)', 'be', 'be(oss)', 'bg', 'bg(bas_phonetic)', 'bg(phonetic)', 'br', 'brai', 'brai(left_hand)', 'brai(right_hand)', 'bt', 'by', 'by(legacy)', 'ca', 'ca(eng)', 'ca(ike)', 'ca(multi)', 'ca(multi-2gr)', 'ca(shs)', 'ch', 'ch(fr)', 'cn', 'cn(tib)', 'cn(tib_asciinum)', 'cn(ug)', 'cz', 'cz(ucw)', 'de', 'de(deadacute)', 'de(nodeadkeys)', 'de(ru)', 'dk', 'ee', 'es', 'es(ast)', 'es(cat)', 'et', 'fi', 'fi(classic)', 'fi(nodeadkeys)', 'fo', 'fr', 'fr(geo)', 'fr(latin9)', 'fr(oss)', 'gb', 'ge', 'ge(os)', 'gr', 'gr(extended)', 'gr(nodeadkeys)', 'gr(polytonic)', 'gr(simple)', 'hr', 'hu', 'ie', 'ie(CloGaelach)', 'ie(ogam)', 'il', 'il(biblical)', 'il(lyx)', 'il(phonetic)', 'in', 'in(ben)', 'in(ben_baishakhi)', 'in(ben_bornona)', 'in(ben_gitanjali)', 'in(ben_inscript)', 'in(ben_probhat)', 'in(bolnagri)', 'in(deva)', 'in(eng)', 'in(guj)', 'in(guru)', 'in(hin-kagapa)', 'in(hin-wx)', 'in(jhelum)', 'in(kan)', 'in(kan-kagapa)', 'in(mal)', 'in(mal_enhanced)', 'in(mal_lalitha)', 'in(mar-kagapa)', 'in(ori)', 'in(san-kagapa)', 'in(tam)', 'in(tam_tamilnet)', 'in(tam_tamilnet_TAB)', 'in(tam_tamilnet_TSCII)', 'in(tam_tamilnet_with_tam_nums)', 'in(tel)', 'in(tel-kagapa)', 'in(urd-phonetic)', 'in(urd-phonetic3)', 'in(urd-winkeys)', 'iq', 'ir', 'ir(pes_keypad)', 'it', 'jp', 'jp(kana)', 'jp(mac)', 'ke', 'kg', 'kg(phonetic)', 'kh', 'kr', 'kz', 'kz(kazrus)', 'kz(ruskaz)', 'la', 'la(stea)', 'latam', 'lk', 'lk(tam_TAB)', 'lk(tam_unicode)', 'lt', 'lv', 'ma', 'ma(french)', 'ma(tifinagh)', 'ma(tifinagh-alt)', 'ma(tifinagh-alt-phonetic)', 'ma(tifinagh-extended)', 'ma(tifinagh-extended-phonetic)', 'ma(tifinagh-phonetic)', 'me', 'me(cyrillic)', 'me(cyrillicalternatequotes)', 'me(cyrillicyz)', 'mk', 'mk(nodeadkeys)', 'mm', 'mn', 'mt', 'mt(us)', 'mv', 'ng', 'ng(hausa)', 'ng(igbo)', 'ng(yoruba)', 'nl', 'no', 'np', 'ph', 'ph(capewell-dvorak-bay)', 'ph(capewell-qwerf2k6-bay)', 'ph(colemak-bay)', 'ph(dvorak-bay)', 'ph(qwerty-bay)', 'pk', 'pk(ara)', 'pk(snd)', 'pk(urd-crulp)', 'pk(urd-nla)', 'pl', 'pl(ru_phonetic_dvorak)', 'pt', 'ro', 'rs', 'rs(alternatequotes)', 'rs(latin)', 'rs(rue)', 'rs(yz)', 'ru', 'ru(bak)', 'ru(chm)', 'ru(cv)', 'ru(dos)', 'ru(kom)', 'ru(legacy)', 'ru(mac)', 'ru(os_legacy)', 'ru(os_winkeys)', 'ru(phonetic)', 'ru(phonetic_winkeys)', 'ru(sah)', 'ru(srp)', 'ru(tt)', 'ru(typewriter)', 'ru(typewriter-legacy)', 'ru(udm)', 'ru(xal)', 'se', 'se(nodeadkeys)', 'se(rus)', 'se(rus_nodeadkeys)', 'se(swl)', 'si', 'sk', 'sn', 'sy', 'sy(syc)', 'sy(syc_phonetic)', 'th', 'th(pat)', 'th(tis)', 'tj', 'tj(legacy)', 'tm', 'tr', 'tr(crh)', 'tr(ku)', 'tz', 'ua', 'ua(homophonic)', 'ua(legacy)', 'ua(phonetic)', 'ua(rstu)', 'ua(rstu_ru)', 'ua(typewriter)', 'ua(winkeys)', 'us', 'us(altgr-intl)', 'us(chr)', 'us(euro)', 'us(intl)', 'us(rus)', 'uz', 'uz(latin)', 'vn', 'za']
|
|
2163
2163
|
>>> print(list_all_territories()) # doctest: +NORMALIZE_WHITESPACE
|
|
2164
|
-
['001', '002', '019', '142', '150', '419', 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AN', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DG', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EA', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GT', 'GU', 'GW', 'GY', 'HK', 'HN', 'HR', 'HT', 'HU', 'IC', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'XK', 'YE', 'YT', 'YU', 'ZA', 'ZM', 'ZW']
|
|
2164
|
+
['001', '002', '019', '142', '150', '419', 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AN', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DG', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EA', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'EU', 'EZ', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GT', 'GU', 'GW', 'GY', 'HK', 'HN', 'HR', 'HT', 'HU', 'IC', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'XK', 'YE', 'YT', 'YU', 'ZA', 'ZM', 'ZW']
|
|
2165
2165
|
>>> print(list_all_timezones()) # doctest: +NORMALIZE_WHITESPACE
|
|
2166
|
-
['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Fortaleza', 'America/Galapagos', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Ashgabat', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Choibalsan', 'Asia/Colombo', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Gaza', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kathmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macau', 'Asia/Magadan', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Ulaanbaatar', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faroe', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/Perth', 'Australia/Sydney', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Athens', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Kiritimati', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Tahiti', 'Pacific/Tongatapu', 'Pacific/Wake', 'Pacific/Wallis', 'US/Pacific']
|
|
2166
|
+
['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Fortaleza', 'America/Galapagos', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Ashgabat', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Choibalsan', 'Asia/Colombo', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kathmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macau', 'Asia/Magadan', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Ulaanbaatar', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faroe', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/Perth', 'Australia/Sydney', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Athens', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Kiritimati', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Tahiti', 'Pacific/Tongatapu', 'Pacific/Wake', 'Pacific/Wallis', 'US/Pacific']
|
|
2167
2167
|
>>> print(list_all_scripts()) # doctest: +NORMALIZE_WHITESPACE
|
|
2168
2168
|
['Adlm', 'Arab', 'Armn', 'Beng', 'Bhks', 'Cakm', 'Cans', 'Cher', 'Copt', 'Cprt', 'Cyrl', 'Cyrs', 'Deva', 'Elba', 'Ethi', 'Geor', 'Glag', 'Gran', 'Grek', 'Gujr', 'Guru', 'Hang', 'Hani', 'Hans', 'Hant', 'Hebr', 'Hira', 'Hung', 'Java', 'Jpan', 'Kana', 'Khmr', 'Knda', 'Kore', 'Lana', 'Laoo', 'Latin', 'Latn', 'Linb', 'Mahj', 'Marc', 'Mlym', 'Modi', 'Mong', 'Mtei', 'Mymr', 'Newa', 'Nkoo', 'Olck', 'Orya', 'Osge', 'Osma', 'Perm', 'Phag', 'Shrd', 'Sidd', 'Sinh', 'Sund', 'Syrc', 'Takr', 'Talu', 'Taml', 'Tang', 'Telu', 'Tfng', 'Tglg', 'Thaa', 'Thai', 'Tibt', 'Tirh', 'Vaii', 'Yiii']
|
|
2169
2169
|
>>> print(list_all_input_methods()) # doctest: +NORMALIZE_WHITESPACE
|
|
@@ -2176,7 +2176,8 @@ def dummy():
|
|
|
2176
2176
|
if __name__ == "__main__":
|
|
2177
2177
|
import doctest
|
|
2178
2178
|
(FAILED, ATTEMPTED) = doctest.testmod()
|
|
2179
|
+
print(f'{ATTEMPTED} tests run. {ATTEMPTED - FAILED} passed and {FAILED} failed.')
|
|
2179
2180
|
if FAILED:
|
|
2180
|
-
# Return number of failed tests:
|
|
2181
2181
|
sys.exit(FAILED)
|
|
2182
|
+
print(f'All tests passed.')
|
|
2182
2183
|
sys.exit(0)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|